package Ġeu . kan ade . t ach iy omi . extension . en . mi h ent ai Ċ Ċ 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 Ċ 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 . SM anga Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . json Array Ċ import Ġkotlinx . serialization . json . json Primitive Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ import Ġokhttp 3 . Request Ċ import Ġorg . js oup . nodes . Document Ċ import Ġu y . ko hes ive . in jekt . inject Lazy Ċ import Ġjava . util . Locale Ċ Ċ class ĠM ih ent ai Ġ: ĠW PM anga Stream (" M ih ent ai ", Ġ" https :// mi h ent ai . com ", Ġ" en ") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ("$ baseUrl / manga / page /$ page /? order = popular ", Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ("$ baseUrl / manga / page /$ page /? order = update ", Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Request ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ"$ baseUrl / manga / page /$ page / ". to Http Url OrNull () !!. newBuilder () ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" title ", Ġquery ) ĊĠĠĠĠĠĠĠ Ġfilters . forEach Ġ{ Ġfilter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStatus Filter Ġ-> Ġurl . add QueryParameter (" status ", Ġfilter . to Uri Part ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠType Filter Ġ-> Ġurl . add QueryParameter (" type ", Ġfilter . to Uri Part ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSort By Filter Ġ-> Ġurl . add QueryParameter (" order ", Ġfilter . to Uri Part ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGen re List Filter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . state ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . state Ġ!= ĠFilter . Tri State . STATE _ IGNORE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġurl . add QueryParameter (" genre [] ", Ġit . id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ( url . build (). toString (), Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( document : ĠDocument ): ĠSM anga Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSM anga . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . select (" div . big content , Ġdiv . anime full , Ġdiv . main - info "). first OrNull ()?. let Ġ{ Ġinfo Element Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġparse Status ( info Element . select (" span : contains ( Status : ), Ġ. imp td t : contains ( Status ) Ġi "). first OrNull ()?. own Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail _ url Ġ= Ġinfo Element . select (" div . thumb Ġimg "). img Attr () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen res Ġ= Ġinfo Element . select (" span : contains ( Tag ) Ġa ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġelement Ġ-> Ġelement . text (). toLowerCase ( Locale . ROOT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable Set () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġseries Ġtype ( manga / man hw a / man h ua / other ) Ġthing gy Ġto Ġgenre ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . select (" span : contains ( Type ) "). first OrNull ()?. own Text ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty (). not () Ġ&& Ġgen res . contains ( it ). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen res . add ( it . toLowerCase ( Locale . ROOT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Ġ= Ġgen res . toList (). join ToString (", Ġ") Ġ{ Ġit . capitalize ( Locale . ROOT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġparse Status ( element : ĠString ?): ĠInt Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġelement Ġ== Ġnull Ġ-> ĠSM anga . UNKNOWN ĊĠĠĠĠĠĠĠ ĠlistOf (" ongo ing ", Ġ" publishing "). any Ġ{ Ġit . contains ( element , Ġignore Case Ġ= Ġtrue ) Ġ} Ġ-> ĠSM anga . ONGO ING ĊĠĠĠĠĠĠĠ ĠlistOf (" finished "). any Ġ{ Ġit . contains ( element , Ġignore Case Ġ= Ġtrue ) Ġ} Ġ-> ĠSM anga . COMPLETED ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSM anga . UNKNOWN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġjson : ĠJson Ġby Ġinject Lazy () ĊĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( document : ĠDocument ): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhtml Pages Ġ= Ġdocument . select ( page Selector ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . attr (" abs : src "). isNull OrEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġi , Ġimg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Url Ġ= Ġimg . attr (" abs : src "). substring After ( baseUrl ). prepend Indent ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage ( i , Ġ"", Ġpage Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġval Ġdoc String Ġ= Ġdocument . toString () ĊĠĠĠĠĠĠĠ Ġval Ġimage List Regex Ġ= ĠRegex ("\\ \" images .* ?: .* ?( \\ [ .*? \\ ]) ") ĊĠĠĠĠĠĠĠ Ġval Ġimage List Json Ġ= Ġimage List Regex . find ( doc String )?. de structured ?. toList ()?. get ( 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( image List Json Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage List Ġ= Ġjson . parse ToJson Element ( image List Json ). json Array ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Resolver Ġ= ĠbaseUrl . to Http Url () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscript Pages Ġ= Ġimage List . map Indexed Ġ{ Ġi , Ġjson El Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageUrl Ġ= Ġjson El . json Primitive . content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage ( i , Ġ"", Ġbase Resolver . resolve ( imageUrl ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( html Pages . size Ġ< Ġscript Pages . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Pages Ġ+= Ġscript Pages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcount Views ( document ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhtml Pages . distinct By Ġ{ Ġit . imageUrl Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠStatus Filter Ġ: ĠUri Part Filter ( ĊĠĠĠĠĠĠĠ Ġ" Status ", ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" All ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Publishing ", Ġ" publishing "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Finished ", Ġ" finished "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Dropped ", Ġ" drop ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġclass ĠType Filter Ġ: ĠUri Part Filter ( ĊĠĠĠĠĠĠĠ Ġ" Type ", ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Default ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" M anga ", Ġ" M anga "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Man hw a ", Ġ" Man hw a "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Man h ua ", Ġ" Man h ua "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Web to on ", Ġ" web to on "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" One - Shot ", Ġ" One - Shot "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" D ou jin ", Ġ" dou jin ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter List (): ĠFilter List Ġ= ĠFilter List ( ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus Filter (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType Filter (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSort By Filter (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGen re List Filter ( get Genre List ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Genre List (): ĠList < Genre > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠGen re (" Adventure ", Ġ" ad venture "), ĊĠĠĠĠĠĠĠ ĠGen re (" A he go ", Ġ" a he go "), ĊĠĠĠĠĠĠĠ ĠGen re (" An al ", Ġ" anal "), ĊĠĠĠĠĠĠĠ ĠGen re (" Battle ", Ġ" battle "), ĊĠĠĠĠĠĠĠ ĠGen re (" Big ĠBre ast s ", Ġ" big - bre ast s "), ĊĠĠĠĠĠĠĠ ĠGen re (" B low job ", Ġ" b low job "), ĊĠĠĠĠĠĠĠ ĠGen re (" Com ic Ġ 3 D ", Ġ" com ic - 3 d "), ĊĠĠĠĠĠĠĠ ĠGen re (" D ou jin ", Ġ" dou jin "), ĊĠĠĠĠĠĠĠ ĠGen re (" Dragon Ġball ", Ġ" dragon - ball "), ĊĠĠĠĠĠĠĠ ĠGen re (" F ing ering ", Ġ" f ing ering "), ĊĠĠĠĠĠĠĠ ĠGen re (" Full Ġcolor ", Ġ" full - color "), ĊĠĠĠĠĠĠĠ ĠGen re (" F ut an ari ", Ġ" fut an ari "), ĊĠĠĠĠĠĠĠ ĠGen re (" G ir lf riend ", Ġ" gir lf riend "), ĊĠĠĠĠĠĠĠ ĠGen re (" Group ed ", Ġ" grouped "), ĊĠĠĠĠĠĠĠ ĠGen re (" Hand job ", Ġ" hand job "), ĊĠĠĠĠĠĠĠ ĠGen re (" H ij ab ", Ġ" hi jab "), ĊĠĠĠĠĠĠĠ ĠGen re (" In ce st ", Ġ" ince st "), ĊĠĠĠĠĠĠĠ ĠGen re (" K is sing ", Ġ" k is sing "), ĊĠĠĠĠĠĠĠ ĠGen re (" M ama ", Ġ" m ama "), ĊĠĠĠĠĠĠĠ ĠGen re (" M anga ", Ġ" manga "), ĊĠĠĠĠĠĠĠ ĠGen re (" M ast urb ation ", Ġ" mast urb ation "), ĊĠĠĠĠĠĠĠ ĠGen re (" M il f ", Ġ" mil f "), ĊĠĠĠĠĠĠĠ ĠGen re (" M om Ġ& ĠSon ", Ġ" m om - son "), ĊĠĠĠĠĠĠĠ ĠGen re (" N ar uto ", Ġ" nar uto "), ĊĠĠĠĠĠĠĠ ĠGen re (" One ĠPiece ", Ġ" one - piece "), ĊĠĠĠĠĠĠĠ ĠGen re (" P reg n ancy ", Ġ" pre gn ancy "), ĊĠĠĠĠĠĠĠ ĠGen re (" R ape ", Ġ" rape "), ĊĠĠĠĠĠĠĠ ĠGen re (" Rom ance ", Ġ" rom ance "), ĊĠĠĠĠĠĠĠ ĠGen re (" School ", Ġ" school "), ĊĠĠĠĠĠĠĠ ĠGen re (" S co ob y - D oo ", Ġ" sco ob y - d oo "), ĊĠĠĠĠĠĠĠ ĠGen re (" S ister ", Ġ" s ister "), ĊĠĠĠĠĠĠĠ ĠGen re (" Stock ing ", Ġ" stock ing "), ĊĠĠĠĠĠĠĠ ĠGen re (" Sub ĠIn do ", Ġ" sub - indo "), ĊĠĠĠĠĠĠĠ ĠGen re (" Th re esome ", Ġ" th re esome "), ĊĠĠĠĠĠĠĠ ĠGen re (" Un c ens ored ", Ġ" unc ens ored "), ĊĠĠĠĠĠĠĠ ĠGen re (" West ern ", Ġ" west ern "), ĊĠĠĠĠĠĠĠ ĠGen re (" Y uri ", Ġ" y uri ") ĊĠĠĠ Ġ) Ċ } Ċ