维基媒体API图像搜索与公共领域过滤器

7
我想查询维基媒体API以查找包含关键字的所有图片,并仅筛选出公共领域的图片。因此,没有额外的CC-SA许可证。
目前,我正在使用以下查询提取图像:

http://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=roses&srnamespace=6&srinfo=totalhits%7Csuggestion&srprop=size%7Cwordcount%7Ctimestamp%7Cscore%7Csnippet%7Ctitlesnippet%7Credirecttitle%7Credirectsnippet%7Csectiontitle%7Csectionsnippet%7Chasrelated&srredirects=&srlimit=10&generator=images&titles=Wikipedia%3APublic_domain&gimlimit=10

但是目前返回所有图像,而不考虑它们的许可证。也许我需要修改命名空间,但我不知道该去哪里查找。
谢谢。

如果您发现公共领域的图像有用,请考虑回馈社区,例如通过改进机器可读的元数据,使其对每个人都可用。https://meta.wikimedia.org/wiki/File_metadata_cleanup_drive - Nemo
1个回答

5

嗯,你当前的 API 查询有两个非常不同的功能:

  • 从页面 Wikipedia:Public Domain 获取前 10 张图片 - 这是 pages 结果,您可以指定要获取的其他属性
  • 在命名空间 6 中搜索单词 roses

不幸的是,您无法将搜索模块限制为仅搜索某些类别,您只能将其限制为单个命名空间。因此,您需要获取所有搜索结果的类别,并自行过滤出Category:Public Domain(以及其所有子类别)中的图像。API 查询将如下所示:

api.php?action=query&prop=imageinfo|categories&generator=search&gsrsearch=roses&gsrnamespace=6&format=json

不要忘记继续查询,如果您想要 10 张符合类别标准的图像,可能需要查询(更多)。


我认为在这里添加 clcategories 可能是有意义的,以限制类别仅限于 Category:Public Domain 及其子类别。这样做很可能意味着更少的 query-continue - svick
很遗憾,“clcategories”不起作用,因为它不包括子类别 - 而且你不能把所有1200个子类别都传递进去。 - Bergi
1
很遗憾,您无法将搜索模块限制为仅在某些类别中进行搜索 - 当然可以,只需将 incategory:<category name> 添加到搜索查询中即可。 - Tgr
1
好的,你可以这样做(虽然它不是真正的[URL]参数),但这仍然不包括子类别。你需要做一些像*search_string +* incategory:"Public Domain" OR incategory:CC-zero OR …这样的事情,而且很可能超过搜索字符串长度限制。 - Bergi
如果我在srsearch参数后面添加+incategory:“Public Domain”或其他任何内容,它会返回以下错误: { servedby: "srv292", error: { code: "srsearch-text-disabled", info: "text search is disabled" } } - CiprianIonescu
嗯,worksforme。错误信息很明确,但我不认为维基百科服务器配置有误。 - Bergi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接