Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F10814225
create_given_name
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
create_given_name
View Options
#!/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
json
import
os
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
()
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'
}
script_dir
=
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
))
# Gets whitelist latin languages to avoid create the element in other scripts.
latin_languages_file
=
os
.
path
.
join
(
script_dir
,
'l10n/latin-whitelist.json'
)
with
open
(
latin_languages_file
)
as
data_file
:
latin_languages
=
json
.
load
(
data_file
)
# Gets descriptions from l10n file, and fill labels for these languages.
l10n_file
=
os
.
path
.
join
(
script_dir
,
l10n_files
[
genre
])
with
open
(
l10n_file
)
as
data_file
:
descriptions
=
json
.
load
(
data_file
)
labels_languages
=
set
(
descriptions
.
keys
())
.
intersection
(
latin_languages
)
labels
=
{
lang
:
givenname
for
lang
in
labels_languages
}
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
)
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Tue, Jul 29, 14:29 (3 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2853140
Default Alt Text
create_given_name (2 KB)
Attached To
Mode
rDWD Dæghrefn Wikidata access layer
Attached
Detach File
Event Timeline
Log In to Comment