Handbuch:Pywikibot/Compat/Wikidata
| Diese Seite ist Dokumentation für Pywikipedia Compat, welches nicht mehr unterstützt wird. Diese Seite wird für historische Interessen behalten. Sie kann Skripte und Funktionen dokumentieren, die veraltet und/oder nicht mehr unterstützt sind. Verlass dich nicht auf die Aktualität der Informationen hier. |
Erstellen eines DataPage-Objekts
Verschiedene Möglichkeiten zum Erstellen eines DataPage- und Page-Objekts für Wikidata: Die erste Möglichkeit besteht darin, zuerst ein data_repo zu erstellen, verwende diese Methode nur, wenn du die ID des Datenobjekts (Q####) hast
import pywikibot
# create a site object, here for en-wiki
site = pywikibot.getSite('en')
# get the data repository site for the given site
repo = site.data_repository()
# OR you may also get the site by language code/family:
# repo = pywikibot.getSite('wikidata', 'wikidata')
# We also can create a DataPage by its ID in two ways
# First by site and title:
data = pywikibot.DataPage(repo, "Q42")
#OR the second way by the ID number:
data = pywikibot.DataPage(42)
Die zweite Möglichkeit ist:
import pywikibot
# create a site object, here for en-wiki
site = pywikibot.getSite('en')
# create a Page object for en-wiki
page = pywikibot.Page(site, "Helium")
# Now we create the corresponding DataPage:
data = pywikibot.DataPage(page)
# Warning: This page does not have a valid title until you get its content
Daten abrufen
Rufe die Daten auf einfache Weise ab
# get an entity of that page
dictionary = data.get()
# get interwiki links as page objects
language_links = data.interwiki()
Bezeichnungen ändern
data.setitem(summary=u"BOT SUMMARY",
items={'type': u'item', 'label': 'fa', 'value': 'هلیم'})
Beschreibungen ändern
page.setitem(summary=u"BOT SUMMARY",
items={'type': u'description', 'language': 'en', 'value': 'noble gas'})
Seitenlinks ändern
data.setitem(summary=u"BOT SUMMARY",
items={'type': u'sitelink', 'site': 'de', 'title': 'OK'})
Aussagen ändern oder erstellen
data.editclaim(property, value ,refs={("ref1","value1"),("ref2","value2")})
- Die Eigenschaft kann eine Zeichenkette wie "capital" oder "p36" oder "P36" oder "36" oder 36 sein.
- Der Wert kann eine Zeichenkette wie "Moscow" oder "Q649" oder "q649" oder "649" oder 649 sein.
- Fundstellen sind optional und wenn du keine Fundstellen hinzufügst, ändert der Bot entweder:
- Die Fundstelle kann eine Zeichenkette wie "imported from" oder "p143" usw. sein.
- Der Wert kann eine Zeichenkette wie "English Wikipedia" oder "q328" usw. sein.
- Andere Fundstellen sind ebenfalls optional.
- Merke
- Wichtig: Die Sprache der Werte muss mit der Sprache der zuerst geladenen Wikipedia-Seite übereinstimmen. Wenn du beispielsweise Russland aus der deutschsprachigen Wikipedia lädst, müssen deine Werte folgende sein:
data.editclaim("Hauptstadt", "Moskau" ,refs={("Datenvorlage","Englischsprachige Wikipedia ")})
Und wenn du deinen Bot mit englischen Werten ausführst, wird der Bot nicht funktionieren.
Falls bereits ein Aussage existiert, ändert der Code die Aussage, andernfalls fügt er die Aussage hinzu.
Alle Entitäten (eines Datenobjekts) abrufen
dictionary = data.get()
Aussagen entfernen
data.removeclaim(property, value)
Du kannst die Eigenschaft wie oben gezeigt hinzufügen, der Wert ist optional und sollte verwendet werden, wenn mehrere Aussagen für eine Eigenschaft vorliegen. Wenn du keinen Wert angibst, werden alle Aussagen, die die Eigenschaft verwenden, entfernt.
Ein Datenobjekt erstellen
data.createitem('summary')
Beispiel
Einfaches Beispiel für die Erstellung neuer Datenobjekte.
# -*- coding: utf-8 -*-
import wikipedia
site = wikipedia.getSite('fa') # add parameter fam='wikipedia' if you haven't declared family = 'wikipedia' in your user-config.py
list_of_articles=[u"دهستان جونقان", u"قنات_بزل_وار", u"قنات_بسک", u"قنات_بشرآباد"]
for name in list_of_articles:
# create a Page object of a site
page = wikipedia.Page(site, name)
# create the corresponding data repository object
data = wikipedia.DataPage(page)
if data.exists():
wikipedia.output(u"%s already exists. Skipping..." % name)
else:
wikipedia.output(u"%s is missing. Creating..." % name)
data.createitem(u"Bot: Importing article from Persian wikipedia")