モバイル機器(PSP)でお手軽オフラインブラウズ
どうも。お久しぶりです。
最近、ひょんな事からいい物を頂いてしまい、活用法を色々と考えておりました。
これでライフハッカーの仲間入りかもしれません。
PSPとやらはどうやら、ローカルに保存したHTMLを読むことが出来るらしいです。
ただ、アクセスが面倒だったり、いちいちMHTに変換したりとか、色々と面倒な感じ。
と、言うことで。
普段僕が使っているScrapBookというFireFoxアドオンと適当にでっち上げたスクリプトで、スクラップしてあるローカルサイトをメモリースティックに転送してインデックスを張るまでのことをしてみようというそんな計画。
ソースはこんなのです。
最近の人はexeはおk、スクリプトは危ないみたいな風潮があるんで、あえて時代に逆らってスクリプトです。
中身が見えるので安心。
もしperl版やらRuby版が要るのでしたらコメントを下さい。
※新しいバージョンがあります!→PSPでお手軽オフラインブラウズ 解説!
'オブジェクトの作成 Set objShell = WScript.CreateObject("WScript.Shell") Set colEnv = objShell.Environment("Process") 'コピー元のディレクトリを選ぶ rootpath = colEnv("HOMEDRIVE")&colEnv("HOMEPATH")&"\Application Data\Mozilla\Firefox\Profiles" 'プロファイルの一番上のディレクトリ使用 '※自分で修正できる方は適当に直して下さい。 dataSourceDir= GetProfilefolder(rootpath) dataSourceDir=dataSourceDir&"\ScrapBook\data" '拾って歩く作業の開始 Set fs = WScript.CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(dataSourceDir) dim out out = "" For Each subf in f.subfolders 'ファイル名を決める。 fn = subf&"\index.dat" id="" title="" icon="" buf="" 'データはUTF-8なのでとりあえずShiftJISに変換。 Set fso = CreateObject("Scripting.FileSystemObject") set str = WScript.CreateObject("adodb.stream") str.type = 2 str.charset = "utf-8" str.open str.loadFromFile(fn) txt = str.readText() str.close str.open str.position = 0 str.charset = "Shift-Jis" str.writeText(txt) str.position = 0 '改行でぶった切って一行ずつ処理。 lines=Split(txt,Chr(10)) for i=0 to ubound(lines)-1 buf=lines(i) if buf<>"" then 'key[tab]valueなので、分割 pos = instrB(buf,chr(9)) key=leftB(buf,pos-1) val=midB(buf,pos+2) if key="title" then title=val if key="id" then id=val if key="icon" then icon=val end if next '出力データを作成。 '※レイアウトとか変えたい人はここで変えてください。 out=out&"<a href='data/"&id&"/index.html'>" out=out&"<img src='data/"&id&"/"&icon&"' border=0>"&title&"</a><br>" next with nothing Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder( _ 0, "保存先フォルダを選択:", 0, "ssfDeskTop") If objFolder Is nothing Then MsgBox("インデックスを保存するフォルダを選択して下さい") Else pathFolder = objFolder.Items().Item().Path if right(pathFolder,1)="\" then pathFolder=Left(pathFolder,len(pathfolder)-1) Set objFolder = nothing End If if pathFolder<>"" then out = "<html><head><title>PSPSCRAPBOOKS</title></head><body>" & out & "</body></html>" set fs = WScript.CreateObject("Scripting.FileSystemObject") set stream = fs.CreateTextFile(pathFolder&"\i.html") stream.Write(out) stream.Close() if( fs.FolderExists(pathFolder&"\data")) then fs.DeleteFolder pathFolder&"\data",true fs.CreateFolder(pathFolder&"\data") Set objShell = CreateObject("Shell.Application") set dest = objShell.NameSpace(pathFolder) set from = fs.GetFolder(dataSourceDir) dest.CopyHere dataSourceDir, &H10 msgbox "完了" end if end with function GetProfilefolder(path) Dim objFS, objFolder Set fs = WScript.CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(path) 'すべてのサブフォルダを回る For Each subf In f.SubFolders if instr(subf,".default")>=1 then GetProfilefolder=subf Next end function
メモ帳で書いたので文字の大文字小文字がバラバラとかそういうのは無しで。
コピペしてPSPScrap.vbsとでも保存してください。
※使い方
1.まずScrapBookで好きなサイトを収集します。
2.先ほどのPSPScrap.vbsを実行します。ダブルクリックで概ねいけます。
3.ほどなく保存先ディレクトリを選ぶ画面が出るので、PSPをつないでPSPのメモステの、ルートに近いところ(例えば、H:\wとか)を選んで保存、とクリックしてください。自動的にPSPに入ります。
※PSPのメモステ、ランダムアクセスおせーよ、っていう人は、好きな場所に書き出してFFCなどでコピーしてください。
4.PSPのブラウザで、「file://ms0:/w/i.html」にアクセスしてください。味気ないトップが見れます。
後はそのページをブックマークしておけば、新しくスクラップを増やしても、転送を行う時に同じ場所に保存するようにしておけば面倒が掛からないような感じで便利に使えると思います。