Manual:Pywikibot/Wikidata

From mediawiki.org
This page is a translated version of the page Manual:Pywikibot/Wikidata and the translation is 89% complete.
Outdated translations are marked like this.

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! Atención: Los métodos y resultados pueden cambiar en el futuro, a medida que Wikibase evolucione.
pywikibot actualmente no soporta objetos de datos léxicos como Lexemas. Utilice WikibaseIntegrator o LexData para editarlos.

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

Algunos ejemplos de bots


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