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

Arcadia SS投稿掲示板のSSをPSPで読む - MasaHeroの日記の続き。
気づいたらArcadia側の仕様が変わっていたのでそれに対応+機能追加。各話毎に別ファイルとして切り分けるようにした。

disabledraw;

#num_ext=strlen(filetype);
#num_name=strlen(basename2);
$bname=directory2+"\\"+leftstr(basename2,#num_name-#num_ext);

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

//記事のカウント
#kijicount=0;
movetolineno 1,1;        //カーソルを最初の文字に移動する
searchdown "name=kiji";
#rslt=result;
while(#rslt){
    #kijicount=#kijicount+1;
    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 "<title>";
right 7;
insert $kiji_name[1];
beginsel;
searchdown "</title>";
endsel;
delete;
searchdown "<body>";
right 6;
insert "\n";
insert "<ol>";
#kijicount_tmp=2;
while(#kijicount_tmp<=#kijicount){
    insert "<li><a href=\"./"+leftstr(basename2,#num_name-#num_ext)+"/"+str(#kijicount_tmp)+".html\">"
        +$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>",regular;

//余分な空白の排除
replaceallfast " +"," ",regular;

//widthの削除
replaceallfast "width=[0-9]+%","",regular;

//最後の広告の排除
gofileend;
searchup "<table";
beginsel;
searchdown "</body>";
endsel;
delete;

//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>","";

//blockquoteの削除
replaceallfast "</*blockquote>","",regular;


//ファイル分割
run "mkdir "+$bname;
gofiletop;
#kijicount_tmp=1;
while(#kijicount_tmp<=#kijicount){
    gofiletop;
    searchdown "<a name=kiji";
    searchdown "<a name=kiji";
    if( !result ) break;
    beginsel;
    gofileend;
    endsel;
    cut;
    insert "</body></html>\n";
    save;
    newfile;
    setencode 6,1;
    #kijicount_tmp=#kijicount_tmp+1;
    insert "<html lang=\"ja\"><head>\n";
    insert "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
    insert "<title>"+$kiji_name[#kijicount_tmp]+"</title>\n</head>\n";
    insert "<body>\n";
    paste;
    saveas $bname+"\\"+str(#kijicount_tmp)+".html";
}



enabledraw;