维基媒体功能,以获取我的所有模板

时间:2015-07-16 08:49:38

标签: mediawiki wiki mediawiki-api

我需要在维基媒体网页上获取我创建的所有页面,例如模板。我必须用javascript做到这一点。

这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用UserContribs API query执行此操作,如下所示:

基本上,您需要的参数是:

  • format=json以JSON格式获取结果,这可能是您想要的JavaScript。 (我在上面的示例链接中使用jsonfm来获得漂亮的人类可读输出。)

  • action=query表示这确实是query,而不是编辑或登录尝试。

  • list=usercontribs表示您需要列表用户贡献(即您在{{上看到的内容) 3}}页面。

  • ucuser=your_username选择您要查看的用户贡献。 (上面的示例链接显示了我的。)

  • ucnamespace=10仅选择对模板的贡献。 (10是内置模板命名空间的Special:Contributions

  • ucshow=new仅选择涉及创建新网页的内容。 (请注意,这也包括页面移动;我没有看到任何简单的方法来过滤它们。)

当然,您可能还想包含其他namespace number

我还包含一个空的continue=参数,表示我想使用parameters,并禁止对其发出警告。显然,如果您确实想要使用查询延续,那么您需要自己实现客户端部分(或者使用为您实现它的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 );
}
相关问题