-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathbabel.py
122 lines (112 loc) · 4.16 KB
/
babel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2022 emijrp <[email protected]>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import random
import re
import sys
import time
import urllib.parse
import pwb
import pywikibot
from wikidatafun import *
def main():
site = pywikibot.Site('wikidata', 'wikidata')
repo = site.data_repository()
pasleim = pywikibot.Page(site, "User:Mr. Ibrahem/Language statistics for items")
pasleimtext = pasleim.text
langs = re.findall(r"(?im){{#language:([a-z\-]+)\|en}}", pasleimtext)
print(langs, len(langs))
qlabels = {
"Q33836537": "😂",
}
qaliases = {
#"Q2": ["🗺", "♁", "🜨", "🌍", "🌏", "🌎"],
"Q2": ["🗺", "♁", "🜨", "🌍", "🌏", "🌎"],
}
for q, label in qlabels.items():
nomorelangs = False
for i in range(100):
if nomorelangs:
break
item = pywikibot.ItemPage(repo, q)
try: #to detect Redirect because .isRedirectPage fails
item.get()
except:
print('Error while .get()')
continue
addedlangs = []
itemlabels = item.labels
for lang in langs:
if not lang in itemlabels:
itemlabels[lang] = label
if not lang in addedlangs:
addedlangs.append(lang)
if len(addedlangs) >= 25:
break
if len(addedlangs) == 0:
nomorelangs = True
else:
addedlangs.sort()
data = { 'labels': itemlabels }
summary = 'BOT - Adding labels (%d languages): %s' % (len(addedlangs), ', '.join(addedlangs))
print(q, summary)
try:
item.editEntity(data, summary=summary)
#break
except:
print('Error while saving')
continue
for q, aliases in qaliases.items():
nomorelangs = False
for i in range(100):
if nomorelangs:
break
item = pywikibot.ItemPage(repo, q)
try: #to detect Redirect because .isRedirectPage fails
item.get()
except:
print('Error while .get()')
continue
addedlangs = []
itemaliases = item.aliases
for lang in langs:
if not lang in itemaliases:
itemaliases[lang] = aliases
if not lang in addedlangs:
addedlangs.append(lang)
else:
for alias in aliases:
if not alias in itemaliases[lang]:
itemaliases[lang].append(alias)
if not lang in addedlangs:
addedlangs.append(lang)
if len(addedlangs) >= 25:
break
if len(addedlangs) == 0:
nomorelangs = True
else:
addedlangs.sort()
data = { 'aliases': itemaliases }
summary = 'BOT - Adding aliases (%d languages): %s' % (len(addedlangs), ', '.join(addedlangs))
print(q, summary)
try:
item.editEntity(data, summary=summary)
#break
except:
print('Error while saving')
continue
if __name__ == "__main__":
main()