我需要檢索某個wiki項目的所有現有語言的列表。例如,所有Wikivoyage或全部Wikipedia語言,就像他們的着陸頁上一樣。以編程方式檢索所有維基百科語言的列表
如果可能,我寧願通過MediaWiki API
來做到這一點。
謝謝你的時間。
我需要檢索某個wiki項目的所有現有語言的列表。例如,所有Wikivoyage或全部Wikipedia語言,就像他們的着陸頁上一樣。以編程方式檢索所有維基百科語言的列表
如果可能,我寧願通過MediaWiki API
來做到這一點。
謝謝你的時間。
方法3:在維基維基農場中使用的API和擴展:Sitematrix
https://commons.wikimedia.org/w/api.php?action=sitematrix&smtype=language
雖然這將返回所有維基矩陣知道,它很容易被code
過濾客戶端[截至目前,之一:wiki
(維基百科),wiktionary
,wikibooks
,wikinews
,wikiquote
,wikisource
,wikiversity
,wikivoyage
]和其closed
狀態。一個只有一些響應體的開銷請求,但由於它很容易被緩存和壓縮,所以不能提供服務。
方法1:在維基維基農場
在使用API來獲取一個維基知道所有 wiki的前綴,使用MediaWiki的API的元模塊,並查詢任何項目siprop=interwikimap
:
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維基,他們將以https
開頭。正如你所想象的,URL中的$1
是標題的佔位符。
爲了只獲取相同wikifarm的維基(如Wikimedia wikis),添加sifilteriw=local
到查詢:
https://sv.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=interwikimap&sifilteriw=local
爲了獲取你所有維基媒體維基名字索緒爾使用siinlanguagecode
,像這樣(,他們的名字瑞典,阿拉伯語維基百科檢索,但可能是維基場中的任何端點):
https://ar.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=interwikimap&sifilteriw=local&siinlanguagecode=sv
從這裏,你將不得不過濾掉如你自己維基百科。
方法二:使用Wikistats在wmflabs
已由型項目的篩選名單可在http://wikistats.wmflabs.org(CSV),在那裏你可以過濾掉維基百科,維基等CSV文件更新每日的基礎上,但該工具是實驗性的,可能永遠不會存在。
無論哪種方法,維基媒體孵化器維基都不會顯示出來。
有沒有辦法返回語言的當前狀態?我得到這個列表https://zh.wiktionary.org/w/api.php?action=query&meta=siteinfo&siprop=interwikimap&sifilteriw=local&format=json&formatversion=2&callback=JSON_CALLBACK但是很多項目已經關閉。 –
你可以檢查每個項目是否關閉,使用meta = siteinfo:https://ang.wikiquote.org/w/api.php?action=query&meta=siteinfo&siprop=general%7Cnamespaces%7Cnamespacealiases%7Cstatistics但我不認爲你可以從頭開始過濾列表(我可能是錯的) – leo
感謝您的回答。我會把這個問題留出來,也許有人會帶來一些解決方案。 –
減去closed.dblist從wikipedia.dblist(other lists),然後從末端去除wiki
並用-
替換_
。
謝謝Tgr,這也是有用的信息。 –
不幸的是,由於https://phabricator.wikimedia.org/T11823(2015年9月) - be_x_oldwiki擁有規範域名be-tarask.wikipedia.org,因此無法在所有情況下正常運行 - 我確實設置了舊的重定向域雖然。我預計未來我們會有更多的這種情況。 – Krenair
這似乎是解決我的問題。我需要一些時間來測試並提供反饋。 –
如果您使用的是鬆散類型的語言,請確保針對未定義或使用'.hasOwnProperty()'測試'closed'屬性,因爲空字符串可能會評估爲false。 –