利用者:Dragoniez/scripts/WatchAll.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/**********************
* WatchAll
* Author: Dragoniez
* Version: 1.1
**********************/
//<nowiki>
$(function(){
const SPN = mw.config.get('wgCanonicalSpecialPageName');
if (SPN === 'Contributions' || SPN === 'Log') {
$(mw.util.addPortletLink('p-cactions', '#', 'ウォッチ', 'ca-wa', '(投稿)記録にあるページを全てウォッチリストに追加', null, '#ca-move'))
.click(function(e){
e.preventDefault();
let $pageLinkSelector;
if (SPN === 'Contributions') {
$pageLinkSelector = $('.mw-contributions-title');
} else if (SPN === 'Log') {
$pageLinkSelector = $('.mw-changeslist-links').nextAll('a');
}
let pages = [];
$pageLinkSelector.each(function(index, obj) {
if ($.inArray($(obj).text(), pages) === -1) {
pages.push($(obj).text().replace(/\({1}(管|ビ|ス|CU|OS|オ|削|巻|イ|フ)\){1}/g, ''));
}
});
let pagesCnt = pages.length;
if (pagesCnt === 0) {
alert('このページにはウォッチリストに登録可能なページへのリンクがありません');
return;
}
console.log(pages);
async function getWatchToken() {
return new Promise(function(resolve, reject) {
new mw.Api().get({
'action': 'query',
'format': 'json',
'meta': 'tokens',
'type': 'watch'
}).then(function(res){
if (res && res.query && res.query.tokens) {
resolve(res.query.tokens.watchtoken);
} else {
resolve(undefined);
}
}).catch(function(){
resolve(undefined);
});
});
}
function addToWatchlist(token) {
$.ajax({
'url': mw.util.wikiScript('api'),
'data': {
'format': 'json',
'action': 'watch',
'titles': pages.slice(0, 50).join('|'),
'token': token
},
'dataType': 'json',
'type': 'POST',
success: function() {
if (pages.length > 50) {
pages.splice(0, 50);
addToWatchlist(token);
} else {
alert(pagesCnt + 'ページをウォッチリストに追加しました');
}
}
});
}
async function execute() {
let token = await getWatchToken();
addToWatchlist(token);
}
execute();
});
}
});
//</nowiki>