Проверьте, существует ли уже элемент с определенной меткой и описанием в Wikidata от Pywikibot

Я ищу способ узнать, существует ли элемент с определенной меткой и описанием в Викиданных. Эта задача должна быть выполнена Pywikibot. Я не хочу, чтобы мой бот создал новый предмет, если он уже существует. Пока что мой код выглядит так:

...                
def check_item_existence(self):
    transcript_file = self.transcript_file
    with open(transcript_file) as csvfile:
        transcript_dict = csv.DictReader(csvfile, delimiter="\t")
        for row in transcript_dict:
            site = pywikibot.Site("en", "TillsWiki")
            existing_item = pywikibot.ItemPage(site, row['Name'])
            title = existing_item.title()

1 ответ

Вы можете использовать API-модуль wbsearchentities из Wikibase API. Код для проверки того, существует ли какой-либо элемент с определенной английской меткой в ​​WikiData:

from pywikibot.data import api
...
def wikiitemexists(label):
    params = {'action': 'wbsearchentities', 'format': 'json',
              'language': 'en', 'type': 'item', 'limit':1,
              'search': label}
    request = api.Request(site=acta_site, **params)
    result = request.submit()
    return True if len(result['search'])>0 else False

Обратите внимание, что метки в Wikidata не уникальны и что API также ищет псевдонимы.

Другие вопросы по тегам