package Ġeu . kan ade . t ach iy omi . extension . id . kom ik go Ċ Ċ import Ġeu . kan ade . t ach iy omi . multis rc . w pm ang ast ream . W PM anga Stream Ċ import Ġeu . kan ade . t ach iy omi . network . GET Ċ import Ġeu . kan ade . t ach iy omi . source . model . Filter List Ċ 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 Ġokhttp 3 . Request Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . nodes . Element Ċ import Ġeu . kan ade . t ach iy omi . source . model . Filter Ċ import Ġokhttp 3 . Http Url Ċ import Ġeu . kan ade . t ach iy omi . lib . rate limit . RateLimit Interceptor Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġokhttp 3 . Ok HttpClient Ċ Ċ class ĠKom ik GO Ġ: ĠW PM anga Stream (" K om ik ĠGO ", Ġ" https :// kom ik go . com ", Ġ" id ") Ġ{ ĊĠĠĠ Ġ// ĠForm er ly Ġ" K om ik ĠGO Ġ( WP ĠM anga ĠStream )" ĊĠĠĠ Ġoverride Ġval Ġid Ġ= Ġ 1 0 7 0 6 7 4 8 2 3 3 2 4 7 2 1 5 5 4 ĊĊĠĠĠ Ġprivate Ġval Ġrate Limit Interceptor Ġ= ĠRate Limit Interceptor ( 4 ) ĊĊĠĠĠ Ġoverride Ġval Ġclient : ĠOk HttpClient Ġ= Ġnetwork . cloudflare Client . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġ. read Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġ. add Network Interceptor ( rate Limit Interceptor ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ("$ baseUrl / page /$ page ? s & post _ type = wp - manga & m _ orderby = views ", Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ("$ baseUrl / page /$ page ? s & post _ type = wp - manga & m _ orderby = latest ", Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Selector () Ġ= Ġ" div . c - tabs - item __ content " ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga From Element ( element : ĠElement ): ĠSM anga Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm anga Ġ= ĠSM anga . create () ĊĠĠĠĠĠĠĠ Ġm anga . thumbnail _ url Ġ= Ġelement . select (" div . tab - thumb Ġ> Ġa Ġ> Ġimg "). attr (" data - src ") ĊĠĠĠĠĠĠĠ Ġelement . select (" div . tab - thumb Ġ> Ġa "). first (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga . set Url Without Domain ( it . attr (" href ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga . title Ġ= Ġit . attr (" title ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġm anga ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Request ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠHttp Url . parse ("$ baseUrl / page /$ page ") !!. newBuilder () ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" post _ type ", Ġ" wp - manga ") ĊĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= Ġ"\\ s +". to Regex () ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġquery . replace ( pattern , Ġ"+ ") ĊĠĠĠĠĠĠĠ Ġif Ġ( query . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" s ", Ġq ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" s ", Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar ĠorderBy : ĠString ĊĊĠĠĠĠĠĠĠ Ġ( if Ġ( filters . isEmpty ()) Ġget Filter List () Ġelse Ġfilters ). forEach Ġ{ Ġfilter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( filter ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStatus Ġ-> Ġurl . add QueryParameter (" manga _ status ", ĠarrayOf ("", Ġ" completed ", Ġ" ongo ing ")[ filter . state ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGen re List Filter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre Include Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . state . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . state Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Include . add ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( genre Include . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Include . forEach Ġ{ Ġgenre Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" genre [] ", Ġgenre ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStatus List Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatuses Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . state . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . state Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatuses . add ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( statuses . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatuses . forEach Ġ{ Ġstatus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" status [] ", Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSort By Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠorderBy Ġ= Ġfilter . to Uri Part () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" m _ orderby ", ĠorderBy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTextField Ġ-> Ġurl . add QueryParameter ( filter . key , Ġfilter . state ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGET ( url . toString (), Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Next Page Selector () Ġ= Ġ"# navigation - ajax " ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( document : ĠDocument ): ĠSM anga Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo Element Ġ= Ġdocument . select (" div . site - content "). first () ĊĊĠĠĠĠĠĠĠ Ġval Ġm anga Ġ= ĠSM anga . create () ĊĠĠĠĠĠĠĠ Ġm anga . author Ġ= Ġinfo Element . select (" div . author - content ") ?. text () ĊĠĠĠĠĠĠĠ Ġm anga . artist Ġ= Ġinfo Element . select (" div . artist - content ") ?. text () ĊĊĠĠĠĠĠĠĠ Ġval Ġgen res Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġinfo Element . select (" div . genres - content Ġa "). forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre Ġ= Ġelement . text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen res . add ( genre ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm anga . genre Ġ= Ġgen res . join ToString (", Ġ") ĊĠĠĠĠĠĠĠ Ġm anga . status Ġ= Ġparse Status ( info Element . select (" div . post - status Ġ> Ġdiv : nth - child ( 2 ) Ġ Ġdiv "). text ()) ĊĊĠĠĠĠĠĠĠ Ġm anga . description Ġ= Ġdocument . select (" div . description - summary ") ?. text () ĊĠĠĠĠĠĠĠ Ġm anga . thumbnail _ url Ġ= Ġdocument . select (" div . summary _ image Ġ> Ġa Ġ> Ġimg "). attr (" data - src ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġm anga ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Selector () Ġ= Ġ" li . wp - manga - chapter " ĊĊĠĠĠ Ġoverride Ġfun Ġchapter From Element ( element : ĠElement ): ĠS Chapter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Element Ġ= Ġelement . select (" a "). first () ĊĠĠĠĠĠĠĠ Ġval Ġchapter Ġ= ĠS Chapter . create () ĊĠĠĠĠĠĠĠ Ġchapter . set Url Without Domain ( url Element . attr (" href ")) ĊĠĠĠĠĠĠĠ Ġchapter . name Ġ= Ġurl Element . text () ĊĠĠĠĠĠĠĠ Ġchapter . date _ upload Ġ= Ġparse Chapter Date ( element . select (" span . chapter - release - date Ġi "). text ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġchapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( document : ĠDocument ): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdocument . select (" div . reading - content Ġ* Ġimg "). map Indexed Ġ{ Ġi , Ġimg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage ( i , Ġ"", Ġimg . img Attr ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠTextField ( name : ĠString , Ġval Ġkey : ĠString ) Ġ: ĠFilter . Text ( name ) ĊĊĠĠĠ Ġprivate Ġclass ĠSort By Ġ: ĠUri Part Filter ( ĊĠĠĠĠĠĠĠ Ġ" Sort Ġby ", ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Re levance ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Latest ", Ġ" latest "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" A - Z ", Ġ" alphabet "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Rating ", Ġ" rating "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Trend ing ", Ġ" trend ing "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Most ĠView ", Ġ" views "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" New ", Ġ" new - manga ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġclass ĠStatus ( name : ĠString , Ġval Ġid : ĠString Ġ= Ġname ) Ġ: ĠFilter . Tri State ( name ) ĊĠĠĠ Ġprivate Ġclass ĠStatus List ( statuses : ĠList < Status >) Ġ: ĠFilter . Group < Status >(" Status ", Ġstatuses ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter List () Ġ= ĠFilter List ( ĊĠĠĠĠĠĠĠ ĠTextField (" Author ", Ġ" author "), ĊĠĠĠĠĠĠĠ ĠTextField (" Year ", Ġ" release "), ĊĠĠĠĠĠĠĠ ĠSort By (), ĊĠĠĠĠĠĠĠ ĠStatus List ( getStatus List ()), ĊĠĠĠĠĠĠĠ ĠGen re List Filter ( get Genre List ()) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun ĠgetStatus List () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠStatus (" Completed ", Ġ" end "), ĊĠĠĠĠĠĠĠ ĠStatus (" O ngo ing ", Ġ" on - going "), ĊĠĠĠĠĠĠĠ ĠStatus (" Canceled ", Ġ" c anceled "), ĊĠĠĠĠĠĠĠ ĠStatus (" On hold ", Ġ" on - hold ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Genre List (): ĠList < Genre > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠGen re (" Adventure ", Ġ" Adventure "), ĊĠĠĠĠĠĠĠ ĠGen re (" Action ", Ġ" action "), ĊĠĠĠĠĠĠĠ ĠGen re (" Adventure ", Ġ" ad venture "), ĊĠĠĠĠĠĠĠ ĠGen re (" C ars ", Ġ" cars "), ĊĠĠĠĠĠĠĠ ĠGen re (" 4 - K oma ", Ġ" 4 - k oma "), ĊĠĠĠĠĠĠĠ ĠGen re (" Come dy ", Ġ" co med y "), ĊĠĠĠĠĠĠĠ ĠGen re (" Completed ", Ġ" completed "), ĊĠĠĠĠĠĠĠ ĠGen re (" Cook ing ", Ġ" cook ing "), ĊĠĠĠĠĠĠĠ ĠGen re (" D ement ia ", Ġ" de ment ia "), ĊĠĠĠĠĠĠĠ ĠGen re (" Dem ons ", Ġ" de mon s "), ĊĠĠĠĠĠĠĠ ĠGen re (" D ou jin shi ", Ġ" dou jin shi "), ĊĠĠĠĠĠĠĠ ĠGen re (" D ram a ", Ġ" dr ama "), ĊĠĠĠĠĠĠĠ ĠGen re (" Ec chi ", Ġ" ec chi "), ĊĠĠĠĠĠĠĠ ĠGen re (" F antasy ", Ġ" f antasy "), ĊĠĠĠĠĠĠĠ ĠGen re (" Game ", Ġ" game "), ĊĠĠĠĠĠĠĠ ĠGen re (" Gender ĠB ender ", Ġ" gender - b ender "), ĊĠĠĠĠĠĠĠ ĠGen re (" H are m ", Ġ" h are m "), ĊĠĠĠĠĠĠĠ ĠGen re (" H istorical ", Ġ" h istorical "), ĊĠĠĠĠĠĠĠ ĠGen re (" Hor ror ", Ġ" hor ror "), ĊĠĠĠĠĠĠĠ ĠGen re (" I sek ai ", Ġ" ise k ai "), ĊĠĠĠĠĠĠĠ ĠGen re (" J ose i ", Ġ" j ose i "), ĊĠĠĠĠĠĠĠ ĠGen re (" K ids ", Ġ" k ids "), ĊĠĠĠĠĠĠĠ ĠGen re (" Magic ", Ġ" magic "), ĊĠĠĠĠĠĠĠ ĠGen re (" M anga ", Ġ" manga "), ĊĠĠĠĠĠĠĠ ĠGen re (" Man h ua ", Ġ" man h ua "), ĊĠĠĠĠĠĠĠ ĠGen re (" Man hw a ", Ġ" man hw a "), ĊĠĠĠĠĠĠĠ ĠGen re (" Mart ial ĠAr ts ", Ġ" mart ial - arts "), ĊĠĠĠĠĠĠĠ ĠGen re (" M ature ", Ġ" m ature "), ĊĠĠĠĠĠĠĠ ĠGen re (" Me cha ", Ġ" me cha "), ĊĠĠĠĠĠĠĠ ĠGen re (" M ilitary ", Ġ" m ilitary "), ĊĠĠĠĠĠĠĠ ĠGen re (" Music ", Ġ" music "), ĊĠĠĠĠĠĠĠ ĠGen re (" M yst ery ", Ġ" m yst ery "), ĊĠĠĠĠĠĠĠ ĠGen re (" Old ĠCom ic ", Ġ" old - com ic "), ĊĠĠĠĠĠĠĠ ĠGen re (" One ĠShot ", Ġ" one - shot "), ĊĠĠĠĠĠĠĠ ĠGen re (" On esh ot ", Ġ" on esh ot "), ĊĠĠĠĠĠĠĠ ĠGen re (" Par odi ", Ġ" par odi "), ĊĠĠĠĠĠĠĠ ĠGen re (" Par ody ", Ġ" par ody "), ĊĠĠĠĠĠĠĠ ĠGen re (" Pol ice ", Ġ" pol ice "), ĊĠĠĠĠĠĠĠ ĠGen re (" P sy cho logical ", Ġ" psy cho logical "), ĊĠĠĠĠĠĠĠ ĠGen re (" Rom ance ", Ġ" rom ance "), ĊĠĠĠĠĠĠĠ ĠGen re (" Sam ur ai ", Ġ" sam ur ai "), ĊĠĠĠĠĠĠĠ ĠGen re (" School ", Ġ" school "), ĊĠĠĠĠĠĠĠ ĠGen re (" School ĠLife ", Ġ" school - life "), ĊĠĠĠĠĠĠĠ ĠGen re (" S ci - Fi ", Ġ" sci - fi "), ĊĠĠĠĠĠĠĠ ĠGen re (" Se inen ", Ġ" se inen "), ĊĠĠĠĠĠĠĠ ĠGen re (" Sh ou jo ", Ġ" sh ou jo "), ĊĠĠĠĠĠĠĠ ĠGen re (" Sh ou jo ĠA i ", Ġ" sh ou jo - ai "), ĊĠĠĠĠĠĠĠ ĠGen re (" Sh o unen ", Ġ" sh o unen "), ĊĠĠĠĠĠĠĠ ĠGen re (" Sh o unen Ġai ", Ġ" sh o unen - ai "), ĊĠĠĠĠĠĠĠ ĠGen re (" Slice Ġof ĠLife ", Ġ" slice - of - life "), ĊĠĠĠĠĠĠĠ ĠGen re (" S ports ", Ġ" sport s "), ĊĠĠĠĠĠĠĠ ĠGen re (" Super ĠPower ", Ġ" super - power "), ĊĠĠĠĠĠĠĠ ĠGen re (" Super natural ", Ġ" super natural "), ĊĠĠĠĠĠĠĠ ĠGen re (" Th r iller ", Ġ" thr iller "), ĊĠĠĠĠĠĠĠ ĠGen re (" Tr aged y ", Ġ" tr aged y "), ĊĠĠĠĠĠĠĠ ĠGen re (" V amp ire ", Ġ" v amp ire "), ĊĠĠĠĠĠĠĠ ĠGen re (" Web to ons ", Ġ" web to ons "), ĊĠĠĠĠĠĠĠ ĠGen re (" Y ao i ", Ġ" y ao i "), ĊĠĠĠĠĠĠĠ ĠGen re (" Y uri ", Ġ" y uri ") ĊĠĠĠ Ġ) Ċ } Ċ