User-fixes.py
# -*- coding: utf-8 -*-
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# cd pywikibot/core_stable
# python3.9 pwb.py login
# ./login
#
# https://www.mediawiki.org/wiki/Manual:Pywikibot
# shift + ctrl + click to edit multiple lines
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# python3.9 pwb.py replace
# python3.9 pwb.py touch (mass null edit)
# python3.9 pwb.py movepages
# -pt:0 -- prevents cooldown between bot edits
# Namespace - https://community.fandom.com/wiki/Help:Namespace#What_namespaces_do_all_communities_have.3F
# -ns:0 -- main
# -ns:1 -- main talk
# -ns:2 -- user
# -ns:3 -- user talk
# -ns:6 -- file
# -ns:7 -- file talk
# -ns:8 -- MediaWiki
# -ns:9 -- MediaWiki talk
# -ns:10 -- template
# -ns:11 -- template talk
# -ns:14 -- category
# -ns:15 -- category talk
# -ns:110 -- forum
# -ns:111 -- forum talk
# -ns:-2,-1,0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,110,111 -- needed to avoid User namespace
# -xml:starwars_pages_current.xml
# -page:
# -ref:
# -file:bot.txt
# -cat -- all pages in a category
# -catr -- all pages in a category and subcats
# -subcats -- all sub categories
# -regex
# -dotall -- (.) now works for line breaks
# -fix:general
# -exceptinside:
# -recursive -- recurse replacement until possible
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# python3.9 pwb.py replace -pt:0 -xml:starwars_pages_current.xml -fix:general
# python3.9 pwb.py replace -pt:0 -ref:"Musical instrument" -fix:general
# python3.9 pwb.py replace -pt:0 -page:"User:Tommy-Macaroni/Bot tests" -fix:general -dotall
# python3.9 pwb.py category move -from:" " -to:" " (more commands here - https://www.mediawiki.org/wiki/Manual:Pywikibot/category.py)
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# (r'______', '________'),
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# General
# python3.9 pwb.py replace -pt:0 -ns:0 -xml:starwars_pages_current.xml -fix:general
# python3.9 pwb.py replace -pt:0 -ns:-2,-1,0,1,3,4,5,6,7,8,9,10,11,12,13,14,15 -xml:starwars_pages_current.xml -fix:general
# python3.9 pwb.py replace -pt:0 -ns:-2,-1,0,1,3,4,5,6,7,8,9,10,11,12,13,14,15 -ref:"Wookieepedia:WookieeProject" -fix:general
fixes['general'] = {
'regex': True,
'msg': {
'_default': 'Redirect fixes',
},
'replacements': [
(r'\[\[Wookieepedia\:WookieeProject\]\]', '[[Wookieepedia:WookieeProjects]]'),
(r'\[\[Wookieepedia\:WookieeProject\|', '[[Wookieepedia:WookieeProjects|'),
(r'Wookieepedia\:WookieeProject\}\}', 'Wookieepedia:WookieeProjects}}'),
]
}
# .+ -> everything (with -dotall)
# (r'\{\{Top(.*?)\}\}(.*?)\_\_NOTOC\_\_\n', '{{Top\\1|notoc=1}}\\2'),
#Ordering ID and Tcresult
# [[Inner Rim ]]
#[[Nevoota Bee/Legends|''Nevoota Bee'']]
# == (.*?)==
# (r'\[\[Anakin Solo \(Imperial II\-class\)\|', '[[Anakin Solo (Imperial II-class Star Destroyer)|'),
# (r'\{\{Top\|(.*?)\}\}(.*?)\_\_NOTOC\_\_\n', '{{Top|\\1|notoc=1}}\\2'),
# (r'\{\{Top\|(.*?)\}\}(.*?)\_\_NOTOC\_\_', '{{Top|\\1|notoc=1}}\\2'),
# (r' \'\'(.*?)\<nowiki\>\'s\<\/nowiki\>\'\'', ' \'\'\\1\'\'{{\'s}}'),
# (r' \'\'(.*?)\<nowiki\>\'\<\/nowiki\>s\'\'', ' \'\'\\1\'\'{{\'s}}'),
# (r' \'\'(.*?)\'s\'\' ', ' \'\'\\1\'\'{{\'s}} '),
# (r' \'\'(.*?)\<nowiki\/\>\'s\'\' ', ' \'\'\\1\'\'{{\'s}} '),
# python3.9 pwb.py replace -pt:0 -cat:"Marvel Star Wars" -fix:general
# (r'\{\{Top(.*)\|title\=\'\'(.*)\'\'\|', '{{Top\\1|title=\'\'{{PAGENAME}}\'\'|'),
# (r'\{\{Top(.*)\|title\=\'\'(.*)\'\'\}', '{{Top\\1|title=\'\'{{PAGENAME}}\'\'}'),
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Formatting fixes
# python3.9 pwb.py replace -pt:0 -ns:0 -xml:starwars_pages_current.xml -fix:formatting
# python3.9 pwb.py replace -pt:0 -ns:14 -xml:starwars_pages_current.xml -fix:formatting
# python3.9 pwb.py replace -pt:0 -ns:0 -ref:"Template:Top" -fix:formatting
# python3.9 pwb.py replace -pt:0 -page:"Onager-class Star Destroyer" -fix:formatting
fixes['formatting'] = {
'regex': True,
'msg': {
'_default': 'Formatting fixes',
},
'replacements': [
(r'\{\{a(.*)', '{{A\\1'),
(r'\{\{b(.*)', '{{B\\1'),
(r'\{\{c(.*)', '{{C\\1'),
(r'\{\{d(.*)', '{{D\\1'),
(r'\{\{e(.*)', '{{E\\1'),
(r'\{\{f(.*)', '{{F\\1'),
(r'\{\{g(.*)', '{{G\\1'),
(r'\{\{h(.*)', '{{H\\1'),
(r'\{\{i(.*)', '{{I\\1'),
(r'\{\{j(.*)', '{{J\\1'),
(r'\{\{k(.*)', '{{K\\1'),
(r'\{\{l(.*)', '{{L\\1'),
(r'\{\{m(.*)', '{{M\\1'),
(r'\{\{n(.*)', '{{N\\1'),
(r'\{\{o(.*)', '{{O\\1'),
(r'\{\{p(.*)', '{{P\\1'),
(r'\{\{q(.*)', '{{Q\\1'),
(r'\{\{r(.*)', '{{R\\1'),
(r'\{\{s(.*)', '{{S\\1'),
(r'\{\{t(.*)', '{{T\\1'),
(r'\{\{u(.*)', '{{U\\1'),
(r'\{\{v(.*)', '{{V\\1'),
(r'\{\{w(.*)', '{{W\\1'),
(r'\{\{x(.*)', '{{X\\1'),
(r'\{\{y(.*)', '{{Y\\1'),
(r'\{\{z(.*)', '{{Z\\1'),
(r'\{\{(T|t)emplate\:(.*?)\}\}', '{{\\2}}'),
(r'\{\{Otheruses(.*?)\}\}\n\n', '{{Otheruses\\1}}\n'),
(r'\{\{Youmay(.*?)\}\}\n\n', '{{Youmay\\1}}\n'),
(r'\{\{Youmayd(.*?)\}\}\n\n', '{{Youmayd\\1}}\n'),
(r'\{\{Youmayredirect(.*?)\}\}\n\n', '{{Youmayredirect\\1}}\n'),
(r'(\[\[[Ff]ile:[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3_\\4_\\5_\\6_\\7'),
(r'(\[\[[Ff]ile:[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3_\\4_\\5_\\6'),
(r'(\[\[[Ff]ile:[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3_\\4_\\5'),
(r'(\[\[[Ff]ile:[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3_\\4'),
(r'(\[\[[Ff]ile:[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3'),
(r'(\[\[[Ff]ile:[^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2'),
(r'(audio\=[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3_\\4_\\5_\\6_\\7'),
(r'(audio\=[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3_\\4_\\5_\\6'),
(r'(audio\=[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3_\\4_\\5'),
(r'(audio\=[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3_\\4'),
(r'(audio\=[^\.\n\|\]]*) ([^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2_\\3'),
(r'(audio\=[^\.\n\|\]]*) ([^\.\n\|\]]*\.[A-z]+[\|\]])', '\\1_\\2'),
(r'\{\{(c|C)ite( |_)web', '{{Cite_web'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r'\n\n\n\n\n\n\n', '\n\n'),
(r'\n\n\n\n\n\n', '\n\n'),
(r'\n\n\n\n\n', '\n\n'),
(r'\n\n\n\n', '\n\n'),
(r'\n\n\n', '\n\n'),
(r'\<ref name\=\"(.*?)\"\/\>', '<ref name="\\1" />'),
(r'\'\'\[\[(.*?) \(audiobook\)\]\]\'\'', '[[\\1 (audiobook)|\'\'\\1\'\' audiobook]]'),
(r'{{\'}}s', '{{\'s}}'),
(r' \'\'(.*?)\'\'\<nowiki\>\'s\<\/nowiki\>', ' \'\'\\1\'\'{{\'s}}'),
(r' \'\'(.*?)\'\'\<nowiki\>\'\<\/nowiki\>s', ' \'\'\\1\'\'{{\'s}}'),
(r' \'\'(.*?)\'\'\'s ', ' \'\'\\1\'\'{{\'s}} '),
(r' \'\'(.*?)\'\'\<nowiki\/\>\'s ', ' \'\'\\1\'\'{{\'s}} '),
(r'\'\'\[\[(.*?)\]\]\{\{\'\}\}s\'\'', '\'\'[[\\1]]\'\'{{\'s}}'),
(r'\'\'\[\[(.*?)\]\]\{\{\'s\}\}\'\'', '\'\'[[\\1]]\'\'{{\'s}}'),
(r'\[\[(.*?)\|\1\]\]', '[[\\1]]'),
(r'\[\[(.*?)\|\1s\]\]', '[[\\1]]s'),
(r'\[\[(.*?)\|\1\'s\]\]', '[[\\1]]\'s'),
(r'\[\[A(.*?)\|a\1\]\]', '[[a\\1]]'),
(r'\[\[B(.*?)\|b\1\]\]', '[[b\\1]]'),
(r'\[\[C(.*?)\|c\1\]\]', '[[c\\1]]'),
(r'\[\[D(.*?)\|d\1\]\]', '[[d\\1]]'),
(r'\[\[E(.*?)\|e\1\]\]', '[[e\\1]]'),
(r'\[\[F(.*?)\|f\1\]\]', '[[f\\1]]'),
(r'\[\[G(.*?)\|g\1\]\]', '[[g\\1]]'),
(r'\[\[H(.*?)\|h\1\]\]', '[[h\\1]]'),
(r'\[\[I(.*?)\|i\1\]\]', '[[i\\1]]'),
(r'\[\[J(.*?)\|j\1\]\]', '[[j\\1]]'),
(r'\[\[K(.*?)\|k\1\]\]', '[[k\\1]]'),
(r'\[\[L(.*?)\|l\1\]\]', '[[l\\1]]'),
(r'\[\[M(.*?)\|m\1\]\]', '[[m\\1]]'),
(r'\[\[N(.*?)\|n\1\]\]', '[[n\\1]]'),
(r'\[\[O(.*?)\|o\1\]\]', '[[o\\1]]'),
(r'\[\[P(.*?)\|p\1\]\]', '[[p\\1]]'),
(r'\[\[Q(.*?)\|q\1\]\]', '[[q\\1]]'),
(r'\[\[R(.*?)\|r\1\]\]', '[[r\\1]]'),
(r'\[\[S(.*?)\|s\1\]\]', '[[s\\1]]'),
(r'\[\[T(.*?)\|t\1\]\]', '[[t\\1]]'),
(r'\[\[U(.*?)\|u\1\]\]', '[[u\\1]]'),
(r'\[\[V(.*?)\|v\1\]\]', '[[v\\1]]'),
(r'\[\[W(.*?)\|w\1\]\]', '[[w\\1]]'),
(r'\[\[X(.*?)\|x\1\]\]', '[[x\\1]]'),
(r'\[\[Y(.*?)\|y\1\]\]', '[[y\\1]]'),
(r'\[\[Z(.*?)\|z\1\]\]', '[[z\\1]]'),
(r'\[\[A(.*?)\|a\1s\]\]', '[[a\\1]]s'),
(r'\[\[B(.*?)\|b\1s\]\]', '[[b\\1]]s'),
(r'\[\[C(.*?)\|c\1s\]\]', '[[c\\1]]s'),
(r'\[\[D(.*?)\|d\1s\]\]', '[[d\\1]]s'),
(r'\[\[E(.*?)\|e\1s\]\]', '[[e\\1]]s'),
(r'\[\[F(.*?)\|f\1s\]\]', '[[f\\1]]s'),
(r'\[\[G(.*?)\|g\1s\]\]', '[[g\\1]]s'),
(r'\[\[H(.*?)\|h\1s\]\]', '[[h\\1]]s'),
(r'\[\[I(.*?)\|i\1s\]\]', '[[i\\1]]s'),
(r'\[\[J(.*?)\|j\1s\]\]', '[[j\\1]]s'),
(r'\[\[K(.*?)\|k\1s\]\]', '[[k\\1]]s'),
(r'\[\[L(.*?)\|l\1s\]\]', '[[l\\1]]s'),
(r'\[\[M(.*?)\|m\1s\]\]', '[[m\\1]]s'),
(r'\[\[N(.*?)\|n\1s\]\]', '[[n\\1]]s'),
(r'\[\[O(.*?)\|o\1s\]\]', '[[o\\1]]s'),
(r'\[\[P(.*?)\|p\1s\]\]', '[[p\\1]]s'),
(r'\[\[Q(.*?)\|q\1s\]\]', '[[q\\1]]s'),
(r'\[\[R(.*?)\|r\1s\]\]', '[[r\\1]]s'),
(r'\[\[S(.*?)\|s\1s\]\]', '[[s\\1]]s'),
(r'\[\[T(.*?)\|t\1s\]\]', '[[t\\1]]s'),
(r'\[\[U(.*?)\|u\1s\]\]', '[[u\\1]]s'),
(r'\[\[V(.*?)\|v\1s\]\]', '[[v\\1]]s'),
(r'\[\[W(.*?)\|w\1s\]\]', '[[w\\1]]s'),
(r'\[\[X(.*?)\|x\1s\]\]', '[[x\\1]]s'),
(r'\[\[Y(.*?)\|y\1s\]\]', '[[y\\1]]s'),
(r'\[\[Z(.*?)\|z\1s\]\]', '[[z\\1]]s'),
(r'\[\[A(.*?)\|a\1\'s\]\]', '[[a\\1]]\'s'),
(r'\[\[B(.*?)\|b\1\'s\]\]', '[[b\\1]]\'s'),
(r'\[\[C(.*?)\|c\1\'s\]\]', '[[c\\1]]\'s'),
(r'\[\[D(.*?)\|d\1\'s\]\]', '[[d\\1]]\'s'),
(r'\[\[E(.*?)\|e\1\'s\]\]', '[[e\\1]]\'s'),
(r'\[\[F(.*?)\|f\1\'s\]\]', '[[f\\1]]\'s'),
(r'\[\[G(.*?)\|g\1\'s\]\]', '[[g\\1]]\'s'),
(r'\[\[H(.*?)\|h\1\'s\]\]', '[[h\\1]]\'s'),
(r'\[\[I(.*?)\|i\1\'s\]\]', '[[i\\1]]\'s'),
(r'\[\[J(.*?)\|j\1\'s\]\]', '[[j\\1]]\'s'),
(r'\[\[K(.*?)\|k\1\'s\]\]', '[[k\\1]]\'s'),
(r'\[\[L(.*?)\|l\1\'s\]\]', '[[l\\1]]\'s'),
(r'\[\[M(.*?)\|m\1\'s\]\]', '[[m\\1]]\'s'),
(r'\[\[N(.*?)\|n\1\'s\]\]', '[[n\\1]]\'s'),
(r'\[\[O(.*?)\|o\1\'s\]\]', '[[o\\1]]\'s'),
(r'\[\[P(.*?)\|p\1\'s\]\]', '[[p\\1]]\'s'),
(r'\[\[Q(.*?)\|q\1\'s\]\]', '[[q\\1]]\'s'),
(r'\[\[R(.*?)\|r\1\'s\]\]', '[[r\\1]]\'s'),
(r'\[\[S(.*?)\|s\1\'s\]\]', '[[s\\1]]\'s'),
(r'\[\[T(.*?)\|t\1\'s\]\]', '[[t\\1]]\'s'),
(r'\[\[U(.*?)\|u\1\'s\]\]', '[[u\\1]]\'s'),
(r'\[\[V(.*?)\|v\1\'s\]\]', '[[v\\1]]\'s'),
(r'\[\[W(.*?)\|w\1\'s\]\]', '[[w\\1]]\'s'),
(r'\[\[X(.*?)\|x\1\'s\]\]', '[[x\\1]]\'s'),
(r'\[\[Y(.*?)\|y\1\'s\]\]', '[[y\\1]]\'s'),
(r'\[\[Z(.*?)\|z\1\'s\]\]', '[[z\\1]]\'s'),
(r'\[\[(.*?)\|\'\'\1\'\'\]\]', '\'\'[[\\1]]\'\''),
(r'\'\'\[\[(.*?) \((.*)\)\|\1\]\]\'\' ', '[[\\1 (\\2)|\'\'\\1\'\']] '),
(r' \'\'\[\[(.*?) \((.*)\)\|\1\]\]\'\'', ' [[\\1 (\\2)|\'\'\\1\'\']]'),
(r'\{\{(q|Q)uote\|(.*)\|(.*)\|audio\=(.*)\.ogg\}\}', '{{Quote|\\2|audio=\\4.ogg|\\3}}'),
(r'\{\{(d|D)ialogue\|(.*)\|src=(.*)\|audio\=(.*)\.ogg\}\}', '{{Dialogue|\\2|audio=\\4.ogg|src=\\3}}'),
(r'\{\{(q|Q)uotetrans\|(.*)\|(.*)\|audio\=(.*)\.ogg\}\}', '{{Quotetrans|\\2|audio=\\4.ogg|\\3}}'),
(r'\.\n{\{(.*)(s|S)tub', '.\n\n{{\\1\\2tub'),
(r'\>\n{\{(.*)(s|S)tub', '>\n\n{{\\1\\2tub'),
(r'\{\{Mediacat\|imagecat\=(.*)\|soundcat\=(.*)\}\}', '{{Mediacat|soundcat=\\2|imagecat=\\1}}'),
(r'\{\{(s|S)croll( |_)box(\n|)\|( |)content( |)\=(\n|)\*(.*?)', '{{Scroll_box|content=\n*\\7'),
(r'\{\{(s|S)croll( |_)box(\n|)\|( |)content( |)\=(\n|)\[(.*?)', '{{Scroll_box|content=\n[\\7'),
(r'\{\{(s|S)croll( |_)box(\n|)\|( |)content( |)\=(\n|)\{\{Reflist\}\}(\n|)\}\}', '{{Scroll_box|content={{Reflist}}}}'),
(r'\{\{(s|S)croll( |_)box(\n|)\|( |)content( |)\=', '{{Scroll_box|content='),
(r'\{\{(C|c)\|(F|f)irst mentioned\, albeit indirectly\}\}', '{{1stm}} {{Imo}}'),
(r'\=\= (.*?) \=\=', '==\\1=='),
(r'\=\=\n\n', '==\n'),
(r'(\=\=\=|\=\=)(N|n)on(\-| )(C|c)anon (A|a)ppearances(\=\=\=|\=\=)', '===Non-canon appearances==='),
(r'\=\=(A|a)ppearances\=\=\n\{\{(E|e)xpandsect\}\}', '==Appearances==\n{{Incomplete_list}}'),
(r'\=\=(A|a)ppearances\=\=\n\{\{(E|e)xpand\}\}', '==Appearances==\n{{Incomplete_list}}'),
(r'\=\=( |)Notes (A|a)nd (R|r)eferences( |)\=\=', '==Notes and references=='),
(r'\=\=( |)References( |)\=\=', '==Notes and references=='),
(r'\=\=( |)Notes \& (R|r)eferences( |)\=\=', '==Notes and references=='),
(r'\=\=Behind (T|t)he (S|s)cenes\=\=', '==Behind the scenes=='),
(r'\{\{(.*?)\}\}\{\{Interlang', '{{\\1}}\n\n{{Interlang'),
(r'\{\{(.*?)\}\} \{\{Interlang', '{{\\1}}\n\n{{Interlang'),
(r'\{\{(.*?)\}\}\n\{\{Interlang', '{{\\1}}\n\n{{Interlang'),
(r'\[\[(.*?)\]\]\{\{Interlang', '[[\\1]]\n\n{{Interlang'),
(r'\[\[(.*?)\]\] \{\{Interlang', '[[\\1]]\n\n{{Interlang'),
(r'\[\[(.*?)\]\]\n\{\{Interlang', '[[\\1]]\n\n{{Interlang'),
(r'\'\'\{\{Interlang', '\'\'\n\n{{Interlang'),
(r'\'\' \{\{Interlang', '\'\'\n\n{{Interlang'),
(r'\'\'\n\{\{Interlang', '\'\'\n\n{{Interlang'),
(r'\|( |)bg( |)\=( |)', '|bg='),
(r'\|( |)cs( |)\=( |)', '|cs='),
(r'\|( |)da( |)\=( |)', '|da='),
(r'\|( |)de( |)\=( |)', '|de='),
(r'\|( |)el( |)\=( |)', '|el='),
(r'\|( |)es( |)\=( |)', '|es='),
(r'\|( |)fr( |)\=( |)', '|fr='),
(r'\|( |)ko( |)\=( |)', '|ko='),
(r'\|( |)hr( |)\=( |)', '|hr='),
(r'\|( |)id( |)\=( |)', '|id='),
(r'\|( |)it( |)\=( |)', '|it='),
(r'\|( |)ka( |)\=( |)', '|ka='),
(r'\|( |)la( |)\=( |)', '|la='),
(r'\|( |)hu( |)\=( |)', '|hu='),
(r'\|( |)nl( |)\=( |)', '|nl='),
(r'\|( |)ja( |)\=( |)', '|ja='),
(r'\|( |)no( |)\=( |)', '|no='),
(r'\|( |)pl( |)\=( |)', '|pl='),
(r'\|( |)pt( |)\=( |)', '|pt='),
(r'\|( |)ro( |)\=( |)', '|ro='),
(r'\|( |)ru( |)\=( |)', '|ru='),
(r'\|( |)sl( |)\=( |)', '|sl='),
(r'\|( |)sr( |)\=( |)', '|sr='),
(r'\|( |)fi( |)\=( |)', '|fi='),
(r'\|( |)sv( |)\=( |)', '|sv='),
(r'\|( |)tr( |)\=( |)', '|tr='),
(r'\|( |)uk( |)\=( |)', '|uk='),
(r'\|( |)zh( |)\=( |)', '|zh='),
(r'CA( |)\=( |)1', 'CA=1'),
(r'GA( |)\=( |)1', 'GA=1'),
(r'FA( |)\=( |)1', 'FA=1'),
(r'\{\{Interlang\|\n\|', '{{Interlang\n|'),
(r'\{\{Interlang\|\n', '{{Interlang\n|'),
(r'\{\{Interlang\|', '{{Interlang\n|'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n|\\8\n}}'),
(r'\{\{Interlang\n\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n|\\8\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n|\\8\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n|\\8\n}}'),
(r'\{\{Interlang\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n|\\8\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n|\\8\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n}}'),
(r'\{\{Interlang\n\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n}}'),
(r'\{\{Interlang\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n|\\7\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n}}'),
(r'\{\{Interlang\n\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n}}'),
(r'\{\{Interlang\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n|\\6\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n}}'),
(r'\{\{Interlang\n\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n}}'),
(r'\{\{Interlang\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n|\\5\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n}}'),
(r'\{\{Interlang\n\|(.*)\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n}}'),
(r'\{\{Interlang\n\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n|\\4\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n}}'),
(r'\{\{Interlang\n\|(.*)\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n}}'),
(r'\{\{Interlang\n\|(.*)\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n|\\3\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n}}'),
(r'\{\{Interlang\n\|(.*)\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n}}'),
(r'\{\{Interlang\|(.*)\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n}}'),
(r'\{\{Interlang\n\|(.*)\n\|(.*)\}\}', '{{Interlang\n|\\1\n|\\2\n}}'),
(r'\{\{Interlang\|(.*)\n\|(.*)\n\}\}', '{{Interlang\n|\\1\n|\\2\n}}'),
(r'\{\{Interlang\|(.*)\}\}', '{{Interlang\n|\\1\n}}'),
(r'\{\{Interlang\n\|(.*)\}\}', '{{Interlang\n|\\1\n}}'),
(r'\{\{Interlang\|(.*)\n\}\}', '{{Interlang\n|\\1\n}}'),
(r'\{\{Interlang( |)\|', '{{Interlang\n|'),
(r'\|(bg|cs|da|de|el|es|fr|ko|hr|id|it|ka|la|hu|nl|ja|no|pl|pt|ro|ru|sl|sr|fi|sv|tr|uk|zh)\=(.*)(\n|)\}\}\[\[Category', '|\\1=\\2\n}}\n\n[[Category'),
(r'\|(bg|cs|da|de|el|es|fr|ko|hr|id|it|ka|la|hu|nl|ja|no|pl|pt|ro|ru|sl|sr|fi|sv|tr|uk|zh)\=(.*)(\n|)\}\} \[\[Category', '|\\1=\\2\n}}\n\n[[Category'),
(r'\|(bg|cs|da|de|el|es|fr|ko|hr|id|it|ka|la|hu|nl|ja|no|pl|pt|ro|ru|sl|sr|fi|sv|tr|uk|zh)\=(.*)(\n|)\}\}\n\[\[Category', '|\\1=\\2\n}}\n\n[[Category'),
(r'\|(bg|cs|da|de|el|es|fr|ko|hr|id|it|ka|la|hu|nl|ja|no|pl|pt|ro|ru|sl|sr|fi|sv|tr|uk|zh)\=(.*)(\n|)\}\}\{\{DEFAULTSORT', '|\\1=\\2\n}}\n\n{{DEFAULTSORT'),
(r'\|(bg|cs|da|de|el|es|fr|ko|hr|id|it|ka|la|hu|nl|ja|no|pl|pt|ro|ru|sl|sr|fi|sv|tr|uk|zh)\=(.*)(\n|)\}\} \{\{DEFAULTSORT', '|\\1=\\2\n}}\n\n{{DEFAULTSORT'),
(r'\|(bg|cs|da|de|el|es|fr|ko|hr|id|it|ka|la|hu|nl|ja|no|pl|pt|ro|ru|sl|sr|fi|sv|tr|uk|zh)\=(.*)(\n|)\}\}\n\{\{DEFAULTSORT', '|\\1=\\2\n}}\n\n{{DEFAULTSORT'),
(r'\{\{(.*?)\}\}\{\{DEFAULTSORT', '{{\\1}}\n\n{{DEFAULTSORT'),
(r'\{\{(.*?)\}\} \{\{DEFAULTSORT', '{{\\1}}\n\n{{DEFAULTSORT'),
(r'\{\{(.*?)\}\}\n\{\{DEFAULTSORT', '{{\\1}}\n\n{{DEFAULTSORT'),
(r'\[\[(.*?)\]\]\{\{DEFAULTSORT', '[[\\1]]\n\n{{DEFAULTSORT'),
(r'\[\[(.*?)\]\] \{\{DEFAULTSORT', '[[\\1]]\n\n{{DEFAULTSORT'),
(r'\[\[(.*?)\]\]\n\{\{DEFAULTSORT', '[[\\1]]\n\n{{DEFAULTSORT'),
(r'\#(redirect|Redirect) \[\[(.*?)\]\]', '#REDIRECT [[\\2]]'),
(r'\#(REDIRECT|redirect|Redirect) \[\[(.*?)\|(.*?)\]\]', '#REDIRECT [[\\2]]'),
(r'\{\{WEGCite\|book\=(.*?)\|text\=\'\'\1\'\'\|', '{{WEGCite|book=\\1|'),
(r'http\:\/\/web\.archive\.org', 'https://web.archive.org'),
(r'http\:\/\/www\.rebelscum\.com', 'https://www.rebelscum.com'),
]
}
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Talkpages:
# python3.9 pwb.py add_text -pt:0 -start:Talk:! -text:"{{Talkheader}}" -except:"\{\{([Tt]emplate:|)[Tt]alkheader" -up
# python3.9 pwb.py replace -pt:0 -start:Talk:! -fix:talkheader
fixes['talkheader'] = {
'regex': True,
'msg': {
'_default': 'Removing {{Talkheader}} from talk page archives',
},
'replacements': [
(r'\{\{Talkheader\}\}\n\<div id\=\"old\-forum\-warning\"', '<div id="old-forum-warning"'),
]
}
# python3.9 pwb.py replace -pt:0 -ns:1 -xml:starwars_pages_current.xml -fix:talkdotall
fixes['talkdotall'] = {
'regex': True,
'msg': {
'_default': 'Formatting fixes',
},
'replacements': [
(r'\{\{(.*?)\n\{\{(T|t)alkheader(.*?)\}\}', '{{Talkheader\\3}}\n{{\\1'),
(r'\{\{Talkheader(.*?)\}\}(.*?)\n\{\{(CA|GA|FA|FormerCA|FormerGA|FormerFA)(.*?)\}\}\n\{\{Ahh(.*?)\{\{Ahf(.*?)\}\}', '{{Talkheader\\1}}\n{{\\3\\4}}\n{{Ahh\\5{{Ahf\\6}}\\2'),
(r'\{\{Talkheader(.*?)\}\}\n\{\{(CA|GA|FA|FormerCA|FormerGA|FormerFA)(.*?)\}\}(.*?)\n\{\{Ahh(.*?)\{\{Ahf(.*?)\}\}', '{{Talkheader\\1}}\n{{\\2\\3}}\n{{Ahh\\5{{Ahf\\6}}\\4'),
]
}
# python3.9 pwb.py replace -pt:0 -ns:1 -xml:starwars_pages_current.xml -fix:talk
fixes['talk'] = {
'regex': True,
'msg': {
'_default': 'Formatting fixes',
},
'replacements': [
(r'\{\{(FormerCA|FormerGA|FormerFA)(.*?)\}\}\n\{\{(CA|GA|FA)\}\}', '{{\\3}}'),
(r'\{\{(CA|GA|FA)\}\}\n\{\{(FormerCA|FormerGA|FormerFA)(.*?)\}\}', '{{\\1}}'),
(r'\}\}\n\=\=', '}}\n\n=='),
(r'\{\{a(.*)', '{{A\\1'),
(r'\{\{b(.*)', '{{B\\1'),
(r'\{\{c(.*)', '{{C\\1'),
(r'\{\{d(.*)', '{{D\\1'),
(r'\{\{e(.*)', '{{E\\1'),
(r'\{\{f(.*)', '{{F\\1'),
(r'\{\{g(.*)', '{{G\\1'),
(r'\{\{h(.*)', '{{H\\1'),
(r'\{\{i(.*)', '{{I\\1'),
(r'\{\{j(.*)', '{{J\\1'),
(r'\{\{k(.*)', '{{K\\1'),
(r'\{\{l(.*)', '{{L\\1'),
(r'\{\{m(.*)', '{{M\\1'),
(r'\{\{n(.*)', '{{N\\1'),
(r'\{\{o(.*)', '{{O\\1'),
(r'\{\{p(.*)', '{{P\\1'),
(r'\{\{q(.*)', '{{Q\\1'),
(r'\{\{r(.*)', '{{R\\1'),
(r'\{\{s(.*)', '{{S\\1'),
(r'\{\{t(.*)', '{{T\\1'),
(r'\{\{u(.*)', '{{U\\1'),
(r'\{\{v(.*)', '{{V\\1'),
(r'\{\{w(.*)', '{{W\\1'),
(r'\{\{x(.*)', '{{X\\1'),
(r'\{\{y(.*)', '{{Y\\1'),
(r'\{\{z(.*)', '{{Z\\1'),
(r'\{\{(T|t)emplate\:(.*?)\}\}', '{{\\2}}'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r' \n', '\n'),
(r'\n\n\n\n\n\n\n', '\n\n'),
(r'\n\n\n\n\n\n', '\n\n'),
(r'\n\n\n\n\n', '\n\n'),
(r'\n\n\n\n', '\n\n'),
(r'\n\n\n', '\n\n'),
(r'\[\[(.*?)\|\1\]\]', '[[\\1]]'),
(r'\[\[(.*?)\|\1s\]\]', '[[\\1]]s'),
(r'\[\[(.*?)\|\1\'s\]\]', '[[\\1]]\'s'),
(r'\[\[A(.*?)\|a\1\]\]', '[[a\\1]]'),
(r'\[\[B(.*?)\|b\1\]\]', '[[b\\1]]'),
(r'\[\[C(.*?)\|c\1\]\]', '[[c\\1]]'),
(r'\[\[D(.*?)\|d\1\]\]', '[[d\\1]]'),
(r'\[\[E(.*?)\|e\1\]\]', '[[e\\1]]'),
(r'\[\[F(.*?)\|f\1\]\]', '[[f\\1]]'),
(r'\[\[G(.*?)\|g\1\]\]', '[[g\\1]]'),
(r'\[\[H(.*?)\|h\1\]\]', '[[h\\1]]'),
(r'\[\[I(.*?)\|i\1\]\]', '[[i\\1]]'),
(r'\[\[J(.*?)\|j\1\]\]', '[[j\\1]]'),
(r'\[\[K(.*?)\|k\1\]\]', '[[k\\1]]'),
(r'\[\[L(.*?)\|l\1\]\]', '[[l\\1]]'),
(r'\[\[M(.*?)\|m\1\]\]', '[[m\\1]]'),
(r'\[\[N(.*?)\|n\1\]\]', '[[n\\1]]'),
(r'\[\[O(.*?)\|o\1\]\]', '[[o\\1]]'),
(r'\[\[P(.*?)\|p\1\]\]', '[[p\\1]]'),
(r'\[\[Q(.*?)\|q\1\]\]', '[[q\\1]]'),
(r'\[\[R(.*?)\|r\1\]\]', '[[r\\1]]'),
(r'\[\[S(.*?)\|s\1\]\]', '[[s\\1]]'),
(r'\[\[T(.*?)\|t\1\]\]', '[[t\\1]]'),
(r'\[\[U(.*?)\|u\1\]\]', '[[u\\1]]'),
(r'\[\[V(.*?)\|v\1\]\]', '[[v\\1]]'),
(r'\[\[W(.*?)\|w\1\]\]', '[[w\\1]]'),
(r'\[\[X(.*?)\|x\1\]\]', '[[x\\1]]'),
(r'\[\[Y(.*?)\|y\1\]\]', '[[y\\1]]'),
(r'\[\[Z(.*?)\|z\1\]\]', '[[z\\1]]'),
(r'\[\[A(.*?)\|a\1s\]\]', '[[a\\1]]s'),
(r'\[\[B(.*?)\|b\1s\]\]', '[[b\\1]]s'),
(r'\[\[C(.*?)\|c\1s\]\]', '[[c\\1]]s'),
(r'\[\[D(.*?)\|d\1s\]\]', '[[d\\1]]s'),
(r'\[\[E(.*?)\|e\1s\]\]', '[[e\\1]]s'),
(r'\[\[F(.*?)\|f\1s\]\]', '[[f\\1]]s'),
(r'\[\[G(.*?)\|g\1s\]\]', '[[g\\1]]s'),
(r'\[\[H(.*?)\|h\1s\]\]', '[[h\\1]]s'),
(r'\[\[I(.*?)\|i\1s\]\]', '[[i\\1]]s'),
(r'\[\[J(.*?)\|j\1s\]\]', '[[j\\1]]s'),
(r'\[\[K(.*?)\|k\1s\]\]', '[[k\\1]]s'),
(r'\[\[L(.*?)\|l\1s\]\]', '[[l\\1]]s'),
(r'\[\[M(.*?)\|m\1s\]\]', '[[m\\1]]s'),
(r'\[\[N(.*?)\|n\1s\]\]', '[[n\\1]]s'),
(r'\[\[O(.*?)\|o\1s\]\]', '[[o\\1]]s'),
(r'\[\[P(.*?)\|p\1s\]\]', '[[p\\1]]s'),
(r'\[\[Q(.*?)\|q\1s\]\]', '[[q\\1]]s'),
(r'\[\[R(.*?)\|r\1s\]\]', '[[r\\1]]s'),
(r'\[\[S(.*?)\|s\1s\]\]', '[[s\\1]]s'),
(r'\[\[T(.*?)\|t\1s\]\]', '[[t\\1]]s'),
(r'\[\[U(.*?)\|u\1s\]\]', '[[u\\1]]s'),
(r'\[\[V(.*?)\|v\1s\]\]', '[[v\\1]]s'),
(r'\[\[W(.*?)\|w\1s\]\]', '[[w\\1]]s'),
(r'\[\[X(.*?)\|x\1s\]\]', '[[x\\1]]s'),
(r'\[\[Y(.*?)\|y\1s\]\]', '[[y\\1]]s'),
(r'\[\[Z(.*?)\|z\1s\]\]', '[[z\\1]]s'),
(r'\[\[A(.*?)\|a\1\'s\]\]', '[[a\\1]]\'s'),
(r'\[\[B(.*?)\|b\1\'s\]\]', '[[b\\1]]\'s'),
(r'\[\[C(.*?)\|c\1\'s\]\]', '[[c\\1]]\'s'),
(r'\[\[D(.*?)\|d\1\'s\]\]', '[[d\\1]]\'s'),
(r'\[\[E(.*?)\|e\1\'s\]\]', '[[e\\1]]\'s'),
(r'\[\[F(.*?)\|f\1\'s\]\]', '[[f\\1]]\'s'),
(r'\[\[G(.*?)\|g\1\'s\]\]', '[[g\\1]]\'s'),
(r'\[\[H(.*?)\|h\1\'s\]\]', '[[h\\1]]\'s'),
(r'\[\[I(.*?)\|i\1\'s\]\]', '[[i\\1]]\'s'),
(r'\[\[J(.*?)\|j\1\'s\]\]', '[[j\\1]]\'s'),
(r'\[\[K(.*?)\|k\1\'s\]\]', '[[k\\1]]\'s'),
(r'\[\[L(.*?)\|l\1\'s\]\]', '[[l\\1]]\'s'),
(r'\[\[M(.*?)\|m\1\'s\]\]', '[[m\\1]]\'s'),
(r'\[\[N(.*?)\|n\1\'s\]\]', '[[n\\1]]\'s'),
(r'\[\[O(.*?)\|o\1\'s\]\]', '[[o\\1]]\'s'),
(r'\[\[P(.*?)\|p\1\'s\]\]', '[[p\\1]]\'s'),
(r'\[\[Q(.*?)\|q\1\'s\]\]', '[[q\\1]]\'s'),
(r'\[\[R(.*?)\|r\1\'s\]\]', '[[r\\1]]\'s'),
(r'\[\[S(.*?)\|s\1\'s\]\]', '[[s\\1]]\'s'),
(r'\[\[T(.*?)\|t\1\'s\]\]', '[[t\\1]]\'s'),
(r'\[\[U(.*?)\|u\1\'s\]\]', '[[u\\1]]\'s'),
(r'\[\[V(.*?)\|v\1\'s\]\]', '[[v\\1]]\'s'),
(r'\[\[W(.*?)\|w\1\'s\]\]', '[[w\\1]]\'s'),
(r'\[\[X(.*?)\|x\1\'s\]\]', '[[x\\1]]\'s'),
(r'\[\[Y(.*?)\|y\1\'s\]\]', '[[y\\1]]\'s'),
(r'\[\[Z(.*?)\|z\1\'s\]\]', '[[z\\1]]\'s'),
(r'\[\[(.*?)\|\'\'\1\'\'\]\]', '\'\'[[\\1]]\'\''),
(r'\'\'\[\[(.*?) \((.*)\)\|\1\]\]\'\' ', '[[\\1 (\\2)|\'\'\\1\'\']] '),
(r' \'\'\[\[(.*?) \((.*)\)\|\1\]\]\'\'', ' [[\\1 (\\2)|\'\'\\1\'\']]'),
(r'\=\= (.*?) \=\=', '==\\1=='),
(r'\=\=\n\n', '==\n'),
]
}
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Files:
# python3.9 pwb.py replace -pt:0 -ns:6 -xml:starwars_pages_current.xml -fix:image
# OR
# python3.9 pwb.py replace -pt:0 -ns:6 -ref:"Template:Information" -fix:image
fixes['image'] = {
'regex': True,
'msg': {
'_default': 'Formatting fixes',
},
'replacements': [
(r'\=\= Summary \=\=\n\=\=Summary\=\=', '==Summary=='),
(r'\=\= Summary \=\=', '==Summary=='),
(r'\=\=Summary\=\=\n\{\{AurebeshArialBold\}\}', '{{AurebeshArialBold}}'),
]
}
# python3.9 pwb.py add_text -pt:0 -ns:6 -start:File:! -text:"==Summary==" -except:"\=\=( |)(S|s)ummary( |)\=\=" -up
# ---- mind out for {{AurebeshArialBold}}
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Stolen formatting fixes - https://github.com/wikimedia/pywikibot/blob/master/pywikibot/fixes.py#L241
Other useful bot code
Comics:
(r'\{\{IDWAdventuresCite\|issue\=', '{{IDWAdventuresCite|year=2017|issue='),
(r'\[\[Title Number\|\'\'Title\'\' Number\]\]', '[[Title (Year) Number|\'\'Title\'\' Number]]'),
(r'\'\'\[\[Title Number\]\]\'\'', '[[Title (Year) Number|\'\'Title\'\' Number]]'),
(r'\[\[Title Number\|', '[[Title (Year) Number|'),
(r'\[\[Title Number\]\]', '[[Title (Year) Number]]'),
(r'Title Number\}\}', 'Title (Year) Number}}'),
(r'Images from Title Number', 'Images from Title (Year) Number'),
Removing navboxes:
(r'\}\}\n\{\{Sith(_| )Empire(_| )organizations\}\}\n', '}}\n'),
(r'\n\{\{Sith(_| )Empire(_| )organizations\}\}\n\{\{', '\n{{'),
(r'\n\n\{\{Sith(_| )Empire(_| )organizations\}\}\n', '\n'),
(r'\{\{Sith(_| )Empire(_| )organizations\}\}', ''),
Random bot stuff I never finished
Appearances sections removing spaces
Redoing current formatting fixes with ( |)
Line breaks around {{Stub}}
title=''{{PAGENAME}}''
Images with ( |) OR ( |_)
\'\'\[\[(.*)\|(.*)\]\]\'\' -> [[\\1|\'\'\\2\'\']]
[[(.)|\\1{2,}]] -> [[(.)|\\1{2,}]]
-dotall
\{\{Interlang(.*)\|(.*) \= (.*) -> |\\1=\\2
— -> —
— -> —
\[\[(.*?)\|(.*?)\]\]?
[[(<incorrect thing>|(.*)]]
|(de|ja|es| etc)\=(.*?)\n|(de|ja|es| etc)\=(.*?) -> |de=\\1|es=\\1
(r'\'\'\[\[Star Wars Helmet Collection ([1-9]+)\]\]\'\'', '[[Star Wars Helmet Collection \\1|\'\'Star Wars Helmet Collection\'\' \\1]]'),
(r'\'\'\[\[Star Wars Bust Collection ([1-9]+)\]\]\'\'', '[[Star Wars Bust Collection \\1|\'\'Star Wars Bust Collection\'\' \\1]]'),
(r'\'\'\[\[Star Wars\: Build the Millennium Falcon ([1-9]+)\]\]\'\'', '[[Star Wars: Build the Millennium Falcon \\1|\'\'Star Wars: Build the Millennium Falcon\'\' \\1]]'),
(r'\'\'\[\[Star Wars\: Build Your Own R2-D2 ([1-9]+)\]\]\'\'', '[[Star Wars: Build Your Own R2-D2 \\1|\'\'Star Wars: Build Your Own R2-D2\'\' \\1]]'),
(r'\'\'\[\[Star Wars\: Build Your Own X-Wing ([1-9]+)\]\]\'\'', '[[Star Wars: Build Your Own X-Wing \\1|\'\'Star Wars: Build Your Own X-Wing\'\' \\1]]'),
Other stuff I was planning on doing
- See User:Tommy-Macaroni/To-do