特定のWikiプロジェクトの既存のすべての言語のリストを取得する必要があります。たとえば、ランディングページと同じように、すべてWikivoyageまたはすべてWikipediaの言語です。すべてのWikipedia言語のリストをプログラムで取得します
可能であれば、私はこれをMediaWiki API
経由で行うことをお勧めします。
お時間をいただきありがとうございます。
特定のWikiプロジェクトの既存のすべての言語のリストを取得する必要があります。たとえば、ランディングページと同じように、すべてWikivoyageまたはすべてWikipediaの言語です。すべてのWikipedia言語のリストをプログラムで取得します
可能であれば、私はこれをMediaWiki API
経由で行うことをお勧めします。
お時間をいただきありがとうございます。
アプローチ3 Sitematrix
https://commons.wikimedia.org/w/api.php?action=sitematrix&smtype=language
これはすべてのウィキを返しますが、行列は、それが簡単にcode
によってクライアント側を濾過し、知っています【今のような、のいずれかwiki
(ウィキペディア)、wiktionary
、wikibooks
、wikinews
、wikiquote
、wikisource
、wikiversity
、wikivoyage
]そのclosed
状態による。レスポンスボディのオーバヘッドが1つのリクエストですが、簡単にキャッシュされ圧縮されているため、サーブではありません。
アプローチ1:、ウィキはを知っているすべてインターウィキの接頭辞を取得MediaWikiのAPIのメタモジュールを使用し、siprop=interwikimap
のための任意のプロジェクトを照会するにはウィキメディアのwikiファーム
で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ウィキの場合は、https
で始まります。 URLの$1
は、想像していたように、タイトルのプレースホルダーです。
同じwikifarm(例えばWikimedia wikis)で唯一のWikiを取得するには、クエリに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
あなた自身のウィキペディア。
アプローチ2:CSVファイルが上の更新されたウィキペディア、ウィキバーシティ、などを除外できwmflabs
すでにプロジェクトのタイプによってフィルタリングされたリストは、http://wikistats.wmflabs.org(CSV)で入手可能である、でWikistatsを使用してこのツールは実験的なものであり、永遠に存在しないかもしれません。
どちらの方法でも、Wikimedia Incubatorウィキが表示されません。
言語の現在の状態を返す方法はありますか?このリストはhttps://en.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
あなたの答えをありがとう。私はこの質問を開いたままにしておきます。 –
wikipedia.dblist(other lists)から減算closed.dblist、次いで端からwiki
を除去し、-
で_
を置き換えます。ウィキメディアのwikiファームのAPIを使用して拡張:
Tgrありがとう、これも有用な情報です。 –
残念ながら、https://phabricator.wikimedia.org/T11823(2015年9月)以降、be_x_oldwikiにcanonicalドメインbe-tarask.wikipedia.orgがあるので、残念ながらこれはすべてのケースで正しく機能していません。古いものからリダイレクトを設定しましたドメイン。私は将来、これらの症例がさらに増えると期待しています。 – Krenair
これは私の問題の解決策のようです。テストしてフィードバックを与えるのに時間が必要です。 –
loosy-typed言語を使用している場合は、空の文字列がfalseに評価される可能性があるため、 'closed'プロパティが未定義か' .hasOwnProperty() 'を使ってテストしてください。 –