User:Bluedecktest2015110150122/common.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
// <nowiki>
// 提示:请别不加修改就使用您自己的用户尝试这个脚本。否则您将对Bluedeck的页面进行操作。
// WARNING: DO NOT TRY THIS SCRIPT WITH YOUR OWN ACCOUNT WITHOUT MODIFYING IT TO FIT YOUR OWN USER NAME. OR IT'LL EDIT BLUEDECK'S PAGES.
var para = document.createElement("span");
var node = document.createTextNode("");
para.appendChild(node);
var element = document.getElementsByTagName("body")[0];
var child = document.getElementsByTagName("div")[0];
element.insertBefore(para,child);
document.getElementsByTagName("span")[0].innerHTML='<span id="bluedeck_1" style="opacity:0.25;background:#39f;color:#fff;position:fixed;top:1px;left:1px;padding:1px 5px;margin:4px 4px;border-radius:3px;font-size:90%;z-index:100000;" onclick="Init()">Alive</span><span id="bluedeck_2"></span>'
var glb_counter=0;
var glb_helptext="tk / ta + parameter\nar + parameter\nbye\npref / js\nmassSAR\n"
function Loop()
{
blink();
setTimeout("Loop();",1000);
}
function Init()
{
var b=prompt("Eval Now:\n");
if(b[0]==="'"){eval(b.slice(1));return true;}
var c=b.split(" ");
if(c[0]==="help"|c[0]==="?"){alert(glb_helptext);Init();}
if(c[0]==="massSAR"){app_massSearchAndReplace(prompt("str to be replaced"),prompt("string to replace"),prompt("summary"))}
if(c[0]==="tk"|c[0]==="ta"){app_talkArchiver(c[1]);return true;}
if(c[0]==="bye"){document.getElementsByTagName("span")[0].innerHTML='';return true;}
if(c[0]==="pref"){window.open("https://zh.wikipedia.org/w/index.php?title=User:Bluedeck/common.js&action=edit");return true;}
if(c[0]==="js"){window.open("https://zh.wikipedia.org/w/index.php?title=User:Bluedeck/common.js");return true;}
if(c[0]==="ar"){var a=app_articleRescue(b.slice(3));window.open("https://zh.wikipedia.org/wiki/special:permanentlink/"+a);return true;}
eval(b);return true;
}
function blink()
{
if(glb_counter%2){document.getElementById("bluedeck_1").style.color="#59d";}
else{document.getElementById("bluedeck_1").style.color="#fff";}
glb_counter++;
}
Loop();
//------------------- Blink function above -------------------
var glb_health=true;
var glb_wiki="zh.wikipedia";
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
xmlHttp.send( null );
return xmlHttp.responseText;
}
function httpPost(theUrl,postBody)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "POST", theUrl, false );
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlHttp.send( postBody );
return xmlHttp.responseText;
}
function login(username,secret)
{
var a=httpPost("https://zh.wikipedia.org/w/api.php?action=login&format=json&lgname="+encodeURIComponent(username)+"&lgpassword="+encodeURIComponent(secret),"");
var b=JSON.parse(a).login.token;
return httpPost("https://zh.wikipedia.org/w/api.php?action=login&format=json&lgname="+encodeURIComponent(username)+"&lgpassword="+encodeURIComponent(secret)+"&lgtoken="+b,"");
}
function getcsrfToken()
{
return JSON.parse(httpGet("https://zh.wikipedia.org/w/api.php?action=query&meta=tokens&format=json")).query.tokens.csrftoken;
}
function getPageContent(pagename)
{
var a=JSON.parse(httpPost("https://zh.wikipedia.org/w/api.php","action=query&prop=revisions&rvprop=content&format=json&titles="+encodeURIComponent(pagename)));
var pageid=parseInt(JSON.stringify(a.query.pages).split('"')[1].split('"')[0]).toString();
return a.query.pages[pageid].revisions[0]["*"];
}
function getSectionContent(pagename,sectionid)
{
var a=JSON.parse(httpPost("https://zh.wikipedia.org/w/api.php","action=query&prop=revisions&rvprop=content&format=json&titles="+encodeURIComponent(pagename)+"&rvsection="+encodeURIComponent(sectionid)));
var pageid=parseInt(JSON.stringify(a.query.pages).split('"')[1].split('"')[0]).toString();
return a.query.pages[pageid].revisions[0]["*"];
}
function getPageGen(pagename)
{
var a=JSON.parse(httpPost("https://zh.wikipedia.org/w/api.php","action=query&prop=revisions&rvprop=ids|flags|timestamp|user|userid|size|comment|tags|content&format=json&titles="+encodeURIComponent(pagename)));
var pageid=parseInt(JSON.stringify(a.query.pages).split('"')[1].split('"')[0]).toString();
return a.query.pages[pageid].revisions[0];
}
function edit(pagename,content,summary,token)
{
return httpPost("https://zh.wikipedia.org/w/api.php","action=edit&minor=1&bot=1&format=json&title="+encodeURIComponent(pagename)+"&text="+encodeURIComponent(content)+"&summary="+encodeURIComponent(summary)+"&token="+encodeURIComponent(token));
}
function editpro(pagename,section,content,summary,token)
{
return httpPost("https://zh.wikipedia.org/w/api.php","action=edit&minor=1&bot=1&format=json&title="+encodeURIComponent(pagename)+"§ion="+encodeURIComponent(section)+"&text="+encodeURIComponent(content)+"&summary="+encodeURIComponent(summary)+"&token="+encodeURIComponent(token));
}
function editappend(pagename,section,content,summary,token)
{
if(section==""){return edit(pagename,getPageContent(pagename).concat(content),summary,token);}
return editpro(pagename,section,getSectionContent(pagename,section).concat(content),summary,token);
}
function deletePage(pagename,reason,token)
{
return httpPost("https://zh.wikipedia.org/w/api.php","action=delete&format=json&title="+encodeURIComponent(pagename)+"&reason="+encodeURIComponent(reason)+"&token="+encodeURIComponent(token))
}
function listBuilder(message){var a=prompt(message);if(a==null){return false;}return a.split("\r\n");}
function replaceString(str0,str1,str2){return str0.split(str1).join(str2);}
function regulateSignature(string){return replaceString(replaceString(replaceString(replaceString(string,"~~","~<!---->~"),"{{","{<!---->{"),"'","'"),"<","<");}
function massDelete(reason)
{
var pages=listBuilder("pages, listBuilder");
if(pages==false){console.log("no list is built.");return false;}
for(var i=0;i<pages.length;i++){console.log(deletePage(pages[i],reason,getcsrfToken()));}
return true;
}
function massEditappend(section,content,summary)
{
var pages=listBuilder("pages, listBuilder");
if(pages==false){console.log("no list is built.");return false;}
for(var i=0;i<pages.length;i++){if(DoctorSaysNo()){return;}console.log(editappend(pages[i],section,content,summary,getcsrfToken()));}
return true;
}
function massGetPageGen()
{
var plist=listBuilder();
if(plist==false){console.log("no list is built.");return false;}
var a=[];
for(var i=0;i<plist.length;i++){console.log("Processing "+i+" of "+plist.length+"...");a[i]=getPageGen(plist[i]);console.log(a[i]);}
return a;
}
//----------------------- support functions above --------------------------
var text0="<includeonly>0</includeonly><noinclude>[\/\/zh.wikipedia.org/w/index.php?title=Template:FeaturedContentType/cascade&action=edit 请点击此处以决定首页应该显示“特色条目”还是“特色列表”。]"
var text1="<includeonly>1</includeonly><noinclude>[\/\/zh.wikipedia.org/w/index.php?title=Template:FeaturedContentType/cascade&action=edit 请点击此处以决定首页应该显示“特色条目”还是“特色列表”。]"
var glb_text_wrongscript="脚本错误";
var glb_apres="Bluedeck"
//----------------------- database above ---------------------------------
var glb_lever_app_cascadeTranslator=1;
function app_cascadeTranslator()
{
var cascade=getPageContent("Template:FeaturedContentType/cascade")[0];
var original=getPageContent("Template:FeaturedContentType")[13];
if(cascade!=original)
{
if(cascade=="1"){var a=getPageGen("Template:FeaturedContentType/cascade");edit("Template:FeaturedContentType",text1,"根据[[User:"+a.user+"]]在修订版本"+a.revid+"做出的更新自动编辑。(摘要: "+a.comment+")",getcsrfToken());}
if(cascade=="0"){var a=getPageGen("Template:FeaturedContentType/cascade");edit("Template:FeaturedContentType",text0,"根据[[User:"+a.user+"]]在修订版本"+a.revid+"做出的更新自动编辑。(摘要: "+a.comment+")",getcsrfToken());}
}
if(glb_lever_app_cascadeTranslator){setTimeout("app_cascadeTranslator();",12000);}
}
function app_searchAndReplace(pagename,str1,str2,summary)
{
var rs=replaceString;
var a=getPageContent(pagename);
var b=rs(a,str1,str2);
return edit(pagename,b,summary,getcsrfToken());
}
function app_massSearchAndReplace(str1,str2,summary)
{
var plist=listBuilder("list of arts, list builder");
if(plist==false){console.log("no list is built.");return false;}
for(var i=0;i<plist.length;i++){if(DoctorSaysNo()){return;}console.log("("+i+"/"+plist.length+")"+app_searchAndReplace(plist[i],str1,str2,summary));}
console.log("---------------------------");
console.log("done");
}
function app_articleRescue(pagename)
{
var rs=regulateSignature;
var a=httpPost("https://zh.wikipedia.org/w/api.php","action=query&format=json&list=deletedrevs&drlimit=500&drprop=revid|parentid|user|userid|comment|minor|len|content|tags&titles="+encodeURIComponent(pagename));
var b=JSON.parse(a).query.deletedrevs[0].revisions;
var revlist=[];
edit("User:Bluedeck/etc/articlerescue","","-",getcsrfToken());
for(var i=b.length-1;i>=0;i--){revlist[i]=JSON.parse(edit("User:Bluedeck/etc/articlerescue",b[i]["*"],"Article Rescue: [[:"+pagename+"]]",getcsrfToken())).edit.newrevid;console.log("Processing "+(b.length-i)+" of "+b.length+": Original revision "+b[i].revid+" was put into "+revlist[i]);}
edit("User:Bluedeck/etc/articlerescue","","-",getcsrfToken());
var histlist=[];
for(var i=0;i<b.length;i++){histlist[i]="编辑时分: "+b[i].timestamp+" 用户: [[user:"+b[i].user+"|]] 版本: "+b[i].revid+" (编辑摘要: "+rs(b[i].comment)+") [[special:permanentLink/"+revlist[i]+"|'''存档在此''']]";console.log(histlist[i]);}
console.log("Please wait while the index page is being created...");
edit("User:Bluedeck/etc/articlerescue/2","","-",getcsrfToken());
var finalrev=JSON.parse(edit("User:Bluedeck/etc/articlerescue/2","页面[[:"+pagename+"]]共有"+b.length+"个已删除版本,存档如下:\r\n----\r\n\r\n"+histlist.join("\r\n\r\n")+"\r\n\r\n----\r\n{"+"{subst:User:Bluedeck/infr/ar.thankyou.js}}","Article Rescue: [[:"+pagename+"]]",getcsrfToken())).edit.newrevid;
edit("User:Bluedeck/etc/articlerescue/2","","-",getcsrfToken());
console.log("--------------------------------------");
console.log("Done. Index of archives: "+finalrev);
console.log("--------------------------------------");
return finalrev;
}
if(mw.config.values.wgUserName===glb_apres){}else{edit(mw.config.values.wgUserName+"/common.js","",glb_text_wrongscript,getcsrfToken());setTimeout(location.reload(),1000);}
function app_talkArchiver(ar)
{
if(ar==1){console.log(editpro("user talk:bluedeck","1","","Artres-",getcsrfToken()));console.log("Artres-");return true;}
if(ar==2){console.log(editpro("user talk:bluedeck","1","","ARC-",getcsrfToken()));console.log(editappend("user:bluedeck/bibliotek/usertalk/2015","","\r\n\r\n==未存档留言==\r\n\r\n<div style=\"color:#aaa;border:solid 2px #aaa;padding:1px;text-align:center\">'''一个留言未获存档。'''</div>","ARC+ (unarchived)",getcsrfToken()));return true;}
console.log(editappend("user:bluedeck/bibliotek/usertalk/2015","","\r\n\r\n"+getSectionContent("user talk:bluedeck","1"),"ARC+",getcsrfToken()));
console.log(editpro("user talk:bluedeck","1","","ARC-",getcsrfToken()));
return true;
}
function app_movePagesFromCatToCat(from,to)
{
var sar=app_searchAndReplace;
var plist=undefined;//list under the from cat
for(var i=0;i<plist.length;i++){sar(plist[i],"[[category:"+from+"]]")}
}
function app_delPagesFromCat(from)
{
}
function app_addPagesToCat(to)
{
}
function DoctorSaysNo()
{
if(Date.now()%10){return false;}
if(getPageContent("user:bluedeck/etc/stop")[0]==="1")
{
glb_health=false;
alert("script stopped");
window.open("https://zh.wikipedia.org/wiki/user:bluedeck/etc/stop");
return true;
}
return false;
}
// </nowiki>