package Ġeu . kan ade . t ach iy omi . anime extension . pt . anime s vision Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . preference . List Preference Ċ import Ġandroidx . preference . Multi Select List Preference Ċ import Ġandroidx . preference . Preference Screen Ċ import Ġeu . kan ade . t ach iy omi . anime extension . pt . anime s vision . extract ors . Do od Extractor Ċ import Ġeu . kan ade . t ach iy omi . anime extension . pt . anime s vision . extract ors . Stream Tape Extractor Ċ import Ġeu . kan ade . t ach iy omi . anime extension . pt . anime s vision . extract ors . Vision Free Extractor Ċ import Ġeu . kan ade . t ach iy omi . anime source . Configurable An ime Source Ċ import Ġeu . kan ade . t ach iy omi . anime source . model . An ime Filter List Ċ import Ġeu . kan ade . t ach iy omi . anime source . model . An imes Page Ċ import Ġeu . kan ade . t ach iy omi . anime source . model . S An ime Ċ import Ġeu . kan ade . t ach iy omi . anime source . model . SE p isode Ċ import Ġeu . kan ade . t ach iy omi . anime source . model . Video Ċ import Ġeu . kan ade . t ach iy omi . anime source . online . Parsed An ime Http Source Ċ import Ġeu . kan ade . t ach iy omi . network . GET Ċ import Ġeu . kan ade . t ach iy omi . network . POST Ċ import Ġeu . kan ade . t ach iy omi . network . as Observable Success Ċ import Ġeu . kan ade . t ach iy omi . util . as J soup Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . JsonArray Ċ import Ġkotlinx . serialization . json . Json Element Ċ import Ġkotlinx . serialization . json . Json Null Ċ import Ġkotlinx . serialization . json . JsonObject Ċ import Ġkotlinx . serialization . json . Json Primitive Ċ import Ġokhttp 3 . Headers Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġokhttp 3 . Response Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . nodes . Element Ċ import Ġrx . Observable Ċ import Ġu y . ko hes ive . in jekt . In jekt Ċ import Ġu y . ko hes ive . in jekt . api . get Ċ import Ġjava . lang . Exception Ċ Ċ class ĠAn imes Vision Ġ: ĠConfigur able An ime Source , ĠParsed An ime Http Source () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" An imes Vision " ĊĊĠĠĠ Ġoverride Ġval ĠbaseUrl Ġ= Ġ" https :// anime s . vision " ĊĊĠĠĠ Ġoverride Ġval Ġlang Ġ= Ġ" pt - BR " ĊĊĠĠĠ Ġoverride Ġval Ġsupports Latest Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġval Ġclient : ĠOk HttpClient Ġ= Ġnetwork . cloudflare Client ĊĊĠĠĠ Ġprivate Ġval Ġjson Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpreferences : ĠSharedPreferences Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠIn jekt . get < Application >(). get SharedPreferences (" source _$ id ", Ġ 0 x 0 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġheaders Builder (): ĠHeaders . Builder Ġ= ĠHeaders . Builder () ĊĠĠĠĠĠĠĠ Ġ. add (" Refer er ", ĠbaseUrl ) ĊĠĠĠĠĠĠĠ Ġ. add (" Accept - Language ", ĠAC CEPT _ LANGUAGE ) ĊĊĠĠĠ Ġ// Ġ================= ============= ĠPop ular Ġ================= ============== ĠĠĠĊĠĠĠ Ġprivate Ġfun Ġnext Page Selector (): ĠString Ġ= Ġ" ul . pagination Ġli . page - item : contains ( âĢ º )" ĊĠĠĠ Ġoverride Ġfun Ġpopular An ime Selector (): ĠString Ġ= Ġ" div # anime - trend ing Ġdiv . item Ġ> Ġa . film - poster " ĊĠĠĠ Ġoverride Ġfun Ġpopular An ime Request ( page : ĠInt ): ĠRequest Ġ= ĠGET ( baseUrl ) ĊĊĠĠĠ Ġoverride Ġfun Ġpopular An ime From Element ( element : ĠElement ): ĠS An ime Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġan ime : ĠS An ime Ġ= ĠS An ime . create () ĊĠĠĠĠĠĠĠ Ġval Ġimg Ġ= Ġelement . select First (" img ") ĊĠĠĠĠĠĠĠ Ġan ime . set Url Without Domain ( element . attr (" href ")) ĊĠĠĠĠĠĠĠ Ġan ime . title Ġ= Ġimg . attr (" title ") ĊĠĠĠĠĠĠĠ Ġan ime . thumbnail _ url Ġ= Ġimg . attr (" src ") ĊĠĠĠĠĠĠĠ Ġreturn Ġan ime ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopular An ime Next Page Selector () Ġ= Ġthrow ĠException (" not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġpopular An ime Parse ( response : ĠResponse ): ĠAn imes Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġresponse . as J soup () ĊĠĠĠĠĠĠĠ Ġval Ġan imes Ġ= Ġdocument . select ( popular An ime Selector ()). map Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopular An ime From Element ( element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAn imes Page ( anime s , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================= ============= ĠEp isode s Ġ================= ============= ĊĠĠĠ Ġoverride Ġfun Ġepisode List Selector (): ĠString Ġ= Ġ" div . container Ġdiv . screen - items Ġ> Ġdiv . item " ĊĊĠĠĠ Ġprivate Ġfun ĠgetAll E ps ( response : ĠResponse ): ĠList < SE p isode > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġep List Ġ= Ġmutable ListOf < SE p isode >() ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġresponse . request . url . toString () ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= Ġif Ġ( url . contains ("/ ep is od io - ") Ġ|| Ġurl . contains ("/ fil me - ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Real Doc ( response . as J soup ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġresponse . as J soup () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġep Element List Ġ= Ġdoc . select ( episode List Selector ()) ĊĠĠĠĠĠĠĠ Ġep List . addAll ( ep Element List . map Ġ{ Ġepisode From Element ( it ) Ġ}) ĊĠĠĠĠĠĠĠ Ġif Ġ( hasNext Page ( doc )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Url Ġ= Ġdoc . select First ( next Page Selector ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select First (" a ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Response Ġ= Ġclient . new Call ( GET ( next Url )). execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġep List . addAll ( getAll E ps ( new Response )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġep List ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġepisode List Parse ( response : ĠResponse ): ĠList < SE p isode > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetAll E ps ( response ). reversed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġepisode From Element ( element : ĠElement ): ĠSE p isode Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġepisode Ġ= ĠSE p isode . create () ĊĊĠĠĠĠĠĠĠ Ġepisode . set Url Without Domain ( element . select First (" a "). attr (" href ")) ĊĠĠĠĠĠĠĠ Ġval Ġep Name Ġ= Ġelement . select First (" h 3 "). text (). trim () ĊĠĠĠĠĠĠĠ Ġepisode . name Ġ= Ġep Name ĊĠĠĠĠĠĠĠ Ġepisode . episode _ number Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġep Name . substring After Last (" Ġ"). toFloat () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ Ġ 0 F Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġepisode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================= =========== ĠVideo ĠLinks Ġ================= ============ ĊĠĠĠ Ġoverride Ġfun Ġvideo List Parse ( response : ĠResponse ): ĠList < Video > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument : ĠDocument Ġ= Ġresponse . as J soup () ĊĠĠĠĠĠĠĠ Ġreturn Ġvideos From Episode ( document ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Players Url ( doc : ĠDocument ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwire Div : ĠElement Ġ= Ġdoc . select First (" div [ wire : id ]") ĊĠĠĠĠĠĠĠ Ġval Ġdiv Data : ĠString Ġ= Ġwire Div . attr (" wire : initial - data ") !! ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġjson . decode FromString < JsonObject >( div Data ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Map : ĠMap < *, Ġ*> Ġ= ĠjsonObject . toMap () ĊĠĠĠĠĠĠĠ Ġval Ġwire Token : ĠString Ġ= Ġdoc . html () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring After (" liv ewire _ token ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring After ("' ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring Before ("' ") ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġheaders Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" x - liv ewire ", Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" x - csrf - token ", Ġwire Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" content - type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġhosts _ ids Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġval Ġignored Hosts Ġ= Ġpreferences . getString Set ( IG NO RED _ HOST S , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġignore DO Ġ= Ġignored Hosts ?. contains ( HOST S _ NAMES . elementAt ( 1 )) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġignore ST Ġ= Ġignored Hosts ?. contains ( HOST S _ NAMES . elementAt ( 2 )) Ġ?: Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! ignore ST ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhosts _ ids . add ( 5 ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! ignore DO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhosts _ ids . add ( 8 ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhosts _ ids . map NotNull Ġ{ Ġid Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Data Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type " Ġto Ġ" call Method ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" payload " Ġto Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id " Ġto Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" method " Ġto Ġ" mud ar Player ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" params " Ġto ĠlistOf ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Map Ġ= Ġjson Map . to Mutable Map (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" updates ", Ġupdate Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġrequest Map . to JsonObject (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Body Ġ= Ġbody . to RequestBody () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ"$ baseUrl / liv ewire / message / components . ep is od io . player - ep is od io - component " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġclient . new Call ( POST ( url , Ġheaders , Ġreq Body )). execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Json Ġ= Ġjson . decode FromString < AV Response Dto >( res . body ?. string (). or Empty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Json . server Memo ?. data ?. frame Play ĊĠĠĠĠĠĠĠ Ġ} Ġas ĠList < String > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvideos From Episode ( doc : ĠDocument ): ĠList < Video > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhtml : ĠString Ġ= Ġdoc . html () ĊĠĠĠĠĠĠĠ Ġval Ġvideo List Ġ= ĠVision Free Extractor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. video List From Html ( html ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable List () ĊĠĠĠĠĠĠĠ Ġget Players Url ( doc ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo Ġ= Ġif Ġ( it . contains (" stream tape ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStream Tape Extractor ( client ). video From Url ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . contains (" do od ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDo od Extractor ( client ). video From Url ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo List . add ( video ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvideo List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvideo List Selector () Ġ= Ġthrow ĠException (" not Ġused ") ĊĠĠĠ Ġoverride Ġfun Ġvideo From Element ( element : ĠElement ) Ġ= Ġthrow ĠException (" not Ġused ") ĊĠĠĠ Ġoverride Ġfun Ġvideo Url Parse ( document : ĠDocument ) Ġ= Ġthrow ĠException (" not Ġused ") ĊĊĠĠĠ Ġ// Ġ================= ============== ĠSearch Ġ================= ============== ĊĠĠĠ Ġoverride Ġfun Ġsearch An ime From Element ( element : ĠElement ): ĠS An ime Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġan ime : ĠS An ime Ġ= ĠS An ime . create () ĊĠĠĠĠĠĠĠ Ġval Ġelement A Ġ= Ġelement . select First (" a ") ĊĠĠĠĠĠĠĠ Ġan ime . title Ġ= Ġelement A . attr (" title ") ĊĠĠĠĠĠĠĠ Ġan ime . set Url Without Domain ( element A . attr (" href ")) ĊĠĠĠĠĠĠĠ Ġan ime . thumbnail _ url Ġ= Ġelement . select First (" img "). attr (" data - src ") ĊĠĠĠĠĠĠĠ Ġreturn Ġan ime ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch An ime Next Page Selector () Ġ= Ġthrow ĠException (" not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġsearch An ime Selector (): ĠString Ġ= Ġ" div . film _ list - wrap Ġdiv . film - poster " ĊĊĠĠĠ Ġoverride Ġfun Ġsearch An ime Parse ( response : ĠResponse ): ĠAn imes Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġresponse . as J soup () ĊĠĠĠĠĠĠĠ Ġval Ġan imes Ġ= Ġdocument . select ( search An ime Selector ()). map Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch An ime From Element ( element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAn imes Page ( anime s , Ġhas Next Page ( document )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Search An ime ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠAn ime Filter List ): ĠObservable < An imes Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠAV Filters . get Search Parameters ( filters ) ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . new Call ( search An ime Request ( page , Ġquery , Ġparams )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Observable Success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch An ime Parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch An ime Request ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠAn ime Filter List ): ĠRequest Ġ= Ġthrow ĠException (" not Ġused ") ĊĊĠĠĠ Ġprivate Ġfun Ġsearch An ime Request ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠAV Filters . Filter Search Params ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ"$ baseUrl / search ? ". to Http Url OrNull () !!. newBuilder () ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" page ", Ġpage . toString ()) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" nome ", Ġquery ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" tipo ", Ġfilters . type ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" idi oma ", Ġfilters . language ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" orden ar ", Ġfilters . sort ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" ano _ in icial ", Ġfilters . initial _ year ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" ano _ final ", Ġfilters . last _ year ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" f ans ub ", Ġfilters . f ans ub ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" status ", Ġfilters . status ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" temp or ada ", Ġfilters . season ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" est ud ios ", Ġfilters . studio ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" produto res ", Ġfilters . producer ) ĊĠĠĠĠĠĠĠ Ġurl . add QueryParameter (" gener os ", Ġfilters . genres ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGET ( url . build (). toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================= ========== ĠAn ime ĠDetails Ġ================= =========== ĊĠĠĠ Ġoverride Ġfun Ġan ime Details Parse ( document : ĠDocument ): ĠS An ime Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġan ime Ġ= ĠS An ime . create () ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= Ġget Real Doc ( document ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġdoc . select First (" div # ani _ detail Ġdiv . an is - content ") ĊĠĠĠĠĠĠĠ Ġval Ġdetail Ġ= Ġcontent . select First (" div . an isc - detail ") ĊĠĠĠĠĠĠĠ Ġval Ġinfos Ġ= Ġcontent . select First (" div . an isc - info ") ĊĊĠĠĠĠĠĠĠ Ġan ime . thumbnail _ url Ġ= Ġcontent . select First (" img "). attr (" src ") ĊĠĠĠĠĠĠĠ Ġan ime . title Ġ= Ġdetail . select First (" h 2 . film - name "). text () ĊĠĠĠĠĠĠĠ Ġan ime . genre Ġ= Ġinfos . getInfo (" G Ãª ner os ") ĊĠĠĠĠĠĠĠ Ġan ime . author Ġ= Ġinfos . getInfo (" Produto res ") ĊĠĠĠĠĠĠĠ Ġan ime . artist Ġ= Ġinfos . getInfo (" Est Ãº di os ") ĊĠĠĠĠĠĠĠ Ġan ime . status Ġ= Ġparse Status ( infos . getInfo (" Status ")) ĊĊĠĠĠĠĠĠĠ Ġvar Ġdesc Ġ= Ġinfos . getInfo (" Sin op se ") Ġ+ Ġ"\ n " ĊĠĠĠĠĠĠĠ Ġinfos . getInfo (" In gl Ãª s ") ?. let Ġ{ Ġdesc Ġ+= Ġ"\ n T ÃŃtulo Ġem Ġing l Ãª s : Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠ Ġinfos . getInfo (" J apon Ãª s ") ?. let Ġ{ Ġdesc Ġ+= Ġ"\ n T ÃŃtulo Ġem Ġj apon Ãª s : Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠ Ġinfos . getInfo (" F oi ") ?. let Ġ{ Ġdesc Ġ+= Ġ"\ n F oi Ġao Ġar Ġem : Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠ Ġinfos . getInfo (" Temp or ada ") ?. let Ġ{ Ġdesc Ġ+= Ġ"\ n Temp or ada : Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠ Ġinfos . getInfo (" D uraÃ§Ã£o ") ?. let Ġ{ Ġdesc Ġ+= Ġ"\ n D uraÃ§Ã£o : Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠ Ġinfos . getInfo (" F ans ub ") ?. let Ġ{ Ġdesc Ġ+= Ġ"\ n F ans ub : Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠ Ġan ime . description Ġ= Ġdesc ĊĊĠĠĠĠĠĠĠ Ġreturn Ġan ime ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================= ============== ĠLatest Ġ================= ============== ĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Next Page Selector () Ġ= Ġthrow ĠException (" not Ġused ") ĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Selector (): ĠString Ġ= Ġepisode List Selector () ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates From Element ( element : ĠElement ): ĠS An ime Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġan ime Ġ= ĠS An ime . create () ĊĠĠĠĠĠĠĠ Ġan ime . set Url Without Domain ( element . select First (" a "). attr (" href ")) ĊĠĠĠĠĠĠĠ Ġan ime . title Ġ= Ġelement . select First (" h 3 "). text () ĊĠĠĠĠĠĠĠ Ġan ime . thumbnail _ url Ġ= Ġelement . select First (" img "). attr (" src ") ĊĠĠĠĠĠĠĠ Ġreturn Ġan ime ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ= ĠGET ("$ baseUrl / l anc amentos ? page =$ page ") ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Parse ( response : ĠResponse ): ĠAn imes Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġresponse . as J soup () ĊĠĠĠĠĠĠĠ Ġval Ġan imes Ġ= Ġdocument . select ( latest Updates Selector ()). map Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Updates From Element ( element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhas Next Page Ġ= Ġhas Next Page ( document ) ĊĠĠĠĠĠĠĠ Ġreturn ĠAn imes Page ( anime s , Ġhas Next Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================= ============= ĠSettings Ġ================= ============= ĠĊĠĠĠ Ġoverride Ġfun Ġsetup Preference Screen ( screen : ĠPreference Screen ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġvideo Server Pref Ġ= ĠList Preference ( screen . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠP REFER RED _ HOST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Host Ġprefer ido " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= ĠHO STS _ NAMES ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= ĠHO STS _ URL S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue ( HOST S _ URL S . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ"% s " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Ġ= ĠnewValue Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġfind IndexOf Value ( selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġentry Values [ index ] Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . edit (). putString ( key , Ġentry ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvideo Quality Pref Ġ= ĠList Preference ( screen . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠP REFER RED _ QUAL ITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Qual idade Ġprefer ida Ġ( V Ã¡l ido Ġapenas Ġno ĠVision Free )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= ĠQ UAL ITY _ LIST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= ĠQ UAL ITY _ LIST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue ( QUAL ITY _ LIST . last ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ"% s " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Ġ= ĠnewValue Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġfind IndexOf Value ( selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġentry Values [ index ] Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . edit (). putString ( key , Ġentry ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġignored Hosts Ġ= ĠMulti Select List Preference ( screen . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠHO STS _ NAMES . drop ( 1 ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠIG NO RED _ HOST S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Hosts Ġign or ados Ġao Ġcar regar " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue ( empty Set < String >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString Set ( key , ĠnewValue Ġas ĠSet < String >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġscreen . add Preference ( video Server Pref ) ĊĠĠĠĠĠĠĠ Ġscreen . add Preference ( video Quality Pref ) ĊĠĠĠĠĠĠĠ Ġscreen . add Preference ( ignored Hosts ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter List (): ĠAn ime Filter List Ġ= ĠAV Filters . filter List ĊĊĠĠĠ Ġ// Ġ================= ============ ĠUtilities Ġ================= ============= ĊĠĠĠ Ġprivate Ġfun Ġget Real Doc ( document : ĠDocument ): ĠDocument Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġdocument . select First (" div . player - frame ") ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġdocument . select First (" h 2 . film - name Ġ> Ġa "). attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġclient . new Call ( GET ( url )). execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreq . as J soup () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdocument ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Status ( status String : ĠString ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( status String ?. trim ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" F im Ġda Ġexib iÃ§Ã£o " Ġ-> ĠS An ime . COMPLETED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" At ual mente Ġsend o Ġexib ido " Ġ-> ĠS An ime . ONGO ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS An ime . UNKNOWN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Next Page ( document : ĠDocument ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġdocument . select First ( next Page Selector ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( next Ġ== Ġnull ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġ! next . hasClass (" disabled ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠElement . getInfo ( key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiv : ĠElement ? Ġ= Ġthis . select First (" div . item : contains ($ key )") ĊĠĠĠĠĠĠĠ Ġif Ġ( div Ġ== Ġnull ) Ġreturn Ġdiv ĊĠĠĠĠĠĠĠ Ġval Ġelements A Ġ= Ġdiv . select (" a [ href ]") ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġif Ġ( elements A . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( div . hasClass (" w - hide ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv . select First (" div . text "). text (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv . select First (" span . name "). text (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements A . map Ġ{ Ġit . text (). trim () Ġ}. join ToString (", Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( text Ġ== Ġ"") Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠList < Video >. sort (): ĠList < Video > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhost Ġ= Ġpreferences . getString ( PREFERRED _ HOST , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġquality Ġ= Ġpreferences . getString ( PREFERRED _ QUAL ITY , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( host Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpreferred Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew List Ġ= Ġmutable ListOf < Video >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( video Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video . url . contains ( host )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( host Ġ== ĠHO STS _ URL S . first () Ġ&& Ġquality Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontains : ĠBoolean Ġ= Ġvideo . quality . contains ( quality ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contains ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . add ( preferred , Ġvideo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferred ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . add ( video ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . add ( preferred , Ġvideo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferred ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . add ( video ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew List ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun ĠAny ?. toJson Element (): ĠJson Element Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠNumber Ġ-> ĠJson Primitive ( this ) ĊĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> ĠJson Primitive ( this ) ĊĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠJson Primitive ( this ) ĊĠĠĠĠĠĠĠ Ġis ĠArray < *> Ġ-> Ġthis . toJson Array () ĊĠĠĠĠĠĠĠ Ġis ĠList < *> Ġ-> Ġthis . toJson Array () ĊĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġthis . to JsonObject () ĊĠĠĠĠĠĠĠ Ġis ĠJson Element Ġ-> Ġthis ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠJson Null ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠArray <* >. toJson Array () Ġ= ĠJson Array ( map Ġ{ Ġit . toJson Element () Ġ}) ĊĠĠĠ Ġprivate Ġfun ĠIterable <* >. toJson Array () Ġ= ĠJson Array ( map Ġ{ Ġit . toJson Element () Ġ}) ĊĠĠĠ Ġprivate Ġfun ĠMap < *, Ġ* >. to JsonObject () Ġ= ĠJsonObject ( map Keys Ġ{ Ġit . key . toString () Ġ}. map Values Ġ{ Ġit . value . toJson Element () Ġ}) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAC CEPT _ LANGUAGE Ġ= Ġ" pt - BR , pt ; q = 0 . 9 , en - US ; q = 0 . 8 , en ; q = 0 . 7 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP REFER RED _ HOST Ġ= Ġ" preferred _ host " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP REFER RED _ QUAL ITY Ġ= Ġ" preferred _ quality " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠIG NO RED _ HOST S Ġ= Ġ" ignored _ hosts " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠHO STS _ NAMES Ġ= ĠarrayOf (" Vision Free ", Ġ" Do od Stream ", Ġ" Stream Tape ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠHO STS _ URL S Ġ= ĠarrayOf (" anime s . vision ", Ġ" https :// do od ", Ġ" https :// stream tape ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠQ UAL ITY _ LIST Ġ= ĠarrayOf (" SD ", Ġ" HD ") ĊĠĠĠ Ġ} Ċ } Ċ