User:SOTO/bot

Manual test with SV7 account

“This is a test.”

The War Doctor # X .3

To-do
 python pwb.py replace -regex "\{\{real world\}\}\n\{\{(.*?)stub\}\}\n\{\{title dab away\}\}\n([\s\S]*?)\}\}" "\n\n\2}}" -page:"The Curious Case of the Misery Diary (short story)" -transcludes:"real world" -pt:2 -summary:"Standardising template order"  python pwb.py replace -regex "==( *)External link( *)==" "==\1External links\2==" -summary:"Standardising *External links* heading" -start:! -pt:2  python pwb.py replace -catr:"Lists of appearances" -regex "=( *)Comic( *)=" "=\1Comics\2=" "=( *)IDW publishing( *)=" "=\1IDW Publishing\2=" "=( *)Titan comics( *)=" "=\1Titan Comics\2=" "=( *)IDW( *)=" "=\1IDW Publishing\2=" "=( *)Titan( *)=" "=\1Titan Comics\2=" "=( *)Marvel( *)=" "=\1Marvel Comics\2=" -pt:2
 * Move punctuation to before source.
 * Remove from pages with.
 * Make sure is everywhere beginning with "A" or "The".
 * Make sure is on all character pages, and all real world people pages, where applicable.
 * Also and.
 * is at least missing from DWDVDF issues
 * Remove  and   from transclusions of  and.
 * Ensure and  are below all other templates on the page (must be at the bottom).
 * Fix instances like
 * Put stub templates after.
 * Differentiate between "Bernice Summerfield audio stories" and "Bernice Summerfield" navs in infoboxes, such as at The Judas Gift.

 python pwb.py replace -regex -ref:"Police" -catr:"Police officers" "([Pp]olice) officer" "\1 officer" "\[\[([Pp]olice)\|([Pp]olice)(man|men| officer)\]\]" "\2\3" "([Pp]olice)\{\{\!\}\}(Police officer|Policeman)" "Police officer" "\[\[([Pp]olice)\]\] officer" "\1 officer" "\[\[([Pp]olice)\]\](man|men)" "\1\2" "\[\[([Pp]olice)\]\] (car|\[\[car\]\])" "\1 car" "([Pp]olice) (car|\[\[car\]\])" "\1 car" "\[\[([Pp])olice officer\]\]s\]\]" "\1olice officers]]" "\[\[\[\[([Pp])olice officer\]\]" "[[\1olice officer" "job( *)=( *)\[\[Police officer\]\]" "job\1=\2Police officer" -summary:"Linking" -pt:2 -excepttext:"\[\[police (car|officer)\]\]"

 python pwb.py replace -regex "(\|\|\)" "" -summary:"Removing empty tags" -pt:2 -start:!  python pwb.py replace -regex "\[\[(TV|AUDIO|COMIC|PROSE|GAME|REF|DOC|WC|NOTVALID)\]\]: \[\[(.*?) \((.*?)\)\|(.*?)\]\]" "\1: \4" -summary:"Piped italics fix" -start:! -pt:2  python pwb.py replace -regex "\[\[(.*?)\|\1\]\]" "\1" "\[\[(.*?) \((.*?)\)\|\1\]\]" "\1" -summary:"Piped italics fix: P2" -start:! -pt:2  python pwb.py replace -regex "\[\[(.*?)\|(.*?)\]\]" "\2" -summary:"Piped italics fix: P3" -start:! -pt:2
 * Fix for "|thumb", with underscores and with spaces.


 * Get "Footnotes" after "External links", where it's incorrectly placed before.


 * Implement and  from URLs, mobile and desktop

 python pwb.py replace -regex "\[\[(:wikipedia|wikipedia):(.*?)\|(.*?)\]\]" "" "\[\[(:wikipedia|wikipedia):(.*?)\|(.*?)\]\]" "" "\{\{(w|wi)\|(.*?)\|\2\}\}" "" "\{\{(w|wi)\|(\w)(.*?)\|(\w)\3\}\}" "" "\{\{(w|wi)\|(\w)(.*?)\|(\w)\3(s)\}\}" "" -summary:" and " -start:! -pt:2


 * Category:Stories by theme music

