【发布时间】:2015-07-16 08:49:38
【问题描述】:
我需要在我的维基媒体网页中获取我创建的所有页面,例如模板。我必须用 javascript 来做到这一点。
这可能吗?
【问题讨论】:
标签: mediawiki wiki mediawiki-api
我需要在我的维基媒体网页中获取我创建的所有页面,例如模板。我必须用 javascript 来做到这一点。
这可能吗?
【问题讨论】:
标签: mediawiki wiki mediawiki-api
您可以使用UserContribs API query 执行此操作,如下所示:
基本上,你需要的参数是:
format=json 以 JSON 格式获取结果,这可能是您想要的 JavaScript。 (我在上面的示例链接中使用了jsonfm 来获得印刷精美的人类可读输出。)
action=query 表示这确实是query,而不是编辑或登录尝试。
list=usercontribs 表示您想要一个用户贡献的列表(即您在Special:Contributions 页面上看到的内容)。 p>
ucuser=<i>your_username</i> 选择您想查看的用户的贡献。 (上面的示例链接显示了我的。)
ucnamespace=10 仅选择对模板的贡献。 (10 是内置模板命名空间的namespace number)。
ucshow=new 仅选择涉及创建新页面的贡献。 (请注意,这也包括页面移动;我没有看到任何简单的方法来过滤掉它们。)
当然,还有其他 parameters 您可能还想包括在内。
我还包含了一个空的continue= 参数,以表明我想使用new query continuation syntax,并取消有关它的警告。显然,如果您真的想使用查询延续,您需要自己实现客户端部分(或使用为您实现它的 MW API 客户端)。这是一种简单的方法:
function getNewTemplatesForUser( username ) {
var queryURL = 'https://en.wikipedia.org/w/api.php?format=json&action=query&list=usercontribs&ucnamespace=10&ucshow=new';
queryURL += '&ucuser=' + encodeURIComponent( username );
var callback = function( json ) {
// TODO: actually process the results here
if ( json.continue ) {
var continueURL = queryURL;
for ( var attr in json.continue ) {
continueURL += '&' + attr + '=' + encodeURIComponent( json.continue[attr] );
}
doAjaxRequest( continueURL, callback );
}
};
doAjaxRequest( queryURL + '&continue=', callback );
}
【讨论】: