package Ġeu . kan ade . t ach iy omi . anime extension . pt . anime y ab u Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . preference . List Preference Ċ import Ġandroidx . preference . Preference Screen Ċ import Ġeu . kan ade . t ach iy omi . anime extension . pt . anime y ab u . AY Filters . apply Filter Params Ċ import Ġeu . kan ade . t ach iy omi . anime extension . pt . anime y ab u . extract ors . Player One Extractor Ċ import Ġeu . kan ade . t ach iy omi . anime extension . pt . anime y ab u . extract ors . Player Two 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 . util . as J soup Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġokhttp 3 . Headers Ċ 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 Ġ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 ime Y ab u Ġ: ĠConfigur able An ime Source , ĠParsed An ime Http Source () Ġ{ ĊĊĠĠĠ Ġ// ĠHard code Ġthe ĠID Ġbecause Ġthe Ġname Ġwas Ġmodified ĊĠĠĠ Ġoverride Ġval Ġid : ĠLong Ġ= Ġ 3 3 6 4 3 2 2 7 3 1 8 1 5 8 3 8 5 7 1 ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" An ime Y ab u !" ĊĊĠĠĠ Ġoverride Ġval ĠbaseUrl Ġ= Ġ" https :// anime y ab u . com " ĊĊĠĠĠ Ġ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 Ġvar Ġsearch Json : ĠList < SearchResult Dto >? Ġ= Ġnull ĊĊĠĠĠ Ġ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 (" Accept - Language ", ĠA Y Constants . ACCEPT _ LANGUAGE ) ĊĠĠĠĠĠĠĠ Ġ. add (" Refer er ", ĠbaseUrl ) ĊĊĠĠĠ Ġ// Ġ================= ============= ĠPop ular Ġ================= ============== ĊĠĠĠ Ġoverride Ġfun Ġpopular An ime Selector (): ĠString Ġ= Ġ" div . video - thumb Ġ> Ġa . clip - link " ĊĠĠĠ Ġ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 Ġ= Ġ"$ baseUrl /${ 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 Ġcontent Ġ= Ġdocument . select (" div . loop - content "). get ( 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġan imes Ġ= Ġcontent . 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 . loop - content . php vi be - video - list Ġdiv . video - thumb Ġ> Ġa . clip - link " ĊĊĠĠĠ Ġ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 ("/ play / ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ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 ) Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġdoc . select First (" div . n aco Ġ> Ġa . next ") ĊĠĠĠĠĠĠĠ Ġif Ġ( next Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Response Ġ= Ġclient . new Call ( GET ( next . attr (" href ")) ). 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 . attr (" href ")) ĊĠĠĠĠĠĠĠ Ġval Ġep Name Ġ= Ġelement . attr (" title "). substring After Last (" âĢĵ Ġ") ĊĠĠĠĠĠĠĠ Ġepisode . name Ġ= Ġep Name ĊĠĠĠĠĠĠĠ Ġepisode . episode _ number Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġep Name . substring After (" Ġ"). substring Before (" Ġ"). 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 () ĊĠĠĠĠĠĠĠ Ġval Ġhtml : ĠString Ġ= Ġdocument . html () ĊĠĠĠĠĠĠĠ Ġval Ġvideo List Ġ= ĠPlayer One Extractor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. video List From Html ( html ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable List () ĊĠĠĠĠĠĠĠ Ġval Ġiframe Ġ= Ġdocument . select First (" div # tab - 2 Ġ> Ġiframe ") ĊĠĠĠĠĠĠĠ Ġif Ġ( iframe Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Url Ġ= Ġiframe . attr (" src ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo Ġ= ĠPlayer Two Extractor ( client ). video From Player Url ( player Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ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 ) Ġ= Ġthrow ĠException (" not Ġused ") ĊĊĠĠĠ Ġprivate Ġfun Ġsearch An ime From Result ( result : ĠSearch Result Dto ): ĠS An ime Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġan ime : ĠS An ime Ġ= ĠS An ime . create () ĊĠĠĠĠĠĠĠ Ġan ime . title Ġ= Ġresult . title ĊĠĠĠĠĠĠĠ Ġan ime . set Url Without Domain ("/ " Ġ+ Ġresult . slug ) ĊĠĠĠĠĠĠĠ Ġan ime . thumbnail _ url Ġ= Ġ"$ baseUrl /${ result . cover }" ĊĠĠĠĠĠĠĠ Ġreturn Ġan ime ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch An ime Next Page Selector () Ġ= Ġthrow ĠException (" not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġsearch An ime Selector () Ġ= Ġthrow ĠException (" not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġsearch An ime Parse ( response : ĠResponse ) Ġ= Ġthrow ĠException (" not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Search An ime ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠAn ime Filter List ): ĠObservable < An imes Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠA Y Filters . get Search Parameters ( filters ) ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( search An ime Request ( page , Ġquery , Ġparams )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 , Ġfilter Params : ĠA Y Filters . Filter Search Params ): ĠAn imes Page Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter Params . anime Name Ġ= Ġquery ĊĠĠĠĠĠĠĠ Ġif Ġ( search Json Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġclient . new Call ( GET ("$ baseUrl / api / show . php ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ?. string (). or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Json Ġ= Ġjson . decode FromString < List < SearchResult Dto >>( body ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmutable Json Ġ= Ġsearch Json !!. to Mutable List () ĊĠĠĠĠĠĠĠ Ġmutable Json . apply Filter Params ( filter Params ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġmutable Json . chunk ed ( 3 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġhas Next Page Ġ= Ġresults . size Ġ> Ġpage ĊĠĠĠĠĠĠĠ Ġval ĠcurrentPage Ġ= Ġif Ġ( results . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List < S An ime >() ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . get ( page Ġ- Ġ 1 ). map Ġ{ Ġsearch An ime From Result ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAn imes Page ( currentPage , Ġhas Next Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================= ========== Ġ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 Ġinfos Ġ= Ġdoc . select First (" div . anime - info ") ĊĠĠĠĠĠĠĠ Ġval Ġimg Ġ= Ġinfos . select First (" img ") ĊĊĠĠĠĠĠĠĠ Ġan ime . thumbnail _ url Ġ= Ġimg . attr (" src ") ĊĠĠĠĠĠĠĠ Ġan ime . title Ġ= Ġimg . attr (" title ") ĊĠĠĠĠĠĠĠ Ġan ime . genre Ġ= Ġinfos . getInfo (" div . anime - genres ") ĊĠĠĠĠĠĠĠ Ġan ime . status Ġ= Ġparse Status ( infos . getInfo (" div . anime - status ")) ĊĊĠĠĠĠĠĠĠ Ġvar Ġdesc Ġ= Ġdoc . select First (" div . anime - syn opsis "). text () Ġ+ Ġ"\ n " ĊĠĠĠĠĠĠĠ Ġdesc Ġ+= Ġ"\ n T ÃŃtulo Ġaltern ativo : Ġ${ infos . getInfo (" div . anime - alt - title ") }" ĊĠĠĠĠĠĠĠ Ġdesc Ġ+= Ġ"\ n Ã ļ lt ima Ġatual izaÃ§Ã£o : Ġ${ infos . getInfo (" div . anime - last - updated ") }" ĊĠĠĠĠĠĠĠ Ġdesc Ġ+= Ġ"\ n Ep is Ã³ di os : Ġ${ infos . getInfo (" div . anime - counter ") }" ĊĠĠĠĠĠĠĠ Ġan ime . description Ġ= Ġdesc ĊĊĠĠĠĠĠĠĠ Ġreturn Ġan ime ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================= ============== ĠLatest Ġ================= ============== ĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Next Page Selector () Ġ= Ġ" div # pagination Ġi : contains ( forward )" ĊĠĠĠ Ġ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 () ĊĠĠĠĠĠĠĠ Ġ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 Ġ= Ġ"$ baseUrl /${ img . attr (" src ") }" ĊĠĠĠĠĠĠĠ Ġreturn Ġan ime ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ= ĠGET ("$ baseUrl / page /$ page /") ĊĊĠĠĠ Ġ// Ġ================= ============= ĠSettings Ġ================= ============= ĊĠĠĠ Ġoverride Ġfun Ġsetup Preference Screen ( screen : ĠPreference Screen ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġvideo Player Pref Ġ= ĠList Preference ( screen . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠA Y Constants . PREFERRED _ PLAYER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Player Ġprefer ido " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= ĠA Y Constants . PLAYER _ NAMES ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= ĠA Y Constants . PLAYER _ NAMES ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue ( AY Constants . PLAYER _ NAMES . 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 Ġ= ĠA Y Constants . PREFERRED _ QUAL ITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Qual idade Ġprefer ida " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= ĠA Y Constants . QUAL ITY _ LIST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= ĠA Y Constants . QUAL ITY _ LIST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue ( AY Constants . 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 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscreen . add Preference ( video Player Pref ) ĊĠĠĠĠĠĠĠ Ġscreen . add Preference ( video Quality Pref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter List (): ĠAn ime Filter List Ġ= ĠA Y Filters . filter List ĊĊĠĠĠ Ġ// Ġ================= ============ ĠUtilities Ġ================= ============= ĊĠĠĠ Ġprivate Ġfun Ġget Real Doc ( document : ĠDocument ): ĠDocument Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġdocument . select First (" div # video - content ") ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġdocument . select First (" div . user - box - txt Ġ> Ġa "). attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġclient . new Call ( GET ( url )). execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreq . as J soup () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdocument ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠElement . getInfo ( selector : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . select First ("$ selector Ġ> Ġb "). next Sibling (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Status ( status String : ĠString ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( status String ?. trim ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Comp leto " Ġ-> ĠS An ime . COMPLETED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Em Ġlan Ã§ amento " Ġ-> ĠS An ime . ONGO ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS An ime . UNKNOWN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠList < Video >. sort (): ĠList < Video > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquality Ġ= Ġpreferences . getString ( AY Constants . PREFERRED _ QUAL ITY , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġpreferences . getString ( AY Constants . PREFERRED _ PLAYER , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġnew List Ġ= Ġmutable ListOf < Video >() ĊĠĠĠĠĠĠĠ Ġvar Ġpreferred Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( video Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquality Ġ!= Ġnull Ġ&& Ġvideo . quality . contains ( quality ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . add ( preferred , Ġvideo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferred ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Ġ!= Ġnull Ġ&& Ġvideo . quality . contains ( player ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . add ( preferred , Ġvideo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferred ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnew List . add ( video ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnew List ĊĠĠĠ Ġ} Ċ } Ċ