Continue immediately
 python pwb.py replace "{{Infobox_" "{{Infobox " -summary:"Infobox" -start:"John Harrison" -pt:2  python pwb.py replace -regex "==( *)External Links( *)==" "==\1External links\2==" -summary:"T:HEAD" -start:"The Lady" -pt:2 <pre style="background:black!important;color:white"> python pwb.py replace -regex "\{\{Infobox([\s\S]*?)\}\}\n\{\{([Yy]ou may)" "{{Infobox\1}}{{you may" "\{\{Infobox([\s\S]*?)\}\}\n\{\{([Dd]ab page)" "{{Infobox\1}}{{dab page" "\{\{Infobox([\s\S]*?)\}\}\n\{\{([Ww]ikipediainfo)" "{{Infobox\1}}{{wikipediainfo" "(\}\}\{\{|\{\{)([sS]tub|.*? stub|looks like\|.*?|wikipediainfo|wikipediainfo\|.*?)\}\}\{\{(you may|dab page)" "\1\2}}\n{{\3" "\n\}\}\{\{(.*?)\}\}\{\{(you may|dab page|wikipediainfo)" "\n}}{{\1}///}{{\2" "\{\{Infobox([\s\S]*?)(\]\]|\)|\w)\}\}\{\{(you may|dab page|wikipediainfo)" "{{Infobox\1\2\n}}{{\3" "\}\/\/\/\}" "}}" "\{\{Infobox([\s\S]*?)\}\}\n\n" "{{Infobox\1}}\n" -summary:"Spacing" -start:Dom -pt:2 <pre style="background:black!important;color:white"> python pwb.py replace -regex "\[\[(:wikipedia|wikipedia):(.*?)\|(.*?)\]\]" "{{wi|\2|\3}}" "\[\[(:wikipedia|wikipedia):(.*?)\|(.*?)\]\]" "{{w|\2|\3}}" "\{\{(w|wi)\|(.*?)\|\2\}\}" "{{\1|\2}}" "\{\{(w|wi)\|(\w)(.*?)\|(\w)\3\}\}" "{{\1|\4\3}}" "\{\{(w|wi)\|(\w)(.*?)\|(\w)\3(s)\}\}" "{{\1|\4\3|\4\3s}}" -summary:"{{w}} and {{wi}}" -start:Kevin -pt:2 <pre style="background:black!important;color:white"> python pwb.py replace -regex "(The Bill|Upstairs, Downstairs|Upstairs Downstairs|Emmerdale|Game of Thrones|I Love Lucy|Wonder Woman|The X-Files|Orange is the New Black|Out of the Unknown|Dixon of Dock Green|CSI|Call the Midwife|Britain's Got Talent|Blake's 7|Hollyoaks|The Tomorrow People|Space: 1999|The Hitchhiker's Guide to the Galaxy|Downton Abbey|EastEnders|Eastenders|Juliet Bravo|Bergerac|Bob the Builder|Fireman Sam|Crossroads|Falcon Crest|Baywatch|Dynasty|The Sweeney|Z-Cars|Z Cars|Doomwatch|Wuthering Heights|Bridget Jones|War and Peace|War & Peace|Pride and Prejudice|Great Expectations|King Lear|The Three Musketeers|The Musketeers|Sherlock Holmes)" "\1" "\[\[\[\[(The Bill|Upstairs, Downstairs|Upstairs Downstairs|Emmerdale|Game of Thrones|I Love Lucy|Wonder Woman|The X-Files|Orange is the New Black|Out of the Unknown|Dixon of Dock Green|CSI|Call the Midwife|Britain's Got Talent|Blake's 7|Hollyoaks|The Tomorrow People|Space: 1999|The Hitchhiker's Guide to the Galaxy|Downton Abbey|EastEnders|Eastenders|Juliet Bravo|Bergerac|Bob the Builder|Fireman Sam|Crossroads|Falcon Crest|Baywatch|Dynasty|The Sweeney|Z-Cars|Z Cars|Doomwatch|Wuthering Heights|Bridget Jones|War and Peace|War & Peace|Pride and Prejudice|Great Expectations|King Lear|The Three Musketeers|The Musketeers|Sherlock Holmes)\]\]\]\]" "\1" "\[\[(The Bill|Upstairs, Downstairs|Upstairs Downstairs|Emmerdale|Game of Thrones|I Love Lucy|Wonder Woman|The X-Files|Orange is the New Black|Out of the Unknown|Dixon of Dock Green|CSI|Call the Midwife|Britain's Got Talent|Blake's 7|Hollyoaks|The Tomorrow People|Space: 1999|The Hitchhiker's Guide to the Galaxy|Downton Abbey|EastEnders|Eastenders|Juliet Bravo|Bergerac|Bob the Builder|Fireman Sam|Crossroads|Falcon Crest|Baywatch|Dynasty|The Sweeney|Z-Cars|Z Cars|Doomwatch|Wuthering Heights|Bridget Jones|War and Peace|War & Peace|Pride and Prejudice|Great Expectations|King Lear|The Three Musketeers|The Musketeers|Sherlock Holmes)\]\]" "\1" "\[\[Eastenders\]\]" "EastEnders" "\[\[Z Cars\]\]" "Z-Cars" "\[\[Upstairs Downstairs\]\]" "Upstairs, Downstairs" "Dallas" "Dallas (TV series)" "Agatha Christie's Poirot" "Agatha Christie's [[Poirot" "Agatha Christie's Marple" "Agatha Christie's Marple" "\{\{wi\|(Star Trek: Deep Space Nine)\}\}" "\1" "(Star Trek: Deep Space Nine)" "\1" "(Hamlet|Macbeth|Star Wars|Tarzan|The Hobbit|Star Trek|Quantum Leap|Babylon 5|Superman)" "\1" "\[\[\[\[(Hamlet|Macbeth|Star Wars|Tarzan|The Hobbit|Star Trek|Quantum Leap|Babylon 5|Superman)\]\]\]\]" "\1" "Robin Hood: Prince of Thieves" "Robin Hood: Prince of Thieves" "Richard III" "Richard III" "Prometheus" "Prometheus" "The Hitchhicker's Guide to the Galaxy" "The Hitchhiker's Guide to the Galaxy" "The Hitchhickers Guide to the Galaxy" "The Hitchhiker's Guide to the Galaxy" "The Hitchhikker's Guide to the Galaxy" "The Hitchhiker's Guide to the Galaxy" "The Hitch-Hickers Guide to the Galaxy" "The Hitchhiker's Guide to the Galaxy" "War & Peace" "War & Peace" "{{iw|thebill|The Bill}}" "The Bill" -summary:"linking" " covers all licensed \[\[Star Wars\]\] works" " covers all licensed Star Wars works" -pt:2 -start:! <pre style="background:black!important;color:white"> python pwb.py replace -summary:"Cosmetic infobox fixes" -regex "\{\{Infobox([\s\S]*)\n\|\}\}" "{{Infobox\1\n}}" "\{\{Infobox([\s\S]*)( *)\|\}\}" "{{Infobox\1\n}}" -pt:2 -start:"Doctor Who Experience" <pre style="background:black!important;color:white"> python pwb.py replace -summary:"Cosmetic infobox fixes" -regex "\|( *)(only|first|first mention)( *)=( *)(.*?) \((.*?)\)\|\3" "|\1\2\3=\4\5 (\6)" -pt:2 -start:"Art" -always <pre style="background:black!important;color:white"> python pwb.py replace -regex "\n\{\{\#ifeq:\{\{PAGENAME\}\}\|(.*)\|\}\}" "" -summary:"-preload remnant" -pt:2 -start:"Eye" <pre style="background:black!important;color:white"> python pwb.py replace -links:"Kiss" "kiss" "kiss" -excepttext:"kiss" -pt:2 <pre style="background:black!important;color:white;fontsize:.5em"> python pwb.py replace -cat:"Production team titles" "he is she is" "they are" "he or she" "they" -pt:2
 * Check phone for further runs

