3

私はAPIにまったく慣れていないので、質問がばかげている場合は申し訳ありません.

Commons のカテゴリ内のすべての画像を取得したいと思います。たとえば、X としますが、別のカテゴリ (Y) にもある画像を除外します。私は実際にこれを行うことができるかどうかわかりません。

https://commons.wikimedia.org/w/api.php?action=query&list=categorymembers&cmtype=file&cmtitle=Category:X

それらすべてを取得しますが、一部を除外するにはどうすればよいですか?

さらに、ファイルの名前だけでなく、画像の説明を結果に含めたいのですが、それは可能ですか?

4

2 に答える 2

2

MediaWiki には、既定では、カテゴリの構築と交差のクエリに対するサポートが組み込まれていません。このタスクを実行するには、拡張機能、外部ツール、または複数の API クエリと結果処理が必要です。

CirrusSearch API

ウィキメディア コモンズでは、ウィキメディア ウィキ ファーム全体と同様に、CirrusSearchは、カテゴリの交差の検索を含むフィルター検索を強化し、API ( action=query&list=search&srsearch=incategory:A+-incategory:B、これはCategory:Aマイナス) からも利用できますCategory:B

FastCCI

私がお勧めできるツールの 1 つは (専用の高性能ソリューションであり、実際に実行されているため)、Daniel Schwen によって開発された fastcci です。特にウィキメディア コモンズについては、既にデータベースが維持されており、ウェブサービスが実行されていますが、ツール セットに実行するホストがあり、データベースにアクセスできる場合は、任意のウィキに設定することができます。

FastCCI の動作

クエリ

次のクエリ URL を検討してください。

https://fastcci.wmflabs.org/?c1=3302993&c2=15516712&d1=0&d2=0&s=200&a=not&t=js

  • https://fastcci.wmflabs.org/ - ホスト ウィキメディア コモンズ fastcci の実行環境
  • c1 - カテゴリ 1 の ID
  • c2 - カテゴリ 2 の ID
  • d1 - 検索するカテゴリ 1 の深さ (デフォルトで fastcci はサブカテゴリを考慮します)
  • d2 - 検索するカテゴリ 2 の深さ (デフォルトで fastcci はサブカテゴリを考慮します)
  • s - 返される数値または結果
  • o - オフセット
  • a - 接続詞
  • t - 接続タイプ ( t=jsJSONP 応答の場合。それ以外の場合は、websocket として使用されていることを前提としています)

応答

fastcciCallback( [ 'RESULT 27572680,0,0|1675043,0,0|27577015,0,0|27577043,0,0|27577106,0,0|27576896,0,0|27576790,0,0|23481936,0,0|17560964,0,0|11009066,0,0', 'OUTOF 10', 'DBAGE 378310', 'DONE'] );

RESULT|の形式の最大 50 個の整数トリプレットのリストが続きpageId,depth,tagます。各トリプレットは 1 つの画像またはカテゴリを表します

資力

pageID に関する注意

于 2015-02-11T01:48:25.550 に答える
1

私の知る限り、API を使用して直接取得する方法はありません。ただし、両方のカテゴリがかなり小さいと仮定すると、両方からすべての画像を取得して、コードで補数を計算できます。

説明を取得するには、 を使用できますprop=imageinfo&iiprop=extmetadata&iiextmetadatafilter=ImageDescription

サンプル クエリのコンテキストでは、次のようになります。

https://commons.wikimedia.org/w/api.php?action=query&generator=categorymembers&gcmtype=file&gcmtitle=Category:X&prop=imageinfo&iiprop=extmetadata&iiextmetadatafilter=ImageDescription

于 2014-12-12T00:59:19.830 に答える