🏠 ホーム 🔧 自作ツール 🗃️ アーカイブ 📓 日常のブログ 🍜 飯のブログ 📚 勉強のブログ 🗂️ その他のブログ
👃 LychiBrowser's Code - NoseScape

てんともち / LychiBrowser Public

LychiPageManager.hsp 6,265 Bytes
if URLType=":home"{
	objprm 0,""
	sdim t
	t ="                            .--    │"+AppName+" ver"+AppVer+"\n"
	t+="         =::--+==+=      .*+#*.    │"+str(sysinfo(35)/1024/1024)+"MB 利用可能\n"
	t+="     ::-=--=.+=*++**   ++#%        ├───────────\n"
	t+="   ---------=+=+**= :**. .=-       │<機能>\n"
	t+=" :-==+==++++**#= =*+    -*+++=-    │URLを入れて移動\n"
	t+="-:              =*      **==:-:=.  │文字を入れて検索\n"
	t+="               :+%      -*+=-:-:-. │\n"
	t+="         --++=+*##+      -*+=-:--= │:home  - この画面\n"
	t+="       =::-=:==+++*#*=     *+=--== │:news  - ニュース\n"
	t+="      --:=--:==++*+*##*:     :++=+ │:rss/* - *をRSSで開く\n"
	t+="     +=-=-==-=+=++**##*#        *+ │:raw/* - *の接続情報\n"
	t+="     +==-=-=++=*****###*           │:say   - 音声読上げ\n"
	t+="     ++*++=++*+***#####*           │\n"
	t+="     =*+*=*+*****#####+:           │\n"
	t+="      -*#+#****####*#+.            │\n"
	t+="        +######*#*+*.              │\n"
	t+="           :=##*-:                 │:about - 各種情報\n"
	t+=" ─────────────────┴─┬─────────"
	t+=" https://tentmochi.com/tool/LychiBrowser│(c)2026 てんともち"
}else:if URLType=":say"{
	SetTitle "SAPIをロード中"
	if IsCanUseSAPI{
		word=RenderText
		strrep word,"-",""
		strrep word,"#",""
		strrep word," ",""
		strrep word," ",""
		strrep word,"*",""
		strrep word,"[",""
		strrep word,"]",""
		strrep word,"(",""
		strrep word,")",""
		strrep word,"■",""
		strrep word,"◆",""
		strrep word,"□",""
		strrep word,"◇",""
		strrep word,":",""
		strrep word,";",""
		strrep word,"/",""
		spv->"Speak" word,1
	}else{
		objprm 1,"SAPIを利用できませんでした"
	}
	SetTitle ""
	objprm 0,""
return
}else:if URLType=":about"{
	objprm 0,""
	sdim t
	t =""+AppName+" ver"+AppVer+"\n"
	t+=" ─────────────────────────────"
	t+="\n"
	t+=""+AppName+"は、Webページを文字だけで表示する\n"
	t+="実験的なテキストブラウザです\n"
	t+="\n"
	t+=" ─────────────────────────────"
	t+="■ 特徴\n"
	t+={"- Cookie等の追跡を排除。
- CSSや画像や動画、広告などを読み込まない
- 通信量を節約できます
- RSSリーダに対応\n"}
	t+=" ─────────────────────────────\n"
	t+={"■ 注意
- r.jina.ai に依存しています
- 読み込みに時間がかかります
- 試験中などは、常駐させてはいけません
- 自分のものではないPCで実行するのはよくありません
- たとえこのソフトにバグや欠陥があったとしても、\n 開発元は責任を負いかねます
- Windows Defenderやブラウザにより、\n 「ウイルス」と誤判定されることがあります。\n これは、デジタル署名をしていないためです。

※デジタル署名とは、お金を払うことで、\n 安全だと証明をもらうことです。\n このソフトは個人が趣味で作ったいわゆる「野良ソフト」で\n あるため、デジタル署名をもらっていません。\n"}
	t+=" ─────────────────────────────\n"
	t+="■ ライセンスについて\n"
	t+=" LychiBrowser は、v2.0より独自ライセンスから\n Apache 2.0にライセンスを変更しました。\n"
	t+=" また、依存関係のライセンスがNOTICEファイルにあり、\n これを継承する必要があります。\n"
	t+=" ───────────────────┬─────────\n"
	t+="https://tentmochi.com/tool/LychiBrowser│(c)2026 てんともち"
}else:if 0=instr(URLType,0,":raw/"){
	strrep URLType,":raw/",""
	t="データを取得しています\n"
	SetTitle t
	objprm 1,t
	await 100
	neturl URLType
	netfileinfo t,""
	if stat!=0{
		t+="[失敗] NetFileInfoに失敗しました"
	}
}else:if 0=instr(URLType,0,":news"){
	sdim tmp
	split URLType,"/",tmp
	if length(tmp)=1{
		if length(Total_desc)<2{
			objprm 1,"ニュースを取得中..."
			sdim List
			sdim Total_desc
			sdim Total_Link
			split Var_NewsURL,"@",List
			repeat length(List)
				if Var_NewsURL="" : continue
				sdim desc
				sdim link
				await 100
				rssload desc,link,List(cnt),100
				if stat!=1 and stat!=2 and length(desc)!=0{
					foreach desc
					if desc(cnt)="" or link(cnt)="" {continue}
						Total_desc(length(Total_desc))=desc(cnt)
						Total_link(length(Total_link))=link(cnt)
					loop
				}
			loop
			dim tmp
			repeat length(Total_desc)
				tmp=rnd(length(Total_desc))
				sdim kari_desc
				sdim kari_link
				kari_desc=Total_desc(tmp)       : kari_link=Total_link(tmp)
				Total_desc(tmp)=Total_desc(cnt) : Total_link(tmp)=Total_link(cnt)
				Total_desc(cnt)=kari_desc       : Total_link(cnt)=kari_link
			loop
		}else{
			objprm 1,"キャッシュをロード中..."
			await 100
		}
		sdim t
		t=":news/n とすることで、n番目の記事を閲覧できます\n─────────────────────────────\n"
		repeat length(Total_desc)
			t+=""+str(cnt+1)+": "+Total_desc(cnt)+"\n"
			if Var_isShowURLinList{
				t+=Total_link(cnt)+"\n"}
			t+="─────────────────────────────\n"
			if strlen(t)>40000 {break}
		loop
	}else{
		if length(Total_desc)=1{
			t="ニュースがまだ取得されていません"
		}else{
			if tmp(1)="next" {
				tmp(1)=str(last_rss_num+1)
				if last_rss_num+1>length(Total_desc){tmp(1)="1"}
			}
			if tmp(1)="prev"{
				tmp(1)=str(last_rss_num-1)
				if last_rss_num<2{tmp(1)=str(length(Total_desc))}
			}
			if length(Total_desc)<int(tmp(1)) or int(tmp(1))<1 {
				t="ニュース番号に対応する記事がありません\nニュース番号は1~"+length(Total_desc)+"です。"
			}else{
				last_rss_num=int(tmp(1))
				Navigate(Total_link(int(tmp(1))-1))
				objprm 0,":news/next"
				objprm 1,"記事番号 :"+str(last_rss_num)+"/"+length(Total_desc)+"\n:news/n : n番目に\n:news/next : 次の番号へ\n:news/prev : 前の番号へ\n─────────────────────────────\n"+RenderText
				return
			}
		}
	}
}else:if 0=instr(URLType,0,":rss/"){
	strrep URLType,":rss/",""
	sdim desc
	sdim link
	rssload desc,link,URLType,100
	switch stat
		case 1
			t+"\n[失敗] 取得に失敗しました"
			swbreak
		case 2
			t+="\n[失敗] 指定されたURL「"+Var_NewsURL+"」は無効です"
			swbreak
		default
			sdim t
			foreach desc
				t+=""+desc(cnt)+"\n"+link(cnt)+"\n─────────────────────────────\n"
			loop
			swbreak
	swend
}else{
	t ="そのような内部URLはありません:"+URLType
}
SetTitle ""
objprm 1,t