Then
<pre style="background:black!important;color:white;font-size:.9em"> python pwb.py replace -regex "\[\[Category:(.*? interviewed on The Fan Show)\]\]\n([\s\S]*)\n\[\[Category:(.*?)\]\]" "\2\n\n" "\[\[Category:(.*? interviewed on The Fan Show)\]\]\n\[\[Category:(.*?)\]\]" "\n" "\[\[Category:(.*? interviewed on Toby Hadoke's Who's Round)\]\]\n([\s\S]*)\n\[\[Category:(.*?)\]\]" "\2\n\n" "\[\[Category:(.*? interviewed on Toby Hadoke's Who's Round)\]\]\n\[\[Category:(.*?)\]\]" "\n" "\[\[Category:(.*? interviewed on Doctor Who Extra)\]\]\n([\s\S]*)\n\[\[Category:(.*?)\]\]" "\2\n\n" "\[\[Category:(.*? interviewed on Doctor Who Extra)\]\]\n\[\[Category:(.*?)\]\]" "\n" "\[\[Category:(.*? interviewed on Doctor Who Live)\]\]\n([\s\S]*)\n\[\[Category:(.*?)\]\]" "\2\n\n" "\[\[Category:(.*? interviewed on Doctor Who Live)\]\]\n\[\[Category:(.*?)\]\]" "\n" "\[\[Category:(Totally Doctor Who guests)\]\]\n([\s\S]*)\n\[\[Category:(.*?)\]\]" "\2\n\n" "\[\[Category:(Totally Doctor Who guests)\]\]\n\[\[Category:(.*?)\]\]" "\n" "\[\[Category:(.*? interviewed on Torchwood Declassified)\]\]\n([\s\S]*)\n\[\[Category:(.*?)\]\]" "\2\n\n" "\[\[Category:(.*? interviewed on Torchwood Declassified)\]\]\n\[\[Category:(.*?)\]\]" "\n" "\[\[Category:(.*? interviewed on Doctor Who Confidential)\]\]\n([\s\S]*)\n\[\[Category:(.*?)\]\]" "\2\n\n" "\[\[Category:(.*? interviewed on Doctor Who Confidential)\]\]\n\[\[Category:(.*?)\]\]" "\n" "-summary:Bringing interview cats to the bottom" -pt:2 -cat:"People interviewed on Doctor Who Extra" -cat:"People interviewed on Doctor Who Live" -cat:"People interviewed on The Fan Show" -catr:"People interviewed on Toby Hadoke's Who's Round"

