gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:49:09 25 4
gpt4 key购买 nike

我是 API 的新手,如果这个问题很愚蠢,我深表歉意。

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

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

会得到所有的,如何排除一些?

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

最佳答案

MediaWiki 默认情况下没有对类别构建和查询交叉点的内置支持。要完成此任务,extensions或外部工具或多个 API 查询和结果处理是必需的。

Cirrus 搜索 API

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

快速CCI

我可以推荐的工具之一(因为它是专用的高性能解决方案并且实际运行)是由 Daniel Schwen 开发的 fastcci;专门针对维基共享资源,已经维护了一个数据库并运行了一个网络服务,但可以为任何维基设置它,前提是该工具集有一个主机可以运行并且可以访问数据库。

FastCCI in action

Query

考虑以下查询 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=js 用于 JSONP 响应;否则假定用作 websocket)

Response

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。每个三元组代表一个图像或类别

资源

关于 pageIDs 的注释

关于api - 如何使用 Mediawiki API 获取一个类别中不属于另一个类别的所有图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27433744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com