User:Midleading/最近编辑页面.js

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera: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(){
	alert("OK");
});