Handbuch:Pywikibot/Wikidata

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Pywikibot/Wikidata and the translation is 100% complete.

Diese Seite erklärt, wie man Python-Bots in Wikidata unter Nutzung der grundlegenden Pywikibot-Bibliothek erstellt.

Wenn du nur ein paar Skripte ausführen möchtest, ohne eine Zeile in Python zu schreiben, siehe die eingebundenen Wikidata-Skripte.

Achtung! Achtung: Diese Methoden und Ergebnisse können dich mit der Entwicklung von Wikidata in der Zukunft ändern.
Pywikibot unterstützt derzeit keine lexikalischen Datenobjekte wie Lexeme. Nutze stattdessen WikibaseIntegrator oder LexData, um diese zu bearbeiten.

Konfiguration

Um damit zu beginne, dein Bot-Konto zu nutzen oder zu testen, musst du folgendes zu deiner user-config.py hinzufügen:

Produktionsseite
usernames['wikidata']['wikidata'] = 'YourBot'
Testseite
usernames['wikidata']['test'] = 'YourBot'

Beispiel

siehe Wikidata:Wie man einen Bot erstellt für eine umfangreichere Dokumentation. Der Pywikibot-Kern unterstützt bereits die meisten Wikibase-Funktionen, z.B. Qualifikatoren, Fundstellen, Eigenschaften mit Datenobjekt, Koordinaten, Zeit und Zeichenketten-Typ.

import pwb  # nur nötig, wenn du das Framework nicht als Zusatzpaket installiert hast
import pywikibot
site = pywikibot.Site('en', 'wikipedia')  # jede Seite wird funktionieren, dies ist nur ein Beispiel
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page)  # dies kann für jedes Seiten-Objekt genutzt werden
# du kannst auch so ein Datenobjekt definieren
repo = site.data_repository()  # dies ist ein DataSite-Objekt
item = pywikibot.ItemPage(repo, 'Q42')  # Dies wird funktional das gleiche sein, wie das andere Datenobjekt, das wir definiert haben
item.get()  # Du musst es anrufen, um auf Daten zuzugreifen
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])  # lass uns annehmen, dass es Fundstellen gibt

# Ein existierendes Datenobjekt bearbeiten
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')

# Du kannst all dies auch auf einmal machen:
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')

Siehe auch

Einige Bot-Beispiele


If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.