|
|
-
-
- import os
-
- import yaml
- import json
-
-
-
- class WikidataPEP(object):
-
- def __init__(self, configFile):
-
- with open(configFile, "r") as stream:
- try:
- self.config = yaml.safe_load(stream)
- except yaml.YAMLError as exc:
- print(exc)
-
-
- def importMembersOfParliamentDict(self, listOfCountries):
-
- self.fullDictionaryMemberLists = {}
-
- for country in listOfCountries:
-
- print('started to parse data of members of ' + country + ' ..')
-
- f = open('crawlers/output/' + country +'MemberList.txt')
- text = f.read()
-
- self.fullDictionaryMemberLists[country] = eval(text)
-
- #print(self.fullDictionaryMemberLists)
-
-
- def checkForEntityIds(self, listOfCountries):
-
- from wikibaseintegrator import WikibaseIntegrator
- from wikibaseintegrator import wbi_helpers
-
- fullDictionaryMemberLists = self.fullDictionaryMemberLists
-
- for country in listOfCountries:
-
- for memberId in fullDictionaryMemberLists[country].keys():
-
- name = fullDictionaryMemberLists[country][memberId]['name']
-
- results = wbi_helpers.search_entities(search_string=name)
-
-
- for entityId in results:
-
- wbi = WikibaseIntegrator()
- wikidata_item = wbi.item.get(entity_id=entityId)
-
- for claimkey in wikidata_item.get_json()['claims'].keys():
-
- if claimkey == 'P31':
-
- if wikidata_item.get_json()['claims'][claimkey][0]['mainsnak']['datavalue']['value']['id'] == 'Q5':
-
- print(entityId)
- print('---------')
- print(name)
- print('is a human')
-
-
-
-
- def createMemberOnWikidata(self):
-
- from wikibaseintegrator import wbi_login, WikibaseIntegrator
- from wikibaseintegrator.datatypes import ExternalID, Item
- from wikibaseintegrator.wbi_config import config as wbi_config
-
- wbi_config['USER_AGENT'] = 'PEPimport/1.0 (https://www.wikidata.org/wiki/User:)'
-
- # login object
- login_instance = wbi_login.OAuth2(consumer_token='', consumer_secret='')
-
- wbi = WikibaseIntegrator(login=login_instance)
-
- # data type object, e.g. for a NCBI gene entrez ID
- isHuman = Item(value='Q5', prop_nr='P31')
- occupationPolitician = ExternalID(value='Q82955', prop_nr='P106')
- occupationDeputy = ExternalID(value='Q1055894', prop_nr='P106')
- #referenceURL = URL(value='http://legislacion.asamblea.gob.ni/Tablas%20Generales.nsf/InfoDiputado.xsp?documentId=3D4CFDC4B3006D70062587C5007C29E1&action=openDocument&SessionID=1868803A06AB73D50B7F89BD0AB', prop_nr='P106')
-
- # print(isHuman)
- # print(referenceURL)
-
- # data goes into a list, because many data objects can be provided to
- data1 = [isHuman]
- data2 = [occupationDeputy]
- data3 = [occupationPolitician]
-
- # Create a new item
- item = wbi.item.new()
-
- # Set an english label
- item.labels.set(language='en', value='Carlos Humberto Ruíz')
-
- # Carlos Humberto Ruiz has the Qid Q116918332
-
- # Set a French description
- item.descriptions.set(language='en', value='Nicaraguan National Assembly Deputy')
-
- item.claims.add(data1)
- #item.claims.add(data2)
- #item.claims.add(data3)
- print(item.write())
-
-
-
- def editMemberOnWikidata(self, Qid):
-
- from wikibaseintegrator import wbi_login, WikibaseIntegrator
- from wikibaseintegrator.datatypes import ExternalID, Item, Time, String
- from wikibaseintegrator.wbi_config import config as wbi_config
- from wikibaseintegrator.wbi_enums import ActionIfExists
- from wikibaseintegrator.wbi_enums import WikibaseDatePrecision
-
-
- wbi_config['USER_AGENT'] = 'PEPimport/1.0 (https://www.wikidata.org/wiki/User:Alpcentaur)'
-
- # login object
- login_instance = wbi_login.OAuth2(consumer_token='', consumer_secret='')
-
- wbi = WikibaseIntegrator(login=login_instance)
-
- # data type object, e.g. for a NCBI gene entrez ID
- # isHuman = Item(value='Q5', prop_nr='P31')
- # occupationPolitician = Item(value='Q82955', prop_nr='P106')
- # occupationDeputy = Item(value='Q1055894', prop_nr='P106')
- # referenceURL = ExternalID(value='http://legislacion.asamblea.gob.ni/Tablas%20Generales.nsf/InfoDiputado.xsp?documentId=3D4CFDC4B3006D70062587C5007C29E1&action=openDocument&SessionID=1868803A06AB73D50B7F89BD0AB', prop_nr='P854')
-
- # print(isHuman)
- # print(referenceURL)
-
- references = [
- [
- ExternalID(value='http://legislacion.asamblea.gob.ni/Tablas%20Generales.nsf/InfoDiputado.xsp?documentId=3D4CFDC4B3006D70062587C5007C29E1&action=openDocument&SessionID=1868803A06AB73D50B7F89BD0AB', prop_nr='P854'),
- Time(time='+2023-02-27T00:00:00Z', prop_nr='P813', precision=WikibaseDatePrecision.DAY)
- ]
- ]
-
- occupationDeputy = Item(value='Q1055894', prop_nr='P106', references=references)
-
- ## data goes into a list, because many data objects can be provided to
- # data1 = [isHuman]
- data2 = [occupationDeputy]
- # data3 = [occupationPolitician]
- # data4 = [referenceURL]
- ## get item for Qid
- item = wbi.item.get(entity_id=Qid)
-
- # print(item.claims)
-
- # Set an english label
- #item.labels.set(language='en', value='Carlos Humberto Ruíz', action_if_exists=ActionIfExists.KEEP)
-
- # Set a French description
- #item.descriptions.set(language='en', value='Nicaraguan National Assembly Deputy', action_if_exists=ActionIfExists.KEEP)
-
- #item.claims.add(data4)
- item.claims.add(data2)
- #item.claims.add(data3)
- print(item.write())
-
-
-
|