<pre style="background:black!important;color:white;font-size:.8em"> python pwb.py replace -regex "\|( *)featuring( *)=( *)\[\[Trey\|Lady Trey\]\]" "|\1featuring\2=\3Lady Trey" "\|( *)featuring( *)=( *)(.*?)\[\[Trey\|Lady Trey\]\]" "|\1featuring\2=\3\4Lady Trey" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11\n|\1featuring9\2=\3\12\n|\1featuring10\2=\3\13" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11\n|\1featuring9\2=\3\12" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11\n|\1featuring9\2=\3\12\n|\1featuring10\2=\3\13" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11\n|\1featuring9\2=\3\12" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6" "\n\|( *)featuring( *)=( *)\{\{il\|\[\[(.*?)\]\]\|\[\[(.*?)\]\]\}\}" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11\n|\1featuring9\2=\3\12\n|\1featuring10\2=\3\13" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11\n|\1featuring9\2=\3\12" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10\n|\1featuring8\2=\3\11" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9\n|\1featuring7\2=\3\10" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8\n|\1featuring6\2=\3\9" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7\n|\1featuring5\2=\3\8" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6\n|\1featuring4\2=\3\7" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5\n|\1featuring3\2=\3\6" "\n\|( *)featuring( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1featuring\2=\3\4\n|\1featuring2\2=\3\5" "\|( *)featuring( *)=( *)(Alistair Gordon.*?-Stewart\|The Brigadier|\[\[Alistair Gordon.*?-Stewart\|The Brigadier\]\])" "|\1featuring\2=\3The Brigadier" "\|( *)featuring( *)=( *)(Alistair Gordon Lethbridge-Stewart\|The Brig|\[\[Alistair Gordon Lethbridge-Stewart\|The Brig\]\]|\[\[The Brig\]\])" "|\1featuring\2=\3The Brig" "\|( *)(featuring\d+)( *)=( *)(.*?)\|(.*?)\n" "|\1\2\3=\4\5\n" "\|( *)(featuring\d+)( *)=( *)(.*?)\|(.*?)\n" "|\1\2\3=\4\5\n" "\|( *)(featuring\d+)( *)=( *)(.*?)\|(.*?)\n" "|\1\2\3=\4\5\n" "-summary:Autolinking featuring variable" -pt:2 "\|( *)(featuring\d)  " "|\1\2  " "\|( *)(featuring\d\d)    " "|\1\2  " -start:"Doctor"

<pre style="background:black!important;color:white;font-size:.7em"> python pwb.py replace -regex "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10\n|\1interviewee8\2= \11\n|\1interviewee9\2= \12\n|\1interviewee10\2= \13\n|\1interviewee11\2= \14" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10\n|\1interviewee8\2= \11\n|\1interviewee9\2= \12\n|\1interviewee10\2= \13" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10\n|\1interviewee8\2= \11\n|\1interviewee9\2= \12" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10\n|\1interviewee8\2= \11" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\], \[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\n" "\n|\1interviewee\2= \4\n" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10\n|\1interviewee8\2= \11\n|\1interviewee9\2= \12\n|\1interviewee10\2= \13" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10\n|\1interviewee8\2= \11\n|\1interviewee9\2= \12" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10\n|\1interviewee8\2= \11" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9\n|\1interviewee7\2= \10" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8\n|\1interviewee6\2= \9" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\|(.*?)\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7\n|\1interviewee5\2= \8" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6\n|\1interviewee4\2= \7" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5\n|\1interviewee3\2= \6" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\|(.*?)\}\}" "\n|\1interviewee\2= \4\n|\1interviewee2\2= \5" "\n\|( *)interviewee( *)=( *)\{\{il\|(.*?)\}\}\n" "\n|\1interviewee\2= \4\n" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5\n|interviewee3\2= \6\n|interviewee4\2= \7\n|interviewee5\2= \8\n|interviewee6\2= \9\n|interviewee7\2= \10\n|interviewee8\2= \11\n|interviewee9\2= \12\n|interviewee10\2= \13" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5\n|interviewee3\2= \6\n|interviewee4\2= \7\n|interviewee5\2= \8\n|interviewee6\2= \9\n|interviewee7\2= \10\n|interviewee8\2= \11\n|interviewee9\2= \12" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5\n|interviewee3\2= \6\n|interviewee4\2= \7\n|interviewee5\2= \8\n|interviewee6\2= \9\n|interviewee7\2= \10\n|interviewee8\2= \11" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5\n|interviewee3\2= \6\n|interviewee4\2= \7\n|interviewee5\2= \8\n|interviewee6\2= \9\n|interviewee7\2= \10" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5\n|interviewee3\2= \6\n|interviewee4\2= \7\n|interviewee5\2= \8\n|interviewee6\2= \9" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5\n|interviewee3\2= \6\n|interviewee4\2= \7\n|interviewee5\2= \8" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5\n|interviewee3\2= \6\n|interviewee4\2= \7" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5\n|interviewee3\2= \6" "\n\|( *)interviewee( *)=( *)\[\[(.*?)\]\]\<br */*\>\[\[(.*?)\]\]" "\n|\1interviewee\2= \4\n|interviewee2\2= \5" "\|( *)(interviewee|\1interviewee.*)( *)=( *)(.*?)\|(.*?)\n" "|\1\2\3=\4\5\n" "\|( *)(interviewee|\1interviewee.*)( *)=( *)(.*?)\|(.*?)\n" "|\1\2\3=\4\5\n" "\|( *)(interviewee|\1interviewee.*)( *)=( *)(.*?)\|(.*?)\n" "|\1\2\3=\4\5\n" "\|( *)(interviewee\d)  " "|\1\2  " "\|( *)(interviewee\d\d)    " "|\1\2  " -summary:"Autolinking interviewee variable" -pt:2 -start:"D"

<pre style="background:black!important;color:white"> python pwb.py replace -cat:"Disambiguation pages" -regex "\*( *)\[\[(.*?) \((.*?)\)\|\2\]\]" "*\1\2 (\3)" "\*( *)\[\[(.*?) \((.*?)\)\|\2\]\]" "*\1\2 (\3)" -pt:2

Test
This is the test. Yes, very boring.

Manual work
<pre style="background:black!important;color:white"> python pwb.py replace -cat:"Pages with inline Wikipedia links that correspond to pages at Tardis" -regex "\{\{(w|wi)\|(.*?)\|\2\}\}" "" "\{\{wi\|(.*?)\}\}" "\1" "\{\{w\|(.*?)\}\}" "\1" -pt:2 -summary:"We have a page for this at Tardis" <pre style="background:black!important;color:white"> python pwb.py replace -catr:"Stories" -regex "\{\{(w|wi)\|(.*?)\|\2\}\}" "" "\{\{wi\|(.*?)\}\}" "\1" "\{\{w\|(.*?)\}\}" "\1" -pt:2

Semi-manual work

 * Change Scientific Adviser links, and redirect to scientific advisor.
 * Perhaps move scientific advisor.

<pre style="background:black!important;color:white"> python pwb.py replace -transcludes:"real world" -regex "\{\{(.*?)stub\}\}\n\{\{[Tt]itle dab away\}\}\n\{\{[Rr]eal world\}\}" "\n\n" "\{\{[Tt]itle dab away\}\}\n\{\{(.*?)stub\}\}\n{\{[Rr]eal world\}\}" "\n\n" "\{\{real world\}\}\{\{(.*?)stub\}\}\n\{\{title dab away\}\}\n([\s\S]*?)\}\}" "\n\n\2}}" "\{\{ImageLink(.*?)\}\}\{\{real world\}\}\{\{title dab away\}\}\{\{Infobox" "\n\n\n{{Infobox" "\{\{ImageLink(.*?)\}\}( *)\n\{\{[Rr]eal world\}\}( *)\n\{\{[Tt]itle dab away\}\}" "\n\n" "\{\{ImageLink(.*?)\}\}\{\{[Rr]eal world\}\}\{\{[Tt]itle dab away\}\}" "\n\n{{ImageLink\1}}" "\{\{[Rr]eal world\}\}\{\{[Tt]itle dab away\}\}" "\n" "\{\{real world\}\}\{\{[Rr]etitle\|(\'\'|.)(\{\{PAGENAME\}\})(\'\'|.)\}\}" "{{retitle|\1\2\3}}\n" "\{\{real world\}\}\{\{[Rr]etitle\|(.*?)\}\}" "{{retitle|\1}}\n" "\{\{real world\}\}\{\{ImageLink(.*?)\}\}\{\{[Tt]itle dab away\}\}" "\n\n{{ImageLink\1}}" "\{\{real world\}\}\{\{target years\}\}" "{{real world}}\n{{target years}}" "\{\{real world\}\} \n" "{{real world}}\n" "\{\{real world\}\}(.+)\n" "{{real world}}\n\1\n" "\{\{real world\}\}\n\n" "{{real world}}\n" "\{\{real world\}\}\n\{\{(.*?)stub\}\}\n\{\{title dab away\}\}\n([\s\S]*?)\}\}" "\n{{real world}}\n\2}}" -pt:2 -summary:"Standardising template spacing and order"

<pre style="background:black!important;color:white"> python pwb.py replace -start:"The Hopes" -regex "\*( *)\[(http|https)://(.*?) (.*?) (website|site|Website|Site|homepage|home page)]" "" -pt:2

<pre style="background:black!important;color:white"> python pwb.py replace -start:"Cyberman" -regex "\*( *)\[(http|https)://(.*?) (.*?) (site|Site)]" "" -pt:2

<pre style="background:black!important;color:white"> python pwb.py replace -start:"Alexei" -regex "\*( *)\[(http|https)://(.*?) (.*?) (Site|Website|homepage|home page)]" "" -pt:2

<pre style="background:black!important;color:white"> python pwb.py replace -start:"A" -regex "\*( *)\[(http|https)://(.*?) (.*?) (homepage|home page)]" "" -pt:2

Semi-manual work
<pre style="background:black!important;color:white"> python pwb.py replace -start:A -regex "\*( *)\[(http|https)://(.*?) (.*?) (website|site|Website|Site)]" "" -pt:2

Automatic runs
<pre style="background:black!important;color:white"> python pwb.py replace -transcludes:"real world" "" "" -summary:"standardising capitalisation on " -pt:2