package Ġcom . program mers box . anime _ sources . anime Ċ Ċ import Ġcom . program mers box . anime _ sources . Show Api Ċ import Ġcom . program mers box . anime _ sources . to J soup Ċ import Ġcom . program mers box . gson utils . fromJson Ċ import Ġcom . program mers box . models .* Ċ import Ġcom . program mers box . rx utils . invoke Ċ import Ġio . reactivex . Single Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . nodes . Element Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . net . URL Ċ Ċ abstract Ġclass ĠAn ime To on ( all Path : ĠString , Ġrecent Path : ĠString ) Ġ: ĠShow Api ( ĊĠĠĠ ĠbaseUrl Ġ= Ġ" http :// www . anime to on . org ", ĊĠĠĠ Ġall Path Ġ= Ġall Path , ĊĠĠĠ Ġrecent Path Ġ= Ġrecent Path Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġto Show Info ( element : ĠElement ) Ġ= ĠItem Model ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġelement . text (), ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ"", ĊĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġurl Ġ= Ġelement . attr (" abs : href "), ĊĠĠĠĠĠĠĠ Ġsource Ġ= Ġthis ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Source By Url ( url : ĠString ): ĠSingle < Item Model > Ġ= ĠSingle . create Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠJ soup . connect ( url ). get () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġdoc . select (" div . right _ col Ġh 1 "). text (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdoc . all Elements . select (" div # series _ details "). let Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element . select (" span # full _ notes "). has Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . select (" span # full _ notes "). text (). remove Suffix (" less ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . select (" div : contains ( Description :) "). select (" div "). text (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . substring ( it . indexOf (" Description : Ġ") Ġ+ Ġ 1 3 , Ġit . indexOf (" Category : Ġ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠString Index OutOfBoundsException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġdoc . select (" div . left _ col "). select (" img [ src ^ = http ]# series _ image ") ?. attr (" abs : src "). or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let ( it :: on Success ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onError ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetList ( doc : ĠDocument ): ĠSingle < List < Item Model >> Ġ= ĠSingle . create Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Success ( doc . all Elements . select (" td "). select (" a [ href ^ = http ]"). map ( this :: to Show Info )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onError ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Recent ( doc : ĠDocument ): ĠSingle < List < Item Model >> Ġ= ĠSingle . create Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠlistOf Stuff Ġ= Ġdoc . all Elements . select (" div . left _ col "). select (" table # updates "). select (" a [ href ^ = http ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( listOf Stuff . size Ġ== Ġ 0 ) ĠlistOf Stuff Ġ= Ġdoc . all Elements . select (" div . s _ left _ col "). select (" table # updates "). select (" a [ href ^ = http ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( listOf Stuff . map ( this :: to Show Info ). filter Ġ{ Ġ! it . title . contains (" Episode ") Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" RegExp Red undant Escape ") ĊĠĠĠ Ġoverride Ġfun Ġget Chapter Info ( chapter Model : ĠChapter Model ): ĠSingle < List < Storage >> Ġ= ĠSingle . create Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġ"< iframe Ġsrc =\" ([ ^\ "] +) \" [^ < ]+ < \\/ iframe >". to Regex (). to Pattern (). matcher ( get Html ( chapter Model . url ) !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m . find ()) Ġlist . add ( m . group ( 1 ) !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ"( http | https ): \\/ \\/ ([ \\ w + ? \\. \\ w + ])+ ([ a - zA - Z 0 - 9 \\ ~ \\ % \\ & \\ - \\ _ \\ ? \\. \\ = \\/ ]) +( part [ 0 - 9 ])+ .( \\ w *) " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġhtml c Ġ= Ġif Ġ( regex . to Regex (). to Pattern (). matcher ( list [ 0 ]). find ()) Ġlist Ġelse Ġget Html ( list [ 0 ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArrayList < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl List Ġ= Ġmutable ListOf < Storage ?> () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġhtml c ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg Ġ= Ġ" var Ġvideo _ links Ġ= Ġ( \\ { .*? \\ }); ". to Regex (). to Pattern (). matcher ( get Html ( i . toString ()) !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( reg . find ()) Ġurl List . add ( reg . group ( 1 ). fromJson < Normal Link >() ?. normal ?. storage ?. get ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Success ( url List . filter NotNull ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg Ġ= Ġ" var Ġvideo _ links Ġ= Ġ( \\ { .*? \\ }); ". to Regex (). to Pattern (). matcher ( html c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( reg . find ()) Ġit . on Success ( listOf NotNull ( reg . group ( 1 ). fromJson < Normal Link >() ?. normal ?. storage ?. get ( 0 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit . onError ( Exception (" Something Ġwent Ġwrong ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onError ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġget Html ( url : ĠString ): ĠString ? Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠBuild Ġand Ġset Ġtimeout Ġvalues Ġfor Ġthe Ġrequest . ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠURL ( url ). open Connection () ĊĠĠĠĠĠĠĠ Ġconnection . connect Timeout Ġ= Ġ 5 0 0 0 ĊĠĠĠĠĠĠĠ Ġconnection . read Timeout Ġ= Ġ 5 0 0 0 ĊĠĠĠĠĠĠĠ Ġconnection . setRequest Property (" User - Agent ", Ġ" Mozilla / 5 . 0 Ġ( Windows ĠNT Ġ 1 0 . 0 ; ĠW OW 6 4 ; Ġrv : 4 0 . 0 ) ĠGecko / 2 0 1 0 0 1 0 1 ĠFirefox / 4 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġconnection . add Request Property (" Accept - Language ", Ġ" en - US , en ; q = 0 . 5 ") ĊĠĠĠĠĠĠĠ Ġconnection . add Request Property (" Refer er ", Ġ" http :// the website . com ") ĊĠĠĠĠĠĠĠ Ġconnection . connect () ĊĠĠĠĠĠĠĠ Ġ// ĠRead Ġand Ġstore Ġthe Ġresult Ġline Ġby Ġline Ġthen Ġreturn Ġthe Ġentire Ġstring . ĊĠĠĠĠĠĠĠ Ġval Ġin 1 Ġ= Ġconnection . getInputStream () ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠBufferedReader ( InputStream Reader ( in 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġhtml Ġ= Ġreader . read Text () ĊĠĠĠĠĠĠĠ Ġin 1 . close () ĊĠĠĠĠĠĠĠ Ġhtml ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Info ( source : ĠItem Model , Ġdoc : ĠDocument ): ĠSingle < Info Model > Ġ= ĠSingle . create Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Stuff ( document : ĠDocument ) Ġ= Ġdocument . all Elements . select (" div # videos "). select (" a [ href ^ = http ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠChapter Model ( it . text (), Ġit . attr (" abs : href "), Ġ"", Ġsource . url , Ġsource . source ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInfo Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġsource . url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġdoc . select (" div . right _ col Ġh 1 "). text (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdoc . all Elements . select (" div # series _ details "). let Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element . select (" span # full _ notes "). has Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . select (" span # full _ notes "). text (). remove Suffix (" less ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . select (" div : contains ( Description :) "). select (" div "). text (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . substring ( it . indexOf (" Description : Ġ") Ġ+ Ġ 1 3 , Ġit . indexOf (" Category : Ġ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠString Index OutOfBoundsException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġdoc . select (" div . left _ col "). select (" img [ src ^ = http ]# series _ image ") ?. attr (" abs : src "). or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen res Ġ= Ġdoc . select (" span . red _ box "). select (" a [ href ^ = http ]"). each Text (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s Ġ= Ġget Stuff ( doc ) Ġ+ Ġdoc . all Elements . select (" ul . pagination "). select (" Ġbutton [ href ^ = http ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġget Stuff ( it . attr (" abs : href "). to J soup ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalternative Names Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch List ( search Text : ĠCharSequence , Ġpage : ĠInt , Ġlist : ĠList < Item Model >): ĠSingle < List < Item Model >> Ġ= ĠSingle . create Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ soup . connect (" http :// www . anime to on . org / to on / search ? key =$ search Text "). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select (" div . right _ col "). select (" h 3 "). select (" a [ href ^ = http ]"). map ( this :: to Show Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Success ( search List Non Single ( search Text , Ġpage , Ġlist )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Success ( search List Non Single ( search Text , Ġpage , Ġlist )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ object ĠAn ime To on Api Ġ: ĠAn ime To on ( ĊĠĠĠ Ġall Path Ġ= Ġ" car to on ", ĊĠĠĠ Ġrecent Path Ġ= Ġ" updates " Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġval ĠserviceName : ĠString Ġget () Ġ= Ġ" AN IME TO ON " Ċ } Ċ Ċ object ĠAn ime To on D ub bed Ġ: ĠAn ime To on ( ĊĠĠĠ Ġall Path Ġ= Ġ" dub bed - anime ", ĊĠĠĠ Ġrecent Path Ġ= Ġ" updates " Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġval ĠserviceName : ĠString Ġget () Ġ= Ġ" D UB B ED _ AN IME " Ċ } Ċ Ċ object ĠAn ime To on Movies Ġ: ĠAn ime To on ( ĊĠĠĠ Ġall Path Ġ= Ġ" movies ", ĊĠĠĠ Ġrecent Path Ġ= Ġ" updates " Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġval ĠserviceName : ĠString Ġget () Ġ= Ġ" AN IME TO ON _ MO VI ES " Ċ }