我需要检索某个 wiki 项目的所有现有语言的列表。例如,所有Wikivoyage或所有Wikipedia语言,就像在其登录页面上一样。
MediaWiki API
如果可能的话,我更喜欢通过 来执行此操作。
谢谢你的时间。
我需要检索某个 wiki 项目的所有现有语言的列表。例如,所有Wikivoyage或所有Wikipedia语言,就像在其登录页面上一样。
MediaWiki API
如果可能的话,我更喜欢通过 来执行此操作。
谢谢你的时间。
方法 3:在 Wikimedia wiki 农场和 Extension:Sitematrix 中使用 API
https://commons.wikimedia.org/w/api.php?action=sitematrix&smtype=language
虽然这将返回所有 wiki,但矩阵知道,它很容易通过code
[截至目前,以下之一:wiki
(Wikipedia), wiktionary
, wikibooks
, wikinews
, wikiquote
, wikisource
, wikiversity
, wikivoyage
] 及其closed
状态来过滤客户端。一个请求只有一些响应体开销,但由于它很容易缓存并且压缩得很好,所以不是那个服务。
方法 1:在 Wikimedia wiki 农场中使用 API
要获取wiki 知道的所有siprop=interwikimap
跨维基前缀,请使用 MediaWiki API 的元模块,并在任何项目中查询:
https://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=interwikimap
你会得到一大堆这样的对象:
{
"prefix": "aa",
"local": "",
"language": "Qaf\u00e1r af",
"url": "https://aa.wikipedia.org/wiki/$1",
"protorel": ""
}
protorel
告诉您 url 是否与协议相关(即以 . 开头//
。对于 WikiMedia wiki,它们将以 . 开头https
。$1
正如您所想象的那样,URL 中的 是标题的占位符。
要仅获取同一 wikifarm中的 wiki (例如Wikimedia wikis),请添加sifilteriw=local
到您的查询中:
https://sv.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=interwikimap&sifilteriw=local
要获取您语言中的名称,请使用siinlanguagecode
,如下所示(所有维基媒体 wiki 及其瑞典名称,均从阿拉伯语维基百科检索,但可能是 wiki 农场中的任何端点):
https://ar.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=interwikimap&sifilteriw=local&siinlanguagecode=sv
从这里你必须自己过滤掉例如维基百科。
方法 2:在 wmflabs 使用 Wikistats
已按项目类型过滤的列表可在http://wikistats.wmflabs.org (csv) 获得,您可以在其中过滤掉 Wikipedia、Wikiversity 等。 csv 文件每天更新,但该工具是实验性的,并且可能不会永远存在。
无论哪种方式,维基媒体孵化器维基都不会出现。
从wikipedia.dblist(其他列表)中减去closed.dblist,然后从末尾删除并替换为.wiki
_
-