2016-04-04 3 views
1

Я ищу способ узнать, существует ли элемент с определенной меткой и описанием уже в Wikidata. Эта задача должна выполняться Pywikibot. Я не хочу, чтобы мой Бот создавал новый элемент, если он уже существует. До сих пор, мой код выглядит следующим образом:Проверьте, есть ли элемент с определенной меткой и описание уже существует в Wikidata от 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() 

ответ

0

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

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 

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