【问题标题】:Wikimedia API image search with public domain filter带有公共域过滤器的 Wikimedia API 图像搜索
【发布时间】:2012-10-09 15:37:07
【问题描述】:

我想查询 Wikimedia 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

但这目前正在返回所有图像,无论它们的许可如何。也许我需要修改命名空间,但我不知道去哪里找。

谢谢

【问题讨论】:

标签: api mediawiki wikipedia-api wikimedia-commons


【解决方案1】:

嗯,您当前的 api 查询做了两件非常不同的事情:

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

很遗憾,您不能将search module 限制为仅在某些类别中搜索,您只能将其限制为单个命名空间。因此,您需要获取所有搜索结果的类别并自己过滤它们以获取Category:Public Domain(及其所有subcategories)中的图像。 API 查询看起来像

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

别忘了continue the query,如果您想要 10 张符合您的类别标准的图片,您可能需要查询(很多)更多信息。

【讨论】:

  • 我认为在此处添加 clcategories 可能会有意义地将类别限制为 Category:Public Domain 及其子类别。这样做很可能意味着更少query-continue
  • 不,很遗憾,clcategories 不起作用,因为它不包含子类别 - 而且您不能传递所有 1200 个子类别
  • 很遗憾,您不能将搜索模块限制为仅搜索某些类别 - 当然可以,只需在搜索查询中添加 incategory:<category name>
  • 好的,你可以这样做(虽然它不是真正的 [URL] 参数),但这仍然不包括子类别。您必须执行 search_string + incategory:"Public Domain" OR incategory:CC-zero OR … 之类的操作,这可能超出搜索字符串长度限制。
  • 如果我将 +incategory:"Public Domain" 或任何内容附加到 srsearch 参数,它会返回以下错误:{ servedby: "srv292", error: { code: "srsearch-text-disabled", info: "text search is disabled" } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
相关资源
最近更新 更多