2016-04-04 11 views
1

Belirli bir etiket ve açıklamaya sahip bir öğenin Wikidata'da var olup olmadığını öğrenmek için bir yol arıyorum. Bu görev Pywikibot tarafından yapılmalıdır. Bot'um zaten varsa yeni bir öğe oluşturmasını istemiyorum. Şimdiye kadar, benim kod şöyle görünür:Belirli bir etikete ve açıklamaya sahip bir öğenin önceden Wikidata'da Pywikibot tarafından var olup olmadığını kontrol edin

...     
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() 

cevap

0

Sen Wikibase API gelen wbsearchentity kullanabilirsiniz. Kod özgü İngiliz etikete sahip herhangi bir öğe vikiveri içinde var olup olmadığını kontrol etmektir: vikiveri etiketlerin benzersiz değildir ve takma adları için bu API arama yanı

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 

Bildirim söyledi.

İlgili konular