diff --git a/create_given_name b/create_given_name index b9420dc..b25e14f 100755 --- a/create_given_name +++ b/create_given_name @@ -1,77 +1,82 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- """ This script creates a new givenname on Wikidata based on input. TODO: check no item exists, with P31:202444 """ import argparse -import sys +import json import pywikibot +import sys # Usage: create_givenname.py [-h] givenname parser = argparse.ArgumentParser( description='Creates a given name item on Wikidata.' ) parser.add_argument( 'givenname', metavar='givenname', nargs=1, help='the given name to create' ) parser.add_argument( 'genre', metavar='genre', nargs='?', default='D', help='M for a male, F for a female, U for an unisex given name', choices=['M', 'F', 'U', 'D'] ) args = parser.parse_args() givenname = args.givenname[0] genre = args.genre[0] # Consistency check if givenname[0].islower(): sys.stderr.write( "Can't create a givenname with the first letter in lower case.\n" ) sys.exit(5) # Creates item on Wikidata site = pywikibot.Site("wikidata", "wikidata") repo = site.data_repository() data = {} result = repo.editEntity( {}, {}, summary="Creating empty item for given name " + givenname ) title = result.get('entity').get('id') item = pywikibot.ItemPage(repo, title=title) item.get() -labels = { - 'fr': givenname, - 'en': givenname -} -item.editLabels(labels, summary='Adding given name labels') - -description = { - 'en': 'given name', - 'fr': 'prénom' -} -item.editDescriptions(description, summary='Adding given name descriptions') - genre_items = { 'D': 'Q202444', 'M': 'Q12308941', 'F': 'Q11879590', 'U': 'Q3409032' } +l10n_files = { + 'D': 'l10n/givenname.json', + 'M': 'l10n/givenname-m.json', + 'F': 'l10n/givenname-f.json', + 'U': 'l10n/givenname-u.json' +} + +# Gets descriptions from l10n file, and fill labels for these languages. +l10n_file = l10n_files[genre] +with open(l10n_file) as data_file: + descriptions = json.load(data_file) +labels = {lang:givenname for lang in descriptions.keys()} + +item.editLabels(labels, summary='Adding given name labels') +item.editDescriptions(descriptions, summary='Adding given name descriptions') + claim = pywikibot.Claim(repo, 'P31') target = pywikibot.ItemPage(repo, genre_items[genre]) claim.setTarget(target) item.addClaim(claim) print(title) diff --git a/create_surname b/create_surname index 78d6a22..b7c8dba 100755 --- a/create_surname +++ b/create_surname @@ -1,60 +1,57 @@ #!/usr/bin/env python """ This script creates a new surname on Wikidata based on input. TODO: check no item exists, with P31:Q101352 """ import argparse +import json import pywikibot # usage: create_surname.py [-h] surname parser = argparse.ArgumentParser( description='Creates a surname item on Wikidata.' ) parser.add_argument( 'surname', metavar='surname', nargs=1, help='the surname to create' ) args = parser.parse_args() surname = args.surname[0] # Consistency check # if surname[0].islower(): # sys.stderr.write( # "Can't create a surname with the first letter in lower case.\n" # ) # sys.exit(5); # Creates item on Wikidata site = pywikibot.Site("wikidata", "wikidata") repo = site.data_repository() data = {} result = repo.editEntity( {}, {}, summary="Creating empty item for surname " + surname ) title = result.get('entity').get('id') item = pywikibot.ItemPage(repo, title=title) item.get() -labels = { - 'fr': surname, - 'en': surname -} -item.editLabels(labels, summary='Adding surname labels') +# Gets descriptions from l10n file, and fill labels for these languages. +with open('l10n/surname.json') as data_file: + descriptions = json.load(data_file) +labels = {lang: surname for lang in descriptions.keys()} -description = { - 'en': 'family name', - 'fr': 'nom de famille' -} -item.editDescriptions(description, summary='Adding surname descriptions') +item.editLabels(labels, summary='Adding surname labels') +item.editDescriptions(descriptions, summary='Adding surname descriptions') claim = pywikibot.Claim(repo, 'P31') target = pywikibot.ItemPage(repo, 'Q101352') claim.setTarget(target) item.addClaim(claim) print(title)