package Ġeu . kan ade . t ach iy omi . extension . en . t cb sc ans Ċ Ċ 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 Ġeu . kan ade . t ach iy omi . source . online . Parsed Http Source Ċ import Ġeu . kan ade . t ach iy omi . util . as J soup Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . nodes . Element Ċ import Ġjava . util . Calendar Ċ Ċ class ĠT CB Sc ans Ġ: ĠParsed Http Source () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" T CB ĠSc ans " ĊĠĠĠ Ġoverride Ġval ĠbaseUrl Ġ= Ġ" https :// one piece chapter s . com " ĊĠĠĠ Ġoverride Ġval Ġlang Ġ= Ġ" en " ĊĠĠĠ Ġoverride Ġval Ġsupports Latest Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġval Ġclient : ĠOk HttpClient Ġ= Ġnetwork . cloudflare Client ĊĊĠĠĠ Ġ// Ġpopular ĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ( baseUrl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Selector () Ġ= Ġ"# page " ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga From Element ( element : ĠElement ): ĠSM anga Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm anga Ġ= ĠSM anga . create () ĊĠĠĠĠĠĠĠ Ġm anga . thumbnail _ url Ġ= Ġelement . select (". m ang ain fo _ body Ġ> Ġimg "). attr (" src ") ĊĠĠĠĠĠĠĠ Ġm anga . url Ġ= Ġelement . select ("# primary - menu Ġ. menu - item : first - child "). attr (" href ") ĊĠĠĠĠĠĠĠ Ġm anga . title Ġ= Ġelement . select (". intro _ content Ġh 2 "). text () ĊĠĠĠĠĠĠĠ Ġreturn Ġm anga ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Next Page Selector (): ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġlatest ĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ= Ġthrow ĠUnsupportedOperationException () ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Selector (): ĠString Ġ= Ġthrow ĠUnsupportedOperationException () ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates From Element ( element : ĠElement ): ĠSM anga Ġ= Ġthrow ĠUnsupportedOperationException () ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Next Page Selector (): ĠString ? Ġ= Ġthrow ĠUnsupportedOperationException () ĊĊĠĠĠ Ġ// Ġsearch ĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Request ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠRequest Ġ= Ġpopular M anga Request ( page ) ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Selector (): ĠString Ġ= Ġpopular M anga Selector () ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga From Element ( element : ĠElement ): ĠSM anga Ġ= Ġpopular M anga From Element ( element ) ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Next Page Selector (): ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġm anga Ġdetails ĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( document : ĠDocument ) Ġ= ĠSM anga . create (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthumbnail _ url Ġ= Ġdocument . select (". m ang ain fo _ body Ġ> Ġimg "). attr (" src ") ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġdocument . select (". intro _ content Ġh 2 "). text () ĊĠĠĠĠĠĠĠ Ġstatus Ġ= Ġparse Status ( document . select (". intro _ content "). text ()) ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdocument . select (". intro _ content "). join ToString ("\ n ") Ġ{ Ġit . text () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Status ( element : ĠString ): ĠInt Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . toLowerCase (). contains (" ongo ing Ġ( pub ") Ġ-> ĠSM anga . ONGO ING ĊĠĠĠĠĠĠĠ Ġelement . toLowerCase (). contains (" completed Ġ( pub ") Ġ-> ĠSM anga . COMPLETED ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSM anga . UNKNOWN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġchapter s ĊĠĠĠ Ġoverride Ġfun Ġchapter List Selector () Ġ= Ġ" table . chap _ tab Ġtr " ĊĊĠĠĠ Ġ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 Ġ= Ġelement . select (" a "). text () ĊĠĠĠĠĠĠĠ Ġchapter . date _ upload Ġ= Ġelement . select ("# time Ġi "). last ()?. text ()?. let Ġ{ Ġparse Chapter Date ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġchapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Chapter Date ( date : ĠString ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Words : ĠList < String > Ġ= Ġdate . split (" Ġ") ĊĠĠĠĠĠĠĠ Ġif Ġ( date Words . size Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ago Ġ= ĠInteger . parseInt ( date Words [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdates : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Words [ 1 ]. contains (" minute ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdates . add ( Calendar . MINUTE , Ġ- time Ago ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Words [ 1 ]. contains (" hour ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdates . add ( Calendar . HOUR _ OF _ DAY , Ġ- time Ago ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Words [ 1 ]. contains (" day ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdates . add ( Calendar . DAY _ OF _ YEAR , Ġ- time Ago ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Words [ 1 ]. contains (" week ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdates . add ( Calendar . WEEK _ OF _ YEAR , Ġ- time Ago ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Words [ 1 ]. contains (" month ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdates . add ( Calendar . MONTH , Ġ- time Ago ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Words [ 1 ]. contains (" year ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdates . add ( Calendar . YEAR , Ġ- time Ago ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdates . time In Millis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Parse ( response : ĠResponse ): ĠList < S Chapter > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġresponse . as J soup () ĊĠĠĠĠĠĠĠ Ġval Ġchapter List Ġ= Ġdocument . select ( chapter List Selector ()). map Ġ{ Ġchapter From Element ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( has Count down ( chapter List [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchapter List . sub List ( 1 , Ġchapter List . size ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchapter List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Count down ( chapter : ĠS Chapter ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġclient . new Call ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGET ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbaseUrl Ġ+ Ġchapter . url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Builder (). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). execute (). as J soup () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdocument ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select (" iframe [ src ^ = https :// free . time and date . com / countdown / ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isNotEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġpages ĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( document : ĠDocument ): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpages Ġ= Ġmutable ListOf < Page >() ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġdocument . select (". container Ġ. img _ container Ġcenter Ġimg "). forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġelement . attr (" src ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpages . add ( Page ( i , Ġ"", Ġurl )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpages ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠimageUrl Parse ( document : ĠDocument ) Ġ= Ġ"" Ċ } Ċ