User:Magill-bot/scripts/user-fixes.py
Jump to navigation
Jump to search
- user-fixes.py - RTC's version of the user-fixes. It serves as a historical record of bot changes.
- See: User:Magill-bot for an explanation
# -*- coding: utf-8 -*- # # This is only an example. Don't use it. - but do use my fixes below # fixes['example'] = { 'regex': True, 'msg': { '_default':u'no summary specified', }, 'replacements': [ (ur'\bword\b', u'two words'), ] } # my fixes fixes['foo1'] = { 'regex': True, 'msg': { 'en':u'Robot: replace test 1', }, 'replacements': [ (ur'\bfoo\b', u'fooray'), (ur'\bbar\b', u'barley'), (ur'\b(baz)\b', ur'\1ra'), (ur'\bram\b', u'rambo'), ] } fixes['foo2'] = { 'regex': True, 'msg': { 'en':u'Robot: replace test 2', }, 'replacements': [ (ur'\bfooray\b', u'foo'), (ur'\bbarley\b', u'bar'), (ur'\b(baz)ra\b', ur'\1'), (ur'\brambo\b', u'ram'), ] } # rename icon # python movepages.py -from:"File:Egg-icon.png" -to:"File:Egg 1 (quest)-icon.png" # python replace_lotro.py -nopreload -filelinks:"Egg-icon.png" -fix:RenameIcon -pt:2 fixes['RenameIcon'] = { 'regex': True, 'msg': { '_default':u'Robit: rename icon', }, 'replacements': [ (ur'\[\[\s*[Ff]ile:\s*Basket-icon.png\s*\]\]', u'[[File:Basket 1 (quest)-icon.png]]'), (ur'(?P<pre>icon\s*=\s*)Basket-icon', u'\g<pre>Basket 1 (quest)-icon'), (ur'\bBasket-icon\b', u'Basket 1 (quest)-icon'), ] } # fix Gath Forthnir # python replace_lotro.py -nopreload -fix:patch1 "-ref:Gath Forthnir" -pt:2 fixes['patch1'] = { 'regex': False, 'msg': { 'en':u'Robot: fix Gath Forthnir', }, 'replacements': [ (ur'Gath Forthnir', u'Gath Forthnír'), ] } # fix Esteldin # python replace_lotro.py -nopreload -fix:patch2 "-ref:Esteldin" -pt:2 fixes['patch2'] = { 'regex': False, 'msg': { 'en':u'Robot: fix Esteldin', }, 'replacements': [ (ur'Esteldin', u'Esteldín'), ] } # standarize player name fixes['PlayerName'] = { 'regex': True, 'msg': { 'en':u'Robot: standardize player name', }, 'replacements': [ (ur'<Class>', u'<class>'), (ur'<Name>', u'<name>' ), (ur'<Race>', u'<race>' ), (ur'<[Pp]layer [Cc]lass>', u'<class>'), (ur'<[Pp]layer [Nn]ame>', u'<name>' ), (ur'<[Pp]layer [Rr]ace>', u'<race>' ), (ur'<[Pp]layer>', u'<name>' ), (ur'\([Yy]our [Nn]ame\)', u'<name>' ), (ur'\([Yy]our [Cc]lass\)', u'<class>'), (ur'\([Yy]our [Rr]ace\)', u'<race>' ), (ur'\[[Pp]layer [Cc]lass]', u'<class>'), (ur'\[[Pp]layer [Nn]ame]', u'<name>' ), (ur'\[[Pp]layer [Rr]ace]', u'<race>' ), (ur'\[[Pp]layer]', u'<name>' ), (ur'\[[Yy]our [Nn]ame]', u'<name>' ), (ur'\[[Yy]our [Cc]lass]', u'<class>'), (ur'\[[Yy]our [Rr]ace]', u'<race>' ), (ur'\([Cc]haracter [Nn]ame\)', u'<name>' ), (ur'<[Cc]haracter [Nn]ame>', u'<name>' ), ] } # convert tables to questbox templates fixes['table2Questbox'] = { 'regex': True, 'dotall': True, 'msg': { 'en':u'Robot: convert table to Questbox', }, 'replacements': [ ( ur'''\{\| class="stocktable collapsible(?P<colsp>(?: )?)(?P<coled>(?:collapsed)?)" width=\d+px *\r? !style="[^"]+"\| (?P<title>(?:Walkthrough & Notes)|(?:Rewards)|(?:Quest Text)|(?:Quest Chain)|(?:Daily Base Rewards)|(?:Related Quests)|(?:Quest Arc)) *\r? \|- *\r? \|\|?(?P<tocr>(?: \{\{toc-right}})?) *\r? (?P<body>.*?) \|}''' , u'''{{Questbox| \\g<title> |\\g<colsp>\\g<coled>\\g<colsp>|\\g<tocr> \\g<body> }}''') , ] } # standardize selectable rewards text fixes['SelectableRewards'] = { 'regex': True, 'msg': { 'en':u'Robot: fix Selectable Rewards', }, 'replacements': [ ( ur'^=== ?[Ss]electable [Rr]ewards:? ?=== *\r?$' , u"'''Selectable Rewards:'''") , ( ur'^[Cc]hoose [Oo]ne:? *\r?$' , u"'''Selectable Rewards:'''") , ( ur'^[Ss]electable [Rr]ewards:? *\r?$' , u"'''Selectable Rewards:'''") , ( ur"^'''[Ss]electable [Rr]ewards:?''':? *\r?$" , u"'''Selectable Rewards:'''") , ( ur"^'''[Cc]hoose [Oo]ne:?''':? *\r?$" , u"'''Selectable Rewards:'''") , ] } # use Template:Reward and Template:IXP # python replace_lotro.py -nopreload -multiline -fix:Rewards "-catr:Quest by Level" -ns:102 # python replace_lotro.py -nopreload -multiline -fix:Rewards "-ref:Item:Gift Mathom" -ns:102 fixes['Rewards'] = { 'regex': True, 'msg': { 'en':u'Robot: use Template:Reward,Template:IXP', }, 'replacements': [ ( ur'^=== *Selectable +[Rr]ewards?:? *===\r?$' , u"'''Selectable Rewards:'''") , ( ur'^Choose +[Oo]ne: *\r?$' , u"'''Selectable Rewards:'''") , ( ur'^Selectable +[Rr]ewards?:? *\r?$' , u"'''Selectable Rewards:'''") , ( ur"^''' *Selectable +[Rr]ewards?:? *''' *\r?$" , u"'''Selectable Rewards:'''") , ( ur"\{\{IXP *\| *(?P<ixp1>\d+)(?P<ixp2>\d\d\d) *}}" , u"{{IXP|\\g<ixp1>,\\g<ixp2>}}") , ( ur"\{\{Quest Rep *\| *(?P<faction>[^|]+?) *\| *(?P<rep1>\d+)(?P<rep2>\d\d\d) *}}" , u"{{Quest Rep|\\g<faction>|\\g<rep1>,\\g<rep2>}}") , ( ur'^\* *\[\[(?:(?:[Ff]ile)|(?:[Ii]mage)):Legendary Item Experience-icon\.png]] Legendary Item Experience *\r?$' , u"* {{IXP}}") , ( ur'^\*\{\{IXP *}}' , u"* {{IXP}}") , ( ur'^\* (?P<count>\d+) \[\[[Ii]tem:(?P<item>.+?)\|.+?]]\r?$' , u"* {{Reward|\\g<item>|\\g<count>}}") , ( ur'^\* *\[\[(?:(?:[Ff]ile)|(?:[Ii]mage)):(?P<icon1>.+?)-icon\.png]] *\[\[[Ii]tem:(?P<item1>.+?)\|[^]]+?]] *\r?$' , u"* {{Reward|\\g<item1>}}") , ( ur'^\* *\[\[(?:(?:[Ff]ile)|(?:[Ii]mage)):(?P<icon2>.+?)-icon\.png]] +(?P<cnt2>\d+) +\[\[[Ii]tem:(?P<item2>.+?)\|[^]]+?]] *\r?$' , u"* {{Reward|\\g<item2>|\\g<cnt2>}}") , ( ur'^\* *\[\[(?:(?:[Ff]ile)|(?:[Ii]mage)):(?P<icon3>.+?)-icon\.png]] *\[\[[Ii]tem:(?P<item3>.+?)\|[^]]+?]] *\((?P<cnt3>\d+)x\) *\r?$' , u"* {{Reward|\\g<item3>|\\g<cnt3>}}") , ( ur'\* *\{\{Item:(?P<item4>[^|]+) *\| *mode *= *imlink *}}' , u"* {{Reward|\\g<item4>|c=yes}}") , ( ur'\* *\{\{Item:(?P<item5>[^|]+) *\| *mode *= *imlink *\| *arg *= *(?P<cnt5>\d+) +(?P<rename5>.*?) *}}' , u"* {{Reward|\\g<item5>|\\g<cnt5>|plural=\\g<rename5>|c=yes}}") , # ( ur'\* *\{\{Reward *\| *Gift Mathom *}}' # , u"* {{Quest Mathom}}") #, ( ur'\*\{\{Reward *\|' , u"* {{Reward|") , ] } # find references to -icon.png # search for "-icon.png" string fixes['IconPng'] = { 'regex': False, 'msg': { 'en':u'Robot: find -icon.png', }, 'replacements': [ ( ur'-icon.png' , u"XXXXXXXXX") , ] } # fix elided end of template and heading # fix "}}==" fixes['BraceEqual'] = { 'regex': False, 'msg': { 'en':u'Robot: fix brace equal', }, 'replacements': [ ( ur'}}==' , u"}}\\n==") , ] } # fix "comment in Template:Infobox Quests parameters" # python replace_lotro.py -nopreload -fix:QuestComments "-search:Override for infobox title" -ns:102 fixes['QuestComments'] = { 'regex': True, 'msg': { 'en':u'Robot: fix quest comments', }, 'replacements': [ ( ur' +<!--Override for infobox title--> *' , u" ") , ( ur' +<!-- 1-\d+/<blank> --> *' , u" ") , ( ur' +<!-- Solo/Fellowship/Small Fellowship/Raid/Solo only \(defaults to solo--> *' , u" ") , ( ur' +<!-- Yes; or blank for No--> *' , u" ") , ( ur' +<!-- if ender == starter these can be removed --> *' , u" ") , ( ur' +<!-- quest group name in quest log \(e\.g\., region, class, introduction, prolog, book #\) --> *' , u" ") , ( ur' +<!-- Class \(lvl 15/30/50(?:/58)? class quests only\) --> *' , u" ") , ( ur' +<!-- Profession \(crafting advancement quests only\) --> *' , u" ") , ( ur' +<!-- Race-specific quests \(Elf, Hobbit, Race of Man or Dwarf\) --> *' , u" ") , ( ur' +<!-- Name of the quest chain \(usually the name of the last quest of the chain\) --> *' , u" ") , ( ur'= +$' , u"= ") , ] } # convert Quest Chain Questbox to questchain parameter # Quest:Chapter 1: Maintaining the Supply Chain fixes['QuestChain1'] = { 'regex': True, 'msg': { 'en':u'Robot: Quest Chain to questchain', }, 'replacements': [ ( ur'}}[ \r\n]*\{\{Questbox\| *Quest Chain *\| *collapsed *\|[ \r\n]*\{\{:?Category: *(?P<chain>[^}]+?) Quests *}}[ \r\n]*}}[ \r]*' , u" | questchain = \\g<chain>\\n}}") , ] } # Move prerequisites from walkthrough to Chain # python replace_lotro.py -nopreload -multiline -fix:PrereqFix -page:Quest:Foul-maw # python replace_lotro.py -nopreload -multiline -fix:PrereqFix "-page:Quest:A Gift of Warmth in Winter" # python replace_lotro.py -nopreload -multiline -fix:PrereqFix "-page:Quest:The Story Behind the Death" # python replace_lotro.py -nopreload -multiline -fix:PrereqFix "-catr:Quest: Level 75" fixes['PrereqFix'] = { 'regex': True, 'msg': { 'en':u'Robot: move prerequisites to quest chain box', }, 'replacements': [ ( ur'\{\{Questbox\| *Walkthrough & Notes *\| *collapsed *\|[ \r]*\n\* Prerequisite(?:(?:[(]s[)])|s)?: None[ \r]*\n\}\}' , u"{{Questbox| Walkthrough & Notes | collapsed |\n* (walkthrough and notes pending)\n}}") , ( ur'\{\{Questbox\| *Walkthrough & Notes *\| *collapsed *\|[ \r]*\n\* Prerequisite(?:(?:[(]s[)])|s)?: None[ \r]*\n\*' , u"{{Questbox| Walkthrough & Notes | collapsed |\n*") , ( ur'\{\{Questbox\| *Walkthrough & Notes *\| *collapsed *\|[ \r]*\n\* Prerequisite(?P<prereq1>.*?)[ \r]*\n\}\}' , u"{{Questbox| Quest Chain | collapsed |\n* Prerequisite\\g<prereq1>\n}}\n\n{{Questbox| Walkthrough & Notes | collapsed |\n* (walkthrough and notes pending)\n}}") , ( ur'\{\{Questbox\| *Walkthrough & Notes *\| *collapsed *\|[ \r]*\n\* Prerequisite(?P<prereq2>.*?)[ \r]*\n\*' , u"{{Questbox| Quest Chain | collapsed |\n* Prerequisite\\g<prereq2>\n}}\n\n{{Questbox| Walkthrough & Notes | collapsed |\n*") , ] } # Find wrongly ordered questboxes # Quest:Chapter 1: Maintaining the Supply Chain # python replace_lotro.py -nopreload -multiline -dotall -fix:QuestboxOrder "-catr:Quest by Level" # python replace_lotro.py -nopreload -multiline -dotall -fix:QuestboxOrder "-catr:Quests: Level 40" # python replace_lotro.py -nopreload -multiline -dotall -fix:QuestboxOrder "-page:Quest:A Villain Unveiled" fixes['QuestboxOrder'] = { 'regex': True, 'dotall': True, 'msg': { 'en':u'Robot: reorder questboxes', }, 'replacements': [ ( ur'''[ \r\n]*\n\{\{Questbox *\| *Quest Text *\|(?P<qb_text1>.*)\n\}\}[ \r\n]*\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew1>.*)\n\}\}[ \r\n]*\n\{\{Questbox *\| *Walkthrough & Notes *\|(?P<qb_wt>.*)\n\}\}''' , u"\n\n{{Questbox| Walkthrough & Notes |\\g<qb_wt>\n}}\n\n{{Questbox| Rewards |\\g<qb_rew1>\n}}\n\n{{Questbox| Quest Text |\\g<qb_text1>\n}}") , ] } # Fix reward number # python replace_lotro.py -nopreload -fix:RewardNum "-catr:Quest by Level" fixes['RewardNum'] = { 'regex': True, 'msg': { 'en':u'Robot: reward num', }, 'replacements': [ ( ur'''{{Reward *\| *(?P<iName>.*?) *\}\} *\((?P<iNum>\d+)x?\)''' , u"{{Reward | \\g<iName> | \\g<iNum> }}") , ] } # Add NOTOC # python replace_lotro.py -nopreload -multiline -fix:AddNoToc "-page:Dievlig Archer" fixes['AddNoToc'] = { 'regex': True, 'msg': { 'en':u'Robot: reward num', }, 'replacements': [ ( ur'''\}\}\n+== *Location *==''' , u"}}\n__NOTOC__\n== Location ==") , ] } # use Template:Reward # Quest:Chapter 1: Maintaining the Supply Chain # python replace_lotro.py -nopreload -multiline -dotall -fix:Item2Reward "-catr:Quest by Level" # python replace_lotro.py -nopreload -multiline -dotall -allowoverlap -fix:Item2Reward "-page:Quest:Midnight Raid" fixes['Item2Reward'] = { 'regex': True, 'dotall': True, 'msg': { 'en':u'Robot: use Template:Reward', }, 'replacements': [ ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew01>.*?)\n\* *\[\[[Ii]tem: *(?P<item0>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew01>\n* {{Reward|\\g<item0>}}\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew11>.*?)\n\* *\[\[[Ii]tem: *(?P<item1>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew12>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew11>\n* {{Reward|\\g<item1>}}\n\\g<qb_rew12>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew21>.*?)\n\* *\[\[[Ii]tem: *(?P<item2>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew22>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew21>\n* {{Reward|\\g<item2>}}\n\\g<qb_rew22>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew31>.*?)\n\* *\[\[[Ii]tem: *(?P<item3>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew32>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew31>\n* {{Reward|\\g<item3>}}\n\\g<qb_rew32>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew41>.*?)\n\* *\[\[[Ii]tem: *(?P<item4>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew42>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew41>\n* {{Reward|\\g<item4>}}\n\\g<qb_rew42>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew51>.*?)\n\* *\[\[[Ii]tem: *(?P<item5>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew52>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew51>\n* {{Reward|\\g<item5>}}\n\\g<qb_rew52>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew61>.*?)\n\* *\[\[[Ii]tem: *(?P<item6>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew62>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew61>\n* {{Reward|\\g<item6>}}\n\\g<qb_rew62>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew71>.*?)\n\* *\[\[[Ii]tem: *(?P<item7>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew72>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew71>\n* {{Reward|\\g<item7>}}\n\\g<qb_rew72>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew81>.*?)\n\* *\[\[[Ii]tem: *(?P<item8>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew82>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew81>\n* {{Reward|\\g<item8>}}\n\\g<qb_rew82>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rew91>.*?)\n\* *\[\[[Ii]tem: *(?P<item9>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rew92>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rew91>\n* {{Reward|\\g<item9>}}\n\\g<qb_rew92>\n}}") , ( ur'''\n\{\{Questbox *\| *Rewards *\|(?P<qb_rewA1>.*?)\n\* *\[\[[Ii]tem: *(?P<itemA>[^|]+?) *(?:\|[^]]*)?]][ \r]*\n(?P<qb_rewA2>.*\n)\}\}''' , u"\n{{Questbox| Rewards |\\g<qb_rewA1>\n* {{Reward|\\g<itemA>}}\n\\g<qb_rewA2>\n}}") , ] } # Fix profession/crafting link # Item:Crafted Buckler # python replace_lotro.py -nopreload -multiline -fix:CraftLevel -ns:100 -ref:Crafting -pt:2 fixes['CraftLevel'] = { 'regex': True, 'msg': { 'en':u'Robot: link item to recipe index', }, 'replacements': [ ( ur'''Profession: \[\[(?P<pname>[^]|]+)\]\] Crafting Level: \[\[:?Crafting\#Crafting levels\|(?P<tname>[A-za-z]+) \(Tier (?P<tnum>\d+)\)\]\]''' , u'''Profession: [[\\g<pname>]] Crafting Level: [[\\g<pname> \\g<tname> Recipe Index|\\g<tname> (Tier \\g<tnum>)]]''') , ] } # rename Category:Conjuctions to Category:Fellowship Manoeuvres # python replace_lotro.py -nopreload -fix:CJ2FM -cat:Conjunctions -pt:2 fixes['CJ2FM'] = { 'regex': False, 'msg': { 'en':u'Robot: rename CJ to FM', }, 'replacements': [ ( u'[[Category:Conjunctions]]' , u'[[Category:Fellowship Manoeuvres]]') , ] } # rename Category:Conjuctions to Category:Fellowship Manoeuvres # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -page:"A Light from the Shadow" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Activity Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Class Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Crafting Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Epic Book Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Explorer Deed Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Family Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Game Event Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Hobby Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Instances Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Kinship Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Lore Deed Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Meta Deed Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Monster Play Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Quest Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Racial Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Regional Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Reputation Deed Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Skirmish Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Slayer Deed Titles" # python replace_lotro.py -nopreload -fix:subTitle -ns:0 -pt:2 -catr:"Social Titles" fixes['subTitle'] = { 'regex': True, 'msg': { 'en':u'Robot: sub-title', }, 'replacements': [ ( ur' *\[\[ *Category *: *Titles *\]\] *\r?\n?' , u'') , ] } # reformat says # python replace_lotro.py -nopreload -pt:2 -fix:says -cat:"Instance Quests" # python replace_lotro.py -nopreload -pt:2 -fix:says -cat:"Quests: Level 79" # python replace_lotro.py -nopreload -fix:says "-page:Quest:A Daring Escape (Instance)" fixes['says'] = { 'regex': True, 'msg': { 'en':u'Robot: reformat says', }, 'replacements': [ ( ur""":? *(?P<who2>.*?) +says, +''"(?P<what2>.*)"''""" , ur''':''\g<who2> says'', "\g<what2>"''') , ( ur""":? *(?P<who4>.*?) +says, +'"(?P<what4>.*)"'""" , ur''':''\g<who4> says'', "\g<what4>"''') , ( ur''':? *(?P<who5>.*?) +says, +"''(?P<what5>.*)''"''' , ur''':''\g<who5> says'', "\g<what5>"''') , ( ur''':? *(?P<who6>.*?) +says, +"'(?P<what6>.*)'"''' , ur''':''\g<who6> says'', "\g<what6>"''') , ( ur""":? *(?P<who1>.*?) +says, +''(?P<what1>.*)''""" , ur''':''\g<who1> says'', "\g<what1>"''') , ( ur""":? *(?P<who7>.*?) +says, +'(?P<what7>.*)'""" , ur''':''\g<who7> says'', "\g<what7>"''') , ( ur''':? *(?P<who3>.*?) +says, +"(?P<what3>.*)"''' , ur''':''\g<who3> says'', "\g<what3>"''') , ( ur''': *'' *'{3}(?P<who8>.*?)'{3} +says'', +"(?P<what8>.*)"''' , ur''':''\g<who8> says'', "\g<what8>"''') , ( ur''': *''(?P<who9>.*?) says,'' (?P<what8>.*)''' , ur''':''\g<who9> says'', "\g<what9>"''') , ] } # python replace_lotro.py -nopreload -fix:MP_Levelcap -pt:2 -catr:"Monster Play Quests" # python replace_lotro.py -nopreload -fix:MP_Levelcap -pt:2 -catr:"Ettenmoors NPCs" # python replace_lotro.py -nopreload -fix:MP_Levelcap -pt:2 -catr:"Ettenmoors Quests" # python replace_lotro.py -nopreload -fix:MP_Levelcap -pt:2 -catr:"Ettenmoors Creatures" fixes['MP_Levelcap'] = { 'regex': True, 'msg': { 'en':u'Robot: Level Cap', }, 'replacements': [ ( ur'\|(?P<x1>[ \t]*)level(?P<x2>[ \t]*)=(?P<x3>[ \t]*)(?:(75)|(65)|(60)|(50))' , u'|\g<x1>level\g<x2>=\g<x3>{{Level Cap}}') , ( ur'\[(?:(75)|(65)|(60)|(50))\][ \t]*\[\[[qQ]uest:' , u'[{{Level Cap}}] [[Quest:') , ] } # python replace_lotro.py -nopreload -fix:BarterFix -pt:2 -catr:"Skirmish Items" fixes['BarterFix1'] = { 'regex': True, 'msg': { 'en':u'Robot: BarterFix', }, 'replacements': [ ( ur'\| *(width="150px" *\| *)?\{\{Item:Mark\|mode=imlink_plain\|arg=(?P<marks1>[0-9,]+) +Marks\}\} *\|\| *(width="150px" *\| *)?\{\{Item:Medallion\|mode=imlink_plain\|arg=(?P<medallions1>[0-9,]+) +Medallions\}\} *' , u'| {{Barter|Mark|\g<marks1> Marks}} || {{Barter|Medallion|\g<medallions1> Medallions}}') , ( ur'\| *(width="150px" *\| *)?\{\{Item:Mark\|mode=imlink_plain\|arg=(?P<marks2>[0-9,]+) +Marks\}\} *\|\| *(width="150px" *\| *)?' , u'| {{Barter|Mark|\g<marks2> Marks}} ||') , ( ur'\| *(width="150px" *\| *)?\{\{Item:Mark\|mode=imlink_plain\|arg=(?P<marks3>[0-9,]+) +Marks\}\} *\|\| *' , u'| {{Barter|Mark|\g<marks3> Marks}} ||') , ] } # python replace_lotro.py -nopreload -fix:LootboxItems -pt:2 -catr:"Creatures" # python replace_lotro.py -nopreload -fix:LootboxItems -pt:2 -page:"Southern Raider" fixes['LootboxItems'] = { 'regex': True, 'msg': { 'en':u'Robot: Convert creature Lootbox to Lootitems', }, 'replacements': [ ( ur'\{\{\s*[Ll]ootbox\s*\|' , u'{{Lootitems |') , ] }