Manual:Pywikibot/Wikidata
Esta página explica cómo crear bots de python en Wikidata usando la biblioteca básica de pywikibot.
Si sólo desea ejecutar algunos scripts sin escribir una línea de python, vea los scripts de Wikidata incluidos.
Atención: | Los métodos y resultados pueden cambiar en el futuro, a medida que Wikibase evolucione. |
Pywikibot soporta objetos de datos léxicos como Lexemas a partir de la versión 7.2.
Configuración
Para empezar a contribuir/probar usando la cuenta de su bot, debe añadir lo siguiente a su user-config.py :
- Sitio de producción
usernames['wikidata']['wikidata'] = 'YourBot'
- Sitio de pruebas
usernames['wikidata']['test'] = 'YourBot'
Ejemplo
ver Creación de un bot para una documentación ampliada. El núcleo de pywikibot ya soporta la mayoría de las características de Wikibase, por ejemplo, calificadores, fuentes, propiedades con elemento, coordenada, tiempo y tipo de cadena.
import pwb # sólo es necesario si no ha instalado la estructura como paquete lateral
import pywikibot
site = pywikibot.Site('wikipedia:en') # cualquier sitio funcionará, este es sólo un ejemplo
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page) # esto puede ser usado para cualquier objeto de la página
# también puedes definir un elemento como este.
repo = site.data_repository() # este es un objeto DataSite
item = pywikibot.ItemPage(repo, 'Q42') # Funcionalmente será lo mismo que el otro elemento que definimos
item.get() # necesitas llamarlo para acceder a cualquier dato.
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]) # supongamos que tiene fuentes.
# Editar una elemento existente
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')
# También puede hacer todo esto de una sola vez:
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')
Véase también
- Scripts de Wikidata
- Wikidata:Creating a bot
- Wikidata:Pywikibot - Python 3 Tutorial
- Cómo interactuar con Wikidata a través de Pywikibot - un taller de User:Mike Peel
Algunos ejemplos de bots
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.