User:MDanielsBot/Task 1 source
Jump to navigation
Jump to search
Original python code:
import pywikibot
from pywikibot import pagegenerators
import random
toReplace = "kategorija Wikimedije" # Then "razločitvena stran Wikimedije", then "seznam Wikimedije"
toReplaceWith = 'kategorija Wikimedie' # Then "razločitvena stran Wikimedie" , then "seznam Wikimedie"
editSummary = "[[Wikidata:Requests for permissions/Bot/MDanielsBot|Bot task 1]]: replacing sl-language descriptions ([[:toolforge:editgroups/b/CB/" + "{:x}".format(random.randrange(0, 2**48)) + "|details]])"
site = pywikibot.Site("wikidata", "wikidata")
gen = pagegenerators.WikibaseItemGenerator(pywikibot.pagegenerators.SearchPageGenerator(toReplace, site=site, namespaces=0))
for item in gen:
desc = item.get()['descriptions']
if (('sl' in desc) and (desc['sl'] == toReplace)):
item.editDescriptions({'sl': toReplaceWith}, summary=editSummary)
Then I switched to the much faster WikibaseJS-cli.
query for use with WikibaseJS-cli (quarry:query/74116):
SELECT
CONCAT('Q', wbit_item_id, ' sl "seznam Wikimedie"')
FROM wbt_item_terms
LEFT JOIN wbt_term_in_lang ON wbit_term_in_lang_id = wbtl_id
LEFT JOIN wbt_type ON wbtl_type_id = wby_id
LEFT JOIN wbt_text_in_lang ON wbtl_text_in_lang_id = wbxl_id
LEFT JOIN wbt_text ON wbxl_text_id = wbx_id
WHERE wbtl_type_id = 2 # Description
AND wbxl_language = 'sl'
AND wbx_text = "seznam Wikimedije";
Output query results to txt, one per line.
Then: WikibaseJS-cli sh file:
#!/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm use --lts
wd sd --summary "[[Wikidata:Requests for permissions/Bot/MDanielsBot|Bot task 1]]: replacing sl-language descriptions" --batch --no-exit-on-error < queryresults.txt