在wiki commons中检索图像许可证和作者信息

问题描述 投票:12回答:6

我正在尝试使用wikimedia API for wiki commons:

http://commons.wikimedia.org/w/api.php

看起来公共API是非常不成熟的,他们的document that mentions the possibility检索许可证和作者信息的部分是空的。

无论如何我可以使用API​​检索包含许可信息的段落吗? (例如,标题为“许可”at this page的段落)。当然我可以下载整个页面并尝试解析它,但是什么是API?

wikipedia-api mediawiki-api wikimedia-commons
6个回答
14
投票

迟到的答案,但您可以使用以下查询请求“extmetadata”数据:

http://en.wikipedia.org/w/api.php?action=query&prop=imageinfo&iiprop=extmetadata&titles=File%3aBrad_Pitt_at_Incirlik2.jpg&format=json

查看imageinfo.extmetadata.UsageTerms,Artist,Credit等。


3
投票

你可以尝试在Magnus Manske's Commons API tool上使用Wikimedia Toolserver。它不是官方服务,文档似乎相当稀疏​​(也就是说,几乎不存在),但XML output似乎很明显。

我似乎无法在任何地方找到Magnus脚本的来源,但我认为它从文件所属的categories中提取许可信息。如果你想,你可以自己做:只需获取类别列表,如有必要,沿着类别树走,直到找到你认识的license category。唉,树行走部分需要多个API请求或Commons类别的数据库(在Toolserver上进行实时访问,或从database dumps重建的副本)。

是的,我意识到这个答案似乎并不令人满意。事实上,马格努斯的剧本似乎是目前最接近你想要的东西,甚至它被标记为实验和不完整。基本上,这是一个等待某人实施(更好)解决方案的问题。


1
投票

我用过Magnus' Commons API tool。它不是设计成只是放入一个项目,但如果你复制它调用的wiki页面的源并在本地缓存它,那么将逻辑移动到一个类,你可以使它更容易调用。 Here's the source for Magnus' version。如果你想要我创建的课程让我知道,我会把它挖出来。


1
投票

来自http://www.mediawiki.org/wiki/API_talk:Main_page#Image_license_information有没有办法通过api获得图像的许可?假设网站按许可证分类,按类别划分可能最简单。但是没有用于许可证信息的内置模块。 Splarka 2010年1月22日08:45(UTC)

但是,我发现使用类别不会为许多图像返回任何内容,即使它们已指定许可证。也许最好的方法是解析图像页面的渲染html。


0
投票

看看Mediawiki并试试这个功能:

import json, requests
def extract_image_license(image_name):

    start_of_end_point_str = 'https://commons.wikimedia.org' \
                         '/w/api.php?action=query&titles=File:'
    end_of_end_point_str = '&prop=imageinfo&iiprop=user' \
                       '|userid|canonicaltitle|url|extmetadata&format=json'
    result = requests.get(start_of_end_point_str + image_name+end_of_end_point_str)
    result = result.json()
    page_id = next(iter(result['query']['pages']))
    image_info = result['query']['pages'][page_id]['imageinfo']

    return image_info

然后你调用函数并传入你想要查询的图像名称,例如:

extract_image_license('Albert_Einstein_Head.jpg')

-3
投票

见页面:http://www.mediawiki.org/wiki/API:Meta

您可以使用foreach图像标记'meta = siteinfo'和标记'siprop = rightsinfo'(siprop是siteinfo的prop)然后您将看到图片的rightsinfo。

在你的布拉德皮特的情况下,它会像:

http://en.wikipedia.org/w/api.php?format=jsonfm&action=query&titles=File:Brad_Pitt_at_Incirlik2.jpg&prop=imageinfo&iiprop=url&meta=siteinfo&siprop=rightsinfo

© www.soinside.com 2019 - 2024. All rights reserved.