PSPでお手軽オフラインブラウズ 解説!

ちょっと修正しました。
早い話が通勤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(not fs.FolderExists(pathFolder&"\data")) then fs.CreateFolder(pathFolder&"\data")

    'まず、データディレクトリにあって、元ディレクトリにないディレクトリ(削除されたもの)を、
    'データディレクトリから削除する
    Set fs = WScript.CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(pathFolder&"\data")

    '回ってー削除。
    For Each subf In f.SubFolders
      Set objf = fs.GetFolder(subf)
      if(not fs.FolderExists(dataSourceDir&"\"&objf.Name)) then
        fs.DeleteFolder subf,true
      end if
    Next
    
    '更新されたものだけコピー
    Set objShell = CreateObject("Shell.Application")
    'set dest = objShell.NameSpace(pathFolder)
    'set from = fs.GetFolder(dataSourceDir)
    'dest.CopyHere dataSourceDir, &H10
    argument = "xcopy " & chr(34) & dataSourceDir & chr(34) & " " & chr(34) &  pathFolder&"\data" & chr(34) & " /d /e /c /i /h /k /y"
    'msgbox argument
    
    Set WshShell = CreateObject("WScript.Shell")    
    WshShell.run  argument, 1, true
    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を右クリック→保存してどこかにおいておきます。

で、最初に、FireFoxにScrapBookをインストールします。
ScrapBookはこちらから……ScrapBook
ここから

ここをクリックで

インストール。


FireFoxを再起動するように言われるので言われるがままに。
すると、FireFoxのメニューにScrapBookというのが増えるので、そのメニューからサイドバーに表示、をクリックして下さい。最初からサイドバーに出てたらそのままでいいです。

出ることを確認したら、後は好きなページを「ScrapBook」→「ページの取り込み」で取り込んでいきます。
そのページだけじゃなくて、そのページと、そのページからリンクされているページ、みたいなのは「ScrapBook」→「ページの詳細な取り込み」で出来ます。

そんなこんなで、右側にある程度溜まったら、準備完了。
PSPをPCにつなぐか、メモステをカードリーダに差し込んで、さっきのPSPScrap.vbsをダブルクリックしてください。警告は大丈夫です。
保存先を聞かれるのでリムーバブルディスク(メモステ)に適当に打ちやすそうなフォルダを作って、そこを選択。例えば1とか。

PSPはこの状態。

OKを押すと、黒い画面が出ますが、驚かずに待ちましょう。
量が多いとちょっと時間がかかります。


味気ない「完了」が出たら、OKです。PSPのUSBモードを終了するか、メモステを取り出して、次へ。

PSPでブラウザを起動し、「file://ms0:/(さっき指定したフォルダ)/i.html」にアクセスしてみると、


こんな風に出ます。
このページをお気に入りに入れておいてください。
後は好きにオフラインブラウズを楽しめます。

あと、ScrapBookは自動で更新しません。自分で、「右クリック」→「ツール」→「再取り込み」をする必要があります。

再取り込み後、再度PSPScrap.vbsを実行し、同じフォルダを指定すると、差分が転送されます。
お気に入りに入れたPSPSCRAPが更新されてますので、アクセス。

朝ニュースをまとめて再取り込みして、電車の中で読めます。
地下鉄通勤なので便利!

あとついでに。
iPhoneで、GoodReaderとか持ってる人は、適当にローカルに保存して、i.htmlのエンコードUTF-8に変換して転送したら、iPhoneでもオフラインブラウズできます。こっちはオマケなのでいずれ……