日記の文字列置換ツール

[diary:176174]
[beforeExec]

ctrStart = function(){
stopFlag = false;
Fid("ctrStartBtn").disabled = true;
Fid("ctrStopBtn").disabled = false;
entryFg ? entry2() : entry();
};
ctrStop = function(){
stopFlag = true;
Fid("ctrStopBtn").disabled = true;
Fid("ctrStartBtn").disabled = false;
};
entry = function(s){
Fx.dec2 = false;
cntMax = [0,0,0];
pageMax = 0;
pageCNT3 = 0;
pageLoad(s);
};
pageLoad = function(s){
Fx.e("/cgi-bin/diary.cgi?oid=yadokari;n=50;c=532" + s, "ep1");
};
Lo.ep1 = function(s){
Fx.dat = s.match(/class="entry C\d+" id="A\d+"/g);
Fx.en = s.match(/(;s=\d+)">\x3cspan title="より古い記事へ/) ? RegExp.$1 : "";
if(pageMax == 0){
pageMax = s.match(/全カテゴリ \((\d+) 件\)/) ? Number(RegExp.$1) : 0;
echo("maxNoDisp", pageMax);
}
entryFg = true;
entry2();
};
entry2 = function(){
if(stopFlag) return;
if(Fx.dat.length){
var a = Fx.dat.shift();
a = a.replace(/class="entry C\d+" id="A(\d+)"/, "$1");
Fx.actNum = a;
echo("totalNo", pageCNT3++);
Fx.e("/cgi-bin/diary_form.cgi?oid=yadokari;mode=edit;article_id=" + a, "ep2");
} else {
pageLoad(Fx.en);
}
};
Lo.ep2 = function(s){
var mg,s2,ty,cnt,i,msgTitle;
msgTitle = s.replace(/^.+?<input type="text" name="article_title" value="([^"]+).+$/, "$1");
var cateNum = 1, cateName = "日記";
var openFg = s.match(/name="article_notify" value="1" checked="checked" type="checkbox"/) ? true : false;
if(s.match(/.\x3coption value="(\d+)" selected="selected"\x3e([^\x3c]+)\x3c\/option\x3e/)){
cateNum = RegExp.$1 ; cateName = RegExp.$2;
}
msg = s.replace(/.+\x3ctextarea[^\x3e]+\x3e(.+?)\x3c\/textarea\x3e.+/gm, "$1");
msg = msg.replace(/\x26amp;/g, "\x26");
s2 = msg;
cnt = [0,0,0];
msg = msg.replace(/www\.geocities\.jp\/musicgarden_jp\/(.*?)([^\/]+\.)([0-9a-zA-Z\-_]+)/gi,
function(e0,e1,e2,e3){
ty = e3.match(/(gif|jpg|png|bmp)/) ? 0 : e3.match(/(mp3|mid|3gp|mg2|m4a|flv|wmv|swf)/) ? 1 : 2;
cnt[ty]++;
return "www.nancyan.net/" + (ty == 0 ? "image/futari/" +
(e2.charAt(0).match(/[0-9\-_]/) ? "1" : e2.charAt(0).toLowerCase()) + "/" :
ty == 1 ? "music/" : e1) + e2 + e3;
});
for(i = 0; i < 3; i++){
cntMax[i] += cnt[i];
echo("cnt_r" + i, cntMax[i]);
}
echo("listDisp", "\x3cdiv class='msgTitle'\x3e" + msgTitle + "\x3c/div\x3e" +
"\x3cdiv class='msgInfo'>\x3cspan id='actNo'>" + Fx.actNum + "\x3c/span> : " + cateName + "(" + cateNum + ") " + (openFg ? "公開" : " 非公開") + "\x3c/div\x3e" +
"\x3cdiv class='msgBody'\x3e" + (msg == s2 ? "置換はありません" : "画像等の置換がありました") + "\x3c/div\x3e"
);
if(msg == s2) setTimeout("entry2()", 1500);
else Fx.e("diary_form", diaryForm(Fx.actNum, msgTitle, Fx.dec(msg).replace(/\t/g, "\n"), openFg, cateNum), "uE2");

};
Lo.uE2 = function(){
entry2();
};

[/beforeExec]
[cssText]
#headerDisp {
width:30%; min-height:30em;float:left; font-size:90%; color:#808080; }
#listDisp {
width:70%; float:right; min-height:30em; }
.msgTitle {
margin:1em; font-size:120%; text-align:center; color:steelblue;
}
.msgInfo { color:brown; margin-bottom:1em; }
.msgBody { line-height:1.4em; font-size:90%; }
[/cssText]
[body]
<$$div id="headerDisp">
<$$a href="main.html?diary=176174">日記の文字列置換ツール<$$/a><$$br />
<$$img src="http://www.nancyan.net/image/futari/n/nancyan_hazuki_poem_moku.jpg" alt="ふたり" />
<$$form id="ctrBtn" class="ct0">
<$$input type="button" id="ctrStartBtn" value="実行" onclick="ctrStart()" />
<$$input type="button" id="ctrStopBtn" value="一時停止" onclick="ctrStop()" disabled="disabled" />

<$$/form>
<$$ul>
<$$li>画像の置換 : <$$span id="cnt_r0"><$$/span><$$/li>
<$$li>音楽の置換 : <$$span id="cnt_r1"><$$/span><$$/li>
<$$li>上記の以外 : <$$span id="cnt_r2"><$$/span><$$/li>
<$$/ul>

<$$span id="totalNo"><$$/span>/<$$span id="maxNoDisp"><$$/span><$$br />
<$$/div>
<$$div id="listDisp"><$$/div>
<$$br clear="all" />


[/body]
[exec]
document.title = "日記の文字列置換ツール";
entryFg = false;
Fx.dec2 = false;
[/exec]

[/diary:176174]

■仕様書 Wrote 2011 05/04 16:09