Получить ссылку на атрибуцию пользователя из API Википедии - PullRequest
0 голосов
/ 31 декабря 2018

Я новичок, который работал с API Википедии и понял много вещей, но этот последний сводит меня с ума.

Я смог найти нужные мне вики-страницыи затем, следуя документации здесь , используйте pageids, чтобы получить прямые ссылки на изображения.

page_id = '1649237' 
image_url_base = 'https://ja.wikipedia.org/w/api.php?' 
    image_params = {
            "action": "query",
            "format": "json",
            "prop": "images",
            "pageids": page_id
            }
    image_url = wiki_image_url_base + page_id
    r = requests.get(url = wiki_image_url_base, params = image_params).json()

    image_file_name = str(r['query']['pages'][ja_page_id]['images'][0]['title'])

А затем удалось использовать image_file_name для создания ссылки на основной файл, например так:

https://upload.wikimedia.org/wikipedia/commons/9/9e/Flag_of_Japan.svg

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

Где я застрял, я не могу понять, как заставить работать документацию на этой странице:

https://www.mediawiki.org/wiki/API:Imageinfo

Что я действительно хочу послеявляется как прямой ссылкой URL для изображения, так и ссылкой для атрибуции.Если ссылка на атрибуцию становится слишком сложной, я даже был бы рад получить ссылку на изображения, подобные этой странице:

https://en.wikipedia.org/w/index.php?curid=32376184

Похоже, этот ImageInfo API будет работатьно я не могу заставить его работать ... Я уверен, что это я ...

Спасибо за помощь.

1 Ответ

0 голосов
/ 01 января 2019

Я думаю, что вы прочитали пример Python в https://www.mediawiki.org/wiki/API:Imageinfo. И если вы попытаетесь открыть URL, который дал документ, вы легко поймете, как он работает.Потому что то, что вы получаете после того, как вы открыли URL, это то, что вы можете получить через библиотеку запросов (https://www.mediawiki.org/wiki/Special:MyLanguage/API:Imageinfo работает плохо, но параметры ниже работают хорошо)

import requests
from pprint import pprint
page_id = '1649237' 
image_url_base = 'https://ja.wikipedia.org/w/api.php' 
image_params = {
            "action": "query",
            "format": "json",
            "prop": "images",
            "pageids": page_id
            }

resp = requests.get(image_url_base, params=image_params)
my_data = resp.json()
pprint(my_data)

first_img = my_data["query"]["pages"][page_id]["images"][0]["title"]

for_img_details = "https://www.mediawiki.org/w/api.php?" # https://ja.wikipedia.org/w/api.php
details_params = {
            "action": "query",
            "titles": "File:{}".format(first_img.split(":")[-1]),
            "prop": "imageinfo",
            "format": "json",
            "iiprop":"timestamp|user|url"
}
# action=query&generator=images&titles=Main%20Page&prop=info
resp2 = requests.get(for_img_details, params=details_params)
pprint(resp2.json())
...