package Ġeu . kan ade . t ach iy omi . extension . en . k ills ix bill ion de mon s Ċ Ċ import Ġeu . kan ade . t ach iy omi . network . GET Ċ import Ġeu . kan ade . t ach iy omi . network . as Observable Success Ċ import Ġeu . kan ade . t ach iy omi . source . model . Filter List Ċ import Ġeu . kan ade . t ach iy omi . source . model . M ang as Page Ċ import Ġeu . kan ade . t ach iy omi . source . model . Page Ċ import Ġeu . kan ade . t ach iy omi . source . model . S Chapter Ċ import Ġeu . kan ade . t ach iy omi . source . model . SM anga Ċ import Ġeu . kan ade . t ach iy omi . source . online . Http Source Ċ import Ġeu . kan ade . t ach iy omi . util . as J soup Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . nodes . Element Ċ import Ġrx . Observable Ċ Ċ /** Ċ Ġ* Ġ Ġ@ author ĠA ria ĠMor adi Ġ< aria . mor adi 0 0 7 @ gmail . com > Ċ Ġ*/ Ċ Ċ class ĠKill Six Bill ion Dem ons Ġ: ĠHttp Source () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" Kill Six Bill ion Dem ons " ĊĊĠĠĠ Ġoverride Ġval ĠbaseUrl Ġ= Ġ" https :// k ills ix bill ion de mon s . com " ĊĊĠĠĠ Ġoverride Ġval Ġlang Ġ= Ġ" en " ĊĊĠĠĠ Ġoverride Ġval Ġsupports Latest : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ// Ġlist Ġof Ġbooks ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Parse ( response : ĠResponse ): ĠM ang as Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġresponse . as J soup () ĊĊĠĠĠĠĠĠĠ Ġval Ġm ang as Ġ= Ġdocument . select ( popular M anga Selector ()). map Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopular M anga From Element ( element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠM ang as Page ( m ang as , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ( baseUrl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopular M anga Selector (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"# chapter Ġoption : contains ( book )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopular M anga From Element ( element : ĠElement ): ĠSM anga Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSM anga . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġelement . text (). substring Before (" Ġ( ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail _ url Ġ= Ġ" https :// dummy image . com / 7 6 8 x 9 9 4 / 0 0 0 / ffffff . jpg & text =$ title " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartist Ġ= Ġ" Ab bad on " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġ" Ab bad on " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠSM anga . UNKNOWN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġtitle Ġ// Ġthis Ġurl Ġis Ġnot Ġuseful Ġat Ġall Ġbut Ġmust Ġset Ġto Ġsomething Ġunique Ġor Ġthe Ġapp Ġbreaks ! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġlatest ĠUpdates Ġnot Ġused ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Parse ( response : ĠResponse ): ĠM ang as Page Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġ// Ġbooks Ġdont Ġchange Ġaround Ġhere , Ġbut Ġstill Ġwrite Ġthe Ġdata Ġagain Ġto Ġavoid Ġbugs Ġin Ġbackup Ġrestore ĊĠĠĠ Ġoverride Ġfun Ġfetch M anga Details ( manga : ĠSM anga ): ĠObservable < SM anga > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . new Call ( popular M anga Request ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Observable Success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopular M anga Parse ( response ). m ang as . find Ġ{ Ġm anga . title Ġ== Ġit . title Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( response : ĠResponse ): ĠSM anga Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Chapter List ( manga : ĠSM anga ): ĠObservable < List < S Chapter >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . new Call ( chapter List Request ( manga )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Observable Success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter List Parse ( response , Ġm anga ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Request ( manga : ĠSM anga ): ĠRequest Ġ= Ġpopular M anga Request ( 1 ) ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Parse ( response : ĠResponse ): ĠList < S Chapter > Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġprivate Ġfun Ġchapter List Parse ( response : ĠResponse , Ġm anga : ĠSM anga ): ĠList < S Chapter > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġresponse . as J soup () ĊĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġdocument . select ( chapter List Selector ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġchapter s Ġ= Ġmutable ListOf < S Chapter >() ĊĠĠĠĠĠĠĠ Ġvar Ġbook Num Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġtarget Book Num Ġ= Ġm anga . title . split (": ")[ 0 ]. split (" Ġ" )[ 1 ]. toInt () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġoptions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġelement . text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . startsWith (" Book ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook Num Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( book Num Ġ> Ġtarget Book Num ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( book Num Ġ== Ġtarget Book Num ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS Chapter . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġelement . attr (" value ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Split Ġ= Ġtext . split (" Ġ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Ch p ater Ġ${ text Split [ 0 ]}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġchapter s . reversed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchapter List Selector (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"# chapter Ġoption " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Page List ( chapter : ĠS Chapter ): ĠObservable < List < Page >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġword press Pages Ġ= Ġmutable ListOf < Document >() ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġthe Ġfirst Ġpage Ġand Ġadd Ġir Ġto Ġthe Ġlist ĊĠĠĠĠĠĠĠ Ġval Ġfirst Page URL Ġ= Ġchapter . url Ġ+ Ġ"? order = ASC " Ġ// Ġchange Ġthe Ġurl Ġto Ġask ĠWord press Ġto Ġreverse Ġthe Ġposts ĊĠĠĠĠĠĠĠ Ġval Ġfirst Page Ġ= Ġclient . new Call ( GET ( first Page URL )). execute (). as J soup () ĊĠĠĠĠĠĠĠ Ġword press Pages . add ( first Page ) ĊĊĠĠĠĠĠĠĠ Ġval Ġother Pages Ġ= Ġfirst Page . select ("# pag in av Ġa ") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ( other Pages . size Ġ- Ġ 1 )) Ġ// Ġignore Ġthe Ġlast Ġone Ġ( last Ġpage Ġbutton ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword press Pages . add ( client . new Call ( GET ( other Pages [ i ]. attr (" href ")) ). execute (). as J soup ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġchapter Pages Ġ= Ġmutable ListOf < Page >() ĊĠĠĠĠĠĠĠ Ġvar Ġpage Num Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġword press Pages . forEach Ġ{ Ġword press Page Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword press Page . select (". post - content Ġ. entry Ġa : has ( img ) "). forEach Ġ{ Ġpost Image Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter Pages . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage ( pageNum , Ġpost Image . attr (" href "), Ġpost Image . select (" img "). attr (" src ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Num ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( chapter Pages ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠimageUrl Parse ( response : ĠResponse ): ĠString Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( response : ĠResponse ): ĠList < Page > Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Search M anga ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠObservable < M ang as Page > Ġ= Ġthrow ĠException (" Search Ġfunctionality Ġis Ġnot Ġavailable .") ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Parse ( response : ĠResponse ): ĠM ang as Page Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Request ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠRequest Ġ= Ġthrow ĠException (" Not Ġused ") Ċ } Ċ