Arcadia SS投稿掲示板のSSをPSPで読む

ArcadiaにあるSS投稿掲示板には多数の作品がある。これをPSPでネット接続なしで読むためにちょっとがんばってみた。

とりあえず昔使ったオートパイロット系のソフトを試してみる

gethtml(w)を使ってみたが人が読めるファイル名にならなかったので断念。

GETのパラメータがあると元のファイル名にパラーメータ区別用のハッシュを付加した名前になるみたい。
ex.)"denpa.cgi?frame=on&sortmode=new&page=91"が"denpa.cgi.kwwc3q.html"に。
gethtml(w)自体は変換用のテーブルを持ってるので問題ないがPSPでgethtml(w)は動かない。

ブラウザで任意の名前を付けて保存してみる

各話毎に保存するのがベストなんだろうけど面倒なので全件表示にして保存。
一応PSPで読めるが読み込みに時間がかかりすぎるし、各話に飛べないので先頭からなめていく必要あり。さらに広告として外部のファイルを表示させようとするので表示させるたびにネットに接続しようとする。

ブラウザで保存後、整形

ブラウザで保存したhtmlを適当に整形させた。若干のファイルサイズの削減とジャンプ用のインデックスの生成をした。
初めて秀丸マクロを使ってみたが、いまいちだった。Pythonで書いた方が早かったかも。

以下ソース。

disabledraw;

//余分なヘッダの削除
movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "<style";
beginsel;
searchdown "</style>";
right 8;
endsel;
delete;
searchdown "<body";
searchdown ">";
right;
beginsel;
searchdown "a name=kiji";
left;
endsel;
delete;

//<br>の排除
movetolineno 1,1;        //カーソルを最初の文字に移動する
replaceallfast "<br>+","\n",regular;


//記事のカウント&番号付け
#kijicount=0;
movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "name=kiji";
#rslt=result;
while(#rslt){
    #kijicount=#kijicount+1;
    right 9;
    insert str(#kijicount);
    searchdown "<td";
    searchdown ">";
    right;
    replacedown "\[[0-9]+\]","",regular;
    #tmp_x=x;
    #tmp_y=y;
    searchdown "</td>";
    $kiji_name[#kijicount]=gettext(#tmp_x,#tmp_y,x,y);
    searchdown "name=kiji";
    #rslt=result;
}

//記事目次の挿入
movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "<body";
searchdown ">";
right;
insert "\n";
insert "<ol>";
#kijicount_tmp=1;
while(#kijicount_tmp<=#kijicount){
    insert "<li><a href=\"#kiji"+str(#kijicount_tmp)+"\">"
        +$kiji_name[#kijicount_tmp]+"</a></li>\n";
    #kijicount_tmp=#kijicount_tmp+1;
}
insert "</ol>\n";

//物理タグの排除
//font
movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "<font";
while(result){
beginsel;
searchdown ">";
right;
endsel;
delete;
searchdown "<font";
}
replaceallfast "</font>","";


//残っているbrタグの削減
replaceallfast "<br /><br />","<br />";
replaceallfast "<br /><br />+","<br /><br />";

//tableをpで代用
movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "<table[ >]",regular;
while(result){
beginsel;
searchdown ">";
right;
endsel;
delete;
insert "<p>";
searchdown "<table[ >]",regular;
}

movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "<tr[ >]",regular;
while(result){
beginsel;
searchdown ">";
right;
endsel;
delete;
insert "<p>";
searchdown "<tr[ >]",regular;
}

movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "<tt[ >]",regular;
while(result){
beginsel;
searchdown ">";
right;
endsel;
delete;
insert "<p>";
searchdown "<tt[ >]",regular;
}

replaceallfast "(</table>)|(</tr>)|(</tt>)","</p>",regular;

movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "<td[ >]",regular;
while(result){
beginsel;
searchdown ">";
right;
endsel;
delete;
searchdown "<td[ >]",regular;
}
replaceallfast "</td>","";

enabledraw;

スタイル指定を消しているので作者が想定している表示にはならない可能性があるので、使う人は注意。スクリプトのライセンスはプロフィールを参照。