package Ġcom . dev ing ot as witch . rank ings . sources Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . dev ing ot as witch . rank ings . domain . Rank ings Ċ import Ġcom . dev ing ot as witch . utils . Constants Ċ import Ġcom . dev ing ot as witch . utils . General Utils . is Integer Ċ import Ġcom . dev ing ot as witch . utils . J soup Utils . getDocument Ċ import Ġcom . dev ing ot as witch . utils . J soup Utils . get E lems From Doc Ċ import Ġcom . dev ing ot as witch . utils . J soup Utils . parse URL With UA Ċ import Ġcom . dev ing ot as witch . utils . Parsing Utils . normalize Def enses Ċ import Ġcom . dev ing ot as witch . utils . Parsing Utils . normalize Names Ċ import Ġcom . dev ing ot as witch . utils . Parsing Utils . normalize Teams Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ object ĠParse F antasy Pro s Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Parse F antasy Pro s " ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġparse E CR Wrapper ( rank ings : ĠRank ings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe cr : ĠMutable Map < String , ĠDouble ?> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġvar Ġurl Ġ= Ġ" http :// www . f antasy pro s . com / n fl / che ats heet s / top - players . php " ĊĠĠĠĠĠĠĠ Ġif Ġ( rank ings !!. get League Settings (). sc oring Settings . re ception s Ġ>= Ġ 1 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" http :// www . f antasy pro s . com / n fl / che ats heet s / top - pp r - players . php " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( rank ings !!. get League Settings (). sc oring Settings . re ception s Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" https :// www . f antasy pro s . com / n fl / che ats heet s / top - half - pp r - players . php " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġparse F PC heat Sheet Worker ( url , Ġe cr ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( player Id Ġin Ġrank ings . players . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ec r . containsKey ( player Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġrank ings . getPlayer ( player Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . ec r Ġ= Ġe cr [ player Id ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġparse AD P Wrapper ( rank ings : ĠRank ings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġad p : ĠMutable Map < String , ĠDouble ?> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġval Ġad p Url : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġrow Size : ĠInt ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrank ings !!. get League Settings (). is Best Ball Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad p Url Ġ= Ġ" https :// www . f antasy pro s . com / n fl / ad p / best - ball - overall . php " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Size Ġ= Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrank ings !!. get League Settings (). sc oring Settings . re ception s Ġ>= Ġ 1 . 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad p Url Ġ= Ġ" http :// www . f antasy pro s . com / n fl / ad p / pp r - overall . php " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Size Ġ= Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrank ings !!. get League Settings (). sc oring Settings . re ception s Ġ> Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad p Url Ġ= Ġ" https :// www . f antasy pro s . com / n fl / ad p / half - point - pp r - overall . php " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Size Ġ= Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad p Url Ġ= Ġ" http :// www . f antasy pro s . com / n fl / ad p / overall . php " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Size Ġ= Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġparse AD P Worker ( ad p , Ġad p Url , Ġrow Size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( player Id Ġin Ġrank ings . players . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ad p . containsKey ( player Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank ings . getPlayer ( player Id ). ad p Ġ= Ġad p [ player Id ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġparse Dyn asty Wrapper ( rank ings : ĠRank ings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdyn asty : ĠMutable Map < String , ĠDouble ?> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" https :// www . f antasy pro s . com / n fl / che ats heet s / top - players . php ? type = dyn asty " ĊĠĠĠĠĠĠĠ Ġparse F PC heat Sheet Worker ( url , Ġdyn asty ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( player Id Ġin Ġrank ings . players . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dyn asty . containsKey ( player Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġrank ings . getPlayer ( player Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . dyn asty Rank Ġ= Ġdyn asty [ player Id ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġparse F PC heat Sheet Worker ( url : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank ings Map : ĠMutable Map < String , ĠDouble ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= Ġget Document ( url ) ĊĠĠĠĠĠĠĠ Ġval Ġe cr Arr Ġ= Ġget E lems From Doc ( doc , Ġ" div . player - list Ġdiv Ġdiv Ġli ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġe cr Arr . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe cr Val Ġ= Ġe cr Arr [ i ]. substring Before (". Ġ"). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Data Ġ= Ġe cr Arr [ i ]. substring After (". Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġteam Pos Arr Ġ= Ġplayer Data . substring ( player Data . lastIndexOf (' Ġ') Ġ+ Ġ 1 ). split ('- ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Name Ġ= Ġplayer Data . substring ( 0 , Ġplayer Data . lastIndexOf (' Ġ')) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Name Ġ= Ġteam Pos Arr [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġteam : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteam Ġ= Ġif Ġ( filtered Name . split (" Ġ"). size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize Teams ( filtered Name . substring ( filtered Name . lastIndexOf (" Ġ" )). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize Teams ( filtered Name . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġnormalize Names ( normalize Def enses ( player Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ind Ġ= Ġteam Pos Arr [ 0 ]. replace ("( \\ d +, \\ d + )| \\ d +". to Regex (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" DST ", ĠConstants . DST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Constants . DST Ġ== Ġpos Ind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteam Ġ= Ġnormalize Teams ( player Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank ings Map [ name Ġ+ ĠConstants . PLAYER _ ID _ DE LIMITER Ġ+ Ġteam Ġ+ ĠConstants . PLAYER _ ID _ DE LIMITER Ġ+ Ġpos Ind ] Ġ= Ġe cr Val ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( si oo e : ĠString Index OutOfBoundsException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Failed Ġto Ġparse Ġa Ġplayer 's ĠE CR ", Ġsi oo e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġparse AD P Worker ( ad p : ĠMutable Map < String , ĠDouble ? >, Ġad p Url : ĠString , Ġrow Size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtd Ġ= Ġparse URL With UA ( ad p Url , Ġ" table . player - table Ġtbody Ġtr Ġtd ") ĊĠĠĠĠĠĠĠ Ġvar Ġmin Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġtd . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Integer ( td [ i ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġmin ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġtd . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ+ Ġrow Size Ġ>= Ġtd . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( "" Ġ== Ġtd [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Name Ġ= Ġtd [ i Ġ+ Ġ 1 ]. split ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ\\ (". to Regex ())[ 0 ]. split (", Ġ" )[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġteam : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteam Ġ= Ġif Ġ( filtered Name . split (" Ġ"). size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize Teams ( filtered Name . substring ( filtered Name . lastIndexOf (" Ġ" )). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize Teams ( filtered Name . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwithout Team Ġ= Ġfiltered Name . substring ( 0 , Ġfiltered Name . lastIndexOf (" Ġ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġnormalize Names ( normalize Def enses ( without Team )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ+ Ġrow Size Ġ>= Ġtd . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġad p Str Ġ= Ġtd [ i Ġ+ Ġ( row Size Ġ- Ġ 1 )]. replace (",", Ġ""). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ind Ġ= Ġtd [ i Ġ+ Ġ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("( \\ d +, \\ d + )| \\ d +". to Regex (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" DST ", ĠConstants . DST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Constants . DST Ġ== Ġpos Ind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteam Ġ= Ġnormalize Teams ( without Team ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad p [ name Ġ+ ĠConstants . PLAYER _ ID _ DE LIMITER Ġ+ Ġteam Ġ+ ĠConstants . PLAYER _ ID _ DE LIMITER Ġ+ Ġpos Ind ] Ġ= Ġad p Str ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( si oo e : ĠString Index OutOfBoundsException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG , Ġ" Failed Ġto Ġparse Ġa Ġplayer 's ĠAD P ", Ġsi oo e ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġrow Size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġparse Schedule ( rank ings : ĠRank ings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelems Ġ= Ġparse URL With UA (" https :// www . f antasy pro s . com / n fl / schedule / grid . php ? week = 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" table . table - bordered Ġtbody Ġtr Ġtd ") ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġelems . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġteam Name Ġ= Ġnormalize Teams ( elems [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġschedule Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( week Counter , Ġj ) Ġin Ġ( i Ġ+ Ġ 1 Ġuntil Ġi Ġ+ Ġ 1 8 ). with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopponent Full Ġ= Ġelems [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsuffix : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuffix Ġ= Ġif Ġ( opp onent Full . split (" Ġ"). size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Location Ġ= Ġopponent Full . split (" Ġ" )[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopponent Ġ= Ġnormalize Teams ( opp onent Full . split (" Ġ" )[ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ game Location Ġ$ opp onent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" BY E " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschedule . append ( week Counter Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (": Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( suffix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Constants . LINE _ BREAK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġschedule String Ġ= Ġschedule . substring ( 0 , Ġschedule . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġteam Ġ= Ġrank ings . get Team ( team Name ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam . schedule Ġ= Ġschedule String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 1 9 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }