MediaWiki API를 쿼리 한 다음 작동하는 첫 번째 쿼리의 결과 각각에 대해 다시 쿼리하여 콘솔에서 "두 번째 수준"쿼리의 결과를 인쇄하는 작은 (작동하는) Wikipedia 사용자 스크립트가 있습니다 (Firefox 52.0/리눅스) :여러 MediaWiki API 요청의 결과를 결합하는 방법은 무엇입니까?
mw.loader.using([ 'mediawiki.api', 'mediawiki.ForeignApi' ]).done(function() {
var api = new mw.Api();
api.get({
action: 'query',
meta: 'globaluserinfo',
guiprop: 'merged'
}).done(function (data) {
data.query.globaluserinfo.merged.forEach(function(element, index, array) {
let url = element.url;
var remoteapi = new mw.ForeignApi(url + '/w/api.php');
[mw.config.get('wgNamespaceIds').user, mw.config.get('wgNamespaceIds').user_talk].forEach(function(element, index, array) {
remoteapi.get({
action: 'query',
list: 'allpages',
apprefix: data.query.globaluserinfo.name,
apnamespace: element
}).done(function (data2) {
for(var j = 0; j < data2.query.allpages.length; j++)
console.log(url + '/wiki/' + data2.query.allpages[j].title);
});
});
});
});
});
지금 한 결합 대화 상자 개별 콘솔 출력을 대체 할 (일품 mw.loader.using('oojs-ui-windows').done(function() { OO.ui.alert('All results: ' + results); });
).
즉, 모든 API 쿼리가 완료되면 하나의 콜백을 실행하여 모든 결과를 액세스/집계/결합합니다. 어떻게 할 수 있습니까?
apprefix에'/'를 추가하고 싶을 것입니다. – Tgr
"main"사용자 페이지/사용자 대화 페이지, 예를 들어 지. https://en.wikipedia.org/wiki/User_talk:Tim.landscheidt. (이 스크립트의 목적은 "내"사용자 공간에있는 모든 페이지를 나열하는 것이지만 범용 솔루션의 경우 동일한 "접두사"를 가진 다른 사용자를 제외해야하지만 "Tim.landscheidt"의 경우 오 탐지는 많지 않습니다. -).) –