package Ġrs . d us k . tools . definition . item . pipe . page Ċ Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġrs . d us k . tools . Pipeline Ċ import Ġrs . d us k . tools . wiki . model . Wiki Ċ import Ġrs . d us k . tools . wiki . model . Wiki Page Ċ import Ġrs . d us k . tools . wiki . scrape . Run escape Wiki . export Ċ import Ġrs . d us k . tools . wiki . scrape . Run escape Wiki . get Category Links Ċ import Ġjava . io . File Ċ Ċ class ĠLive Page Collector ( val Ġtype : ĠString , Ġcategories : ĠList < String >, Ġinfo boxes : ĠList < Pair < String , ĠString >>, Ġwiki : ĠString , Ġval Ġsearch ById : ĠBoolean , Ġval Ġmodifier : Ġ( Page Collector , ĠWiki Page , ĠBoolean ) Ġ-> ĠUnit ) Ġ: ĠPipeline . Modifier < Page Collector > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġids Ġ= Ġmutable Map Of < Int , ĠWiki Page >() ĊĠĠĠ Ġprivate Ġval Ġnames Ġ= Ġmutable Map Of < String , ĠWiki Page >() ĊĠĠĠ Ġprivate Ġval Ġparentheses Regex With SP refix Ġ= Ġ" s \\ s ?( ?: \\ (.* \\ )|[ 0 - 9 ]+) ". to Regex () ĊĠĠĠ Ġprivate Ġval Ġparentheses Regex Ġ= Ġ"\\ s (?: \\ (.* \\ )|[ 0 - 9 ]+) ". to Regex () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= Ġ"${ type } s . xml " ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( dir ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" No Ġexisting Ġ$ type Ġdump Ġfound .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage File Ġ= ĠFile ("${ type } s - list . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! page File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategories . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Category Links ( list , Ġ"/ w / Category :$ it ", Ġwiki ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage File . write Text ( list . join ToString ( separator Ġ= Ġ"\ n ") Ġ{ Ġit . remove Prefix ("/ w /") Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ob t ained Ġ${ list . size } Ġ$ type Ġpage Ġnames ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġpage File . read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexport Ġ= Ġexport ( list , Ġwiki ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Utils . copy ( export , Ġfile . output Stream ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Dump ed Ġpages Ġin Ġ${ System . currentTimeMillis () Ġ- Ġstart } Ġms ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Load s ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Wiki Ġ= ĠWiki . load ( dir ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġpages Ġwith Ġexplicit Ġids ĊĠĠĠĠĠĠĠ Ġcurrent Wiki . pages . forEach Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġpage . revision . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo boxes . forEach Ġ{ Ġ( info box , Ġkey ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . contains ( info box , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ids ( page , Ġnames , Ġids , Ġinfo box , Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Ids ( page : ĠWiki Page , Ġnames : ĠMutable Map < String , ĠWiki Page >, Ġids : ĠMutable Map < Int , ĠWiki Page >, Ġinfo box : ĠString , Ġitem Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpage . get Template Maps ( info box ). forEach Ġ{ Ġmap Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ( map [" name "] Ġas ? ĠString Ġ?: Ġpage . title ). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames . put If Absent ( name , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! search ById ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key . startsWith ( item Key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġvalue Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string . contains ("," )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . split ("," ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( ids , Ġit . trim (), Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( ids , Ġvalue , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġappend ( ids : ĠMutable Map < Int , ĠWiki Page >, Ġvalue : ĠString , Ġpage : ĠWiki Page ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġvalue . toInt OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġids . put If Absent ( id , Ġpage ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value . isNotBlank () Ġ&& Ġ! value . equals (" no ", Ġtrue ) Ġ&& Ġ! value . startsWith (" hist ") Ġ&& Ġvalue Ġ!= Ġ" removed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Unknown Ġpage Ġid Ġ${ page . title } Ġ'$ value '") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmodify ( content : ĠPage Collector ): ĠPage Collector Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcontent . id ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcontent . name ĊĠĠĠĠĠĠĠ Ġval Ġnew Page Ġ= Ġids [ id ] Ġ?: Ġnames [ name . toLowerCase ()] Ġ?: Ġnames [ name . toLowerCase (). replace ( parent heses Regex , Ġ" ")] Ġ?: Ġnames [ name . toLowerCase (). replace ( parent heses Regex With SP refix , Ġ" ")] ĊĠĠĠĠĠĠĠ Ġif Ġ( new Page Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier . invoke ( content , Ġnew Page , Ġids . containsKey ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent ĊĠĠĠ Ġ} Ċ }