Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Paste
P20226
unlink-wikis.py
Active
Public
Actions
Authored by
LucasWerkmeister
on Feb 7 2022, 9:19 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
Wikidata
Referenced Files
F34944795: unlink-wikis.py
Feb 7 2022, 9:19 PM
2022-02-07 21:19:30 (UTC+0)
Subscribers
None
#!/usr/bin/env python3
import
json
import
mwapi
import
random
bot_username
=
'Lucas Werkmeister@unlink-incubatorwiki_(T284211)'
bot_password
=
'redacted'
edit_group_hash
=
'372610210a06'
edit_group
=
f
'[[:toolforge:editgroups/b/CB/{edit_group_hash}|details]]'
session
=
mwapi
.
Session
(
'https://www.wikidata.org'
,
user_agent
=
'unlink-incubatorwiki (mail@lucaswerkmeister.de; T284211)'
,
formatversion
=
1
)
# mwapi assumes error contents are in '*'
lgtoken
=
session
.
get
(
action
=
'query'
,
meta
=
'tokens'
,
type
=
'login'
)[
'query'
][
'tokens'
][
'logintoken'
]
session
.
post
(
action
=
'login'
,
lgname
=
bot_username
,
lgpassword
=
bot_password
,
lgtoken
=
lgtoken
)
token
=
session
.
get
(
action
=
'query'
,
meta
=
'tokens'
,
type
=
[
'csrf'
])[
'query'
][
'tokens'
][
'csrftoken'
]
def
unlink_wikis
(
item_id
,
site_ids
):
item
=
session
.
get
(
action
=
'wbgetentities'
,
ids
=
[
item_id
])[
'entities'
][
item_id
]
baserevid
=
item
[
'lastrevid'
]
del
item
[
'pageid'
],
item
[
'ns'
],
item
[
'title'
],
item
[
'lastrevid'
],
item
[
'modified'
]
removed
=
[]
for
site_id
in
site_ids
:
try
:
del
item
[
'sitelinks'
][
site_id
]
except
KeyError
:
print
(
f
'No {site_id} sitelink found in {item_id}.'
)
else
:
removed
.
append
(
site_id
)
if
not
removed
:
return
revid
=
session
.
post
(
**
{
'action'
:
'wbeditentity'
,
'id'
:
item_id
,
'baserevid'
:
baserevid
,
'clear'
:
''
,
'data'
:
json
.
dumps
(
item
),
'summary'
:
f
'removing broken {"/".join(removed)} sitelink{"s" if len(removed) > 1 else ""} ([[phabricator:T284211|T284211]], {edit_group})'
,
'assert'
:
'user'
,
'token'
:
token
,
})[
'entity'
][
'lastrevid'
]
print
(
f
'Edited {item_id}, revision {revid}.'
)
unlink_wikis
(
'Q148'
,
[
'incubatorwiki'
,
'pflwiki'
])
unlink_wikis
(
'Q4847311'
,
[
'incubatorwiki'
,
'avwiktionary'
])
Event Timeline
LucasWerkmeister
created this paste.
Feb 7 2022, 9:19 PM
2022-02-07 21:19:30 (UTC+0)
LucasWerkmeister
mentioned this in
T284211: Uncaught TypeError: $(...).siteselector(...).getId is not a function
.
Log In to Comment