User:Midleading/最近编辑页面.js
外观
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
var mwapi=new mw.Api();
// 获取2000次最近编辑
mwapi.get({
"action": "query",
"format": "json",
"list": "recentchanges",
"formatversion": "2",
"rcnamespace": "0|1",
"rctype": "edit|new",
"rcshow": "!bot",
"rclimit": "2000"
}).then(function(response){
if(response.batchcomplete){
var list={};
// 统计最近编辑的页面及编辑次数
for(var i in response.query.recentchanges){
var title=mw.Title.newFromText(response.query.recentchanges[i].title, response.query.recentchanges[i].ns);
title=title.getSubjectPage();
var baseTitle=title.getMainText();
if(baseTitle.match(/第\d{1,2}\/.+號(法律|法令|行政法規|行政命令)|联合国大会第\w+-\d+\/.+号(决议|决议草案)/)===null)
baseTitle=baseTitle.split("/",1)[0];
if(list[baseTitle] === undefined)
list[baseTitle] = 1;
else
list[baseTitle] += 1;
}
// 降序排列所有页面
list = Object.entries(list);
list.sort(function(a,b){return b[1]-a[1];});
// 保留最近编辑次数最多的页面
if(list.length > 20)
list.length = 20;
// 更新最近编辑页面
return mwapi.postWithEditToken({
"action": "edit",
"format": "json",
"assert": "user",
"nocreate": "1",
"pageid": "1141139",
"summary": "更新最近编辑页面",
"text": list.map(function(x){return "* [["+x[0]+"]]"}).join("\n")
});
}
}).then(function(){
OO.ui.alert( 'OK', { size: 'large' } );
});