【问题标题】:Wikimedia function to get all my Templates获取我所有模板的维基媒体功能
【发布时间】:2015-07-16 08:49:38
【问题描述】:

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

这可能吗?

【问题讨论】:

    标签: mediawiki wiki mediawiki-api


    【解决方案1】:

    您可以使用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 );
    }
    

    【讨论】:

    • 我不知道我可以用这种方式使用API​​,非常感谢,非常有帮助的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多