package Ġeu . kan ade . t ach iy omi . multis rc . mult ich an Ċ Ċ import Ġeu . kan ade . t ach iy omi . network . GET Ċ import Ġeu . kan ade . t ach iy omi . network . interceptor . rate Limit Ċ import Ġeu . kan ade . t ach iy omi . source . model . Filter Ċ 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 . 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 . text . SimpleDateFormat Ċ import Ġjava . util . Locale Ċ Ċ abstract Ġclass ĠMulti Chan ( ĊĠĠĠ Ġoverride Ġval Ġname : ĠString , ĊĠĠĠ Ġoverride Ġval ĠbaseUrl : ĠString , ĊĠĠĠ Ġfinal Ġoverride Ġval Ġlang : ĠString Ċ ) Ġ: ĠParsed Http Source () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġsupports Latest Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġval Ġclient : ĠOk HttpClient Ġ= Ġnetwork . client . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. rate Limit ( 2 ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Request ( page : ĠInt ): ĠRequest Ġ= ĊĠĠĠĠĠĠĠ ĠGET ("$ baseUrl / most favorites ? offset =${ 2 0 Ġ* Ġ( page Ġ- Ġ 1 )} ", Ġheaders ) ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ= ĠGET ("$ baseUrl / manga / new ? offset =${ 2 0 Ġ* Ġ( page Ġ- Ġ 1 )} ") ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Selector () Ġ= Ġ" div . content _ row " ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Selector () Ġ= Ġpopular M anga Selector () ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Selector () Ġ= Ġpopular M anga Selector () ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga From Element ( element : ĠElement ): ĠSM anga Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm anga Ġ= ĠSM anga . create () ĊĠĠĠĠĠĠĠ Ġm anga . thumbnail _ url Ġ= Ġelement . select (" img "). first (). attr (" src ") ĊĠĠĠĠĠĠĠ Ġm anga . title Ġ= Ġelement . attr (" title ") ĊĠĠĠĠĠĠĠ Ġelement . select (" h 2 Ġ> Ġa "). first (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga . set Url Without Domain ( it . attr (" href ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġm anga ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates From Element ( element : ĠElement ): ĠSM anga Ġ= ĊĠĠĠĠĠĠĠ Ġpopular M anga From Element ( element ) ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga From Element ( element : ĠElement ): ĠSM anga Ġ= Ġpopular M anga From Element ( element ) ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Next Page Selector () Ġ= Ġpopular M anga Next Page Selector () ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Next Page Selector () Ġ= Ġ" a : contains ( ÐĴ Ð¿ ÐµÑĢ ÐµÐ´ )" ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Next Page Selector () Ġ= Ġ" a : contains ( ÐĶ Ð°Ð» ÐµÐµ )" ĊĊĠĠĠ Ġprivate Ġfun Ġsearch Gen res Next Page Selector () Ġ= Ġpopular M anga Next Page Selector () ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Parse ( response : ĠResponse ): ĠM ang as Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġresponse . as J soup () ĊĠĠĠĠĠĠĠ Ġvar Ġhas Next Page Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġm ang as Ġ= Ġdocument . select ( search M anga Selector ()). map Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch M anga From Element ( element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnext Search Page Ġ= Ġdocument . select ( search M anga Next Page Selector ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( next Search Page . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdocument . select (" input # search input "). first (). attr (" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Num Ġ= Ġnext Search Page . let Ġ{ Ġselector Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠonClick Ġ= Ġselector . attr (" onclick ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ?. split (""" \\ d + """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Search Page . attr (" href ", Ġ"$ baseUrl /? do = search & sub action = search & story =$ query & search _ start =$ pageNum ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Next Page Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnext Gen res Page Ġ= Ġdocument . select ( search Gen res Next Page Selector ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( next Gen res Page . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Next Page Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠM ang as Page ( m ang as , Ġhas Next Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( document : ĠDocument ): ĠSM anga Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo Element Ġ= Ġdocument . select ("# info _ wrap Ġtr ,# info _ wrap Ġ> Ġdiv ") ĊĠĠĠĠĠĠĠ Ġval Ġdesc Element Ġ= Ġdocument . select (" div # description "). first () ĊĠĠĠĠĠĠĠ Ġval Ġraw Category Ġ= Ġinfo Element . select (": contains ( Ð¢ Ð¸Ð¿ ) Ġa "). text (). lowercase () ĊĠĠĠĠĠĠĠ Ġval Ġm anga Ġ= ĠSM anga . create () ĊĠĠĠĠĠĠĠ Ġm anga . title Ġ= Ġdocument . select (" title "). text (). substring Before (" ĠÂ» ") ĊĠĠĠĠĠĠĠ Ġm anga . author Ġ= Ġinfo Element . select (": contains ( ÐĲ Ð² ÑĤÐ¾ÑĢ ) "). text () ĊĠĠĠĠĠĠĠ Ġm anga . genre Ġ= Ġraw Category Ġ+ Ġ", Ġ" Ġ+ Ġdocument . select (". side tags Ġul Ġa : last - child "). join ToString Ġ{ Ġit . text () Ġ} ĊĠĠĠĠĠĠĠ Ġm anga . status Ġ= Ġparse Status ( info Element . select (": contains ( ÐĹ Ð°Ð³ ÑĢÑĥ Ð¶ ÐµÐ½ Ð¾ ) "). text ()) ĊĠĠĠĠĠĠĠ Ġm anga . description Ġ= Ġdesc Element . text Nodes (). first (). text (). trim () ĊĠĠĠĠĠĠĠ Ġm anga . thumbnail _ url Ġ= Ġdocument . select (" img # cover "). first (). attr (" src ") ĊĠĠĠĠĠĠĠ Ġreturn Ġm anga ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Status ( element : ĠString ): ĠInt Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . contains (" Ð¿ ÐµÑĢ ÐµÐ² Ð¾Ð´ ĠÐ· Ð°Ð² ÐµÑĢ ÑĪ ÐµÐ½ ") Ġ-> ĠSM anga . COMPLETED ĊĠĠĠĠĠĠĠ Ġelement . contains (" Ð¿ ÐµÑĢ ÐµÐ² Ð¾Ð´ ĠÐ¿ÑĢ Ð¾Ð´ Ð¾Ð»Ð¶ Ð°ÐµÑĤÑģÑı ") Ġ-> ĠSM anga . ONGO ING ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSM anga . UNKNOWN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Selector () Ġ= Ġ" table . table _ cha Ġtr : gt ( 1 )" ĊĊĠĠĠ Ġ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 Ġ= Ġsimple DateFormat . parse ( element . select (" div . date "). first (). text ()) ?. time Ġ?: Ġ 0 L ĊĠĠĠĠĠĠĠ Ġreturn Ġchapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( response : ĠResponse ): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhtml Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġbegin Index Ġ= Ġhtml . indexOf (" ful lim g \": [ ") Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġval Ġend Index Ġ= Ġhtml . indexOf (", ]", Ġbegin Index ) ĊĠĠĠĠĠĠĠ Ġval Ġtrimmed Html Ġ= Ġhtml . substring ( begin Index , Ġend Index ). replace (" \"", Ġ"") ĊĠĠĠĠĠĠĠ Ġval Ġpage Urls Ġ= Ġtrimmed Html . split (',') ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpage Urls . map Indexed Ġ{ Ġi , Ġurl Ġ-> ĠPage ( i , Ġ"", Ġurl ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( document : ĠDocument ): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠException (" Not Ġused ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠimageUrl Parse ( document : ĠDocument ) Ġ= Ġ"" ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsimple DateFormat Ġby Ġlazy Ġ{ ĠSimpleDateFormat (" yyyy - MM - dd ", ĠLocale . US ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