Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Mediawiki API获取一个类别中不在另一个类别中的所有图像?_Api_Mediawiki_Wikimedia Commons - Fatal编程技术网

如何使用Mediawiki API获取一个类别中不在另一个类别中的所有图像?

如何使用Mediawiki API获取一个类别中不在另一个类别中的所有图像?,api,mediawiki,wikimedia-commons,Api,Mediawiki,Wikimedia Commons,我对API完全陌生,如果这个问题很愚蠢,我很抱歉 我想在Commons中获得一个类别中的所有图像,比如说X,但排除另一个类别(Y)中的图像。我不明白我是否真的能做到这一点 将得到所有这些,如何排除一些 此外,我希望在结果中有图像的描述,而不仅仅是文件名,这可能吗?AFAIK,没有办法直接使用API获得它。但是,假设这两个类别都相当小,您可以从这两个类别中获取所有图像,然后在代码中计算补码 要检索描述,可以使用 在示例查询的上下文中,它将如下所示: 默认情况下,MediaWiki不支持类别生成和

我对API完全陌生,如果这个问题很愚蠢,我很抱歉

我想在Commons中获得一个类别中的所有图像,比如说X,但排除另一个类别(Y)中的图像。我不明白我是否真的能做到这一点

将得到所有这些,如何排除一些


此外,我希望在结果中有图像的描述,而不仅仅是文件名,这可能吗?

AFAIK,没有办法直接使用API获得它。但是,假设这两个类别都相当小,您可以从这两个类别中获取所有图像,然后在代码中计算补码

要检索描述,可以使用

在示例查询的上下文中,它将如下所示:


默认情况下,MediaWiki不支持类别生成和查询交叉点。要完成此任务,需要外部工具或多个API查询和结果处理

Cirrusearch API 在Wikimedia Commons上,就像在整个Wikimedia Wiki农场上一样,支持过滤搜索,包括搜索类别交叉点,也是(
action=query&list=search&srsearch=incategory:A+-incategory:B
,这是
category:A
减去
category:B

法思奇 我可以推荐的工具之一(因为它是一个专用的高性能解决方案,并且实际运行)是由Daniel Schwen开发的fastcci;特别是对于Wikimedia Commons,已经维护了一个数据库并运行了一个Web服务,但是可以为任何wiki设置它,只要该工具集有一个主机可以运行并具有数据库访问权限

考虑以下查询URL:

  • -主机Wikimedia Commons fastcci在上运行
  • c1-类别1的识别号
  • c2-类别2的ID
  • d1-要搜索的类别1的深度(默认情况下,fastcci考虑子类别)
  • d2-要搜索的类别2的深度(默认情况下,fastcci考虑子类别)
  • s-要返回的编号或结果
  • o形偏移
  • 连词
  • t-连接类型(
    t=js
    表示JSONP响应;否则假定用作websocket)
RESULT
后接一个
|
分隔列表,最多50个整数三元组,格式为
pageId、depth、tag
。每个三元组代表一个图像或类别

资源
  • -要查看它的实际效果,只需访问任何类别,然后单击
    好图片
    按钮。
    • 例如
      FilesOf('Category:Saaleck')
      -
      FilesOf('Category:Saxony-Anhalt的油菜田')
关于pageid的注记
  • 页面ID→ 页面标题:
    GET
  • 页面标题→ 页面ID:
    GET
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'] );