Получение лицензии на изображение и информацию об авторе в вики - PullRequest
12 голосов
/ 17 сентября 2011

Я пытаюсь использовать API Викимедиа для общих вики по адресу:

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

Похоже, что API общего пользования очень незрелый, и часть в их документе , в которой упоминается возможность для получения лицензии и информации об авторе, пуста.

Можно ли в любом случае получить абзац, содержащий информацию о лицензировании, с помощью API? (Например, абзац под заголовком «Лицензирование» на этой странице ). Конечно, я могу скачать всю страницу и попытаться разобрать ее, но для чего нужны API?

Ответы [ 6 ]

14 голосов
/ 09 февраля 2015

Поздний ответ, но вы можете запросить данные «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 голосов
/ 08 февраля 2012

Вы можете попробовать использовать API-интерфейс Commons Magnus Manske на Wikimedia Toolserver .Это не официальный сервис, и документация кажется довольно скудной (то есть почти отсутствует), но вывод XML кажется довольно очевидным.

Я не могупохоже, что источник скрипта Магнуса находится где угодно, но я предполагаю, что он извлекает информацию о лицензировании из категорий , к которым принадлежит файл.Если вы хотите, вы можете сделать это самостоятельно: просто получите список категорий и, если необходимо, пройдитесь по дереву категорий, пока не найдете категорию лицензии , которую вы узнаете.Увы, для обхода дерева требуется несколько запросов API или база данных категорий Commons (либо прямой доступ к серверу инструментов, либо восстановленная копия из дампов базы данных ).

Да,Я понимаю, что этот ответ может показаться неудовлетворительным.Дело в том, что сценарий Магнуса кажется наиболее близким к тому, что вы хотите, и даже помечен как экспериментальный и неполный.По сути, это проблема, которая ждет, когда кто-то найдет (лучшее) решение.

1 голос
/ 25 января 2014

От http://www.mediawiki.org/wiki/API_talk:Main_page#Image_license_information Есть ли способ получить лицензию на изображение через API?По категориям, вероятно, проще всего, если сайт классифицируется по лицензии.Там нет встроенного модуля, хотя для информации о лицензии.Splarka 08:45, 22 января 2010 (UTC)

Однако я считаю, что использование категорий ничего не возвращает для многих изображений, даже если для них указана лицензия.Возможно, лучший способ - это проанализировать визуализированный html страницы изображения.

1 голос
/ 11 июля 2012

Я использовал Инструмент API Magnus Commons .Он не предназначен для простого добавления в проект, но если вы скопируете исходный код вики-страницы, которую он вызывает, и кешируете его локально, то переместите логику в класс, чтобы сделать его более легко вызываемым. Вот источник версии Магнуса .Если вы хотите, чтобы класс, который я создал, дал мне знать, и я откопаю его.

0 голосов
/ 26 февраля 2019

взгляните на 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')
0 голосов
/ 27 августа 2013

см. Страницу: http://www.mediawiki.org/wiki/API:Meta

Вы можете использовать foreach image тег 'meta = siteinfo' и тег 'siprop = rightsinfo' (siprop - это опора для siteinfo) После этого вы увидите информацию о правах на изображение.

В вашем случае с Брэдом Питтом это будет выглядеть так:

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

...