Podręcznik:Pywikibot/Wikidane
Ta strona wyjaśnia, jak tworzyć boty w Python na Wikidanych, używając biblioteki pywikibot.
Jeśli chcesz uruchomić parę skryptów bez pisania w Python, zobacz dołączone skrypty dla Wikidanych
Uwaga: | Metody i wyniki mogą się zmieniać w przyszłości w miarę, jak Wikibase jest rozwijane. |
Pywikibot wspiera obiekty obsługujące dane leksykograficzne, takie jak leksemy, od wydania 7.2.
Konfiguracja
Aby zacząć edytować/testować, używając konta bota, musisz dodać do swoich user-config.py :
- witryna produkcji
usernames['wikidata']['wikidata'] = 'YourBot'
- witryna do testów
usernames['wikidata']['test'] = 'YourBot'
Przykład
zobacz w Wikidane:Tworzenie bota pełniejszą dokumentację. pywikibot core wspiera już większość funkcjonalności Wikibase, np. kwalifikatory, źródła, właściwości przyjmujące element, współrzędne, czas i łańcuchy tekstowe.
import pwb # potrzebne tylko, jeśli nie zainstalowano frameworku jako 'side-package'
import pywikibot
site = pywikibot.Site('wikipedia:en') # zadziała jakakolwiek witryna, to tylko przykład
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page) # tego można użyć do jakiegokolwiek obiektu strony
# można też zdefiniować taki element
repo = site.data_repository() # to jest obiekt DataSite
item = pywikibot.ItemPage(repo, 'Q42') # to będzie funkcjonalnie takie samo, jak poprzedni element
item.get() # musisz wywołać tę metodę, żeby uzyskać dostęp do danych
sitelinks = item.sitelinks
aliases = item.aliases
if 'en' in item.labels:
print('The label in English is: ' + item.labels['en'])
if item.claims:
if 'P31' in item.claims: # instance of
print(item.claims['P31'][0].getTarget())
print(item.claims['P31'][0].sources[0]) # załóżmy, że ma źródła
# edytuj istniejący element
item.editLabels(labels={'en': 'Douglas Adams'}, summary='Edit label')
item.editDescriptions(descriptions={'en': 'English writer'}, summary='Edit description')
item.editAliases(aliases={'en': ['Douglas Noel Adams', 'another alias']})
item.setSitelink(sitelink={'site': 'enwiki', 'title': 'Douglas Adams'}, summary='Set sitelink')
item.removeSitelink(site='enwiki', summary='Remove sitelink')
# możesz też zrobić to wszystko naraz:
data = {'labels': {'en': 'Douglas Adams'},
'descriptions': {'en': 'English writer'},
'aliases': {'en': ['Douglas Noel Adams', 'another alias'], 'de': ['Douglas Noel Adams']},
'sitelinks': [{'site': 'enwiki', 'title': 'Douglas Adams'}]}
item.editEntity(data, summary='Edit item')
Zobacz też
- Skrypty Wikidanych
- Wikidata:Creating a bot
- Wikidata:Pywikibot - Python 3 Tutorial
- How to interact with Wikidata via Pywikibot - a workshop by User:Mike Peel
Kilka przykładów botów
- Przykładowy kod pywikibot autorstwa User:Mike Peel
- Zbiór botów Wikidanych autorstwa User:Multichill
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.