package Ġnet . d aves an . an istream . utils . parser Ċ Ċ import Ġio . realm . Realm List Ċ import Ġnet . d aves an . an istream . utils . constants . C Ċ import Ġnet . d aves an . an istream . utils . model .* Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . select . Elements Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . lang . NullPointerException Ċ import Ġjava . util . regex . Pattern Ċ Ċ class ĠHtml Parser Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Recent Sub Or D ub ( response : ĠString , Ġtype Value : ĠInt ) Ġ: ArrayList < An ime Meta Model > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Meta Model List : ĠArrayList < An ime Meta Model > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlists Ġ= Ġdocument ?. getElementsBy Class (" items ") ?. first ()?. select (" li ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlists ?. forEach Ġ{ Ġan ime Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Info Ġ= Ġan ime . getElementsBy Class (" name "). first (). select (" a ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġan ime Info . attr (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Url Ġ= Ġan ime Info . attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Number Ġ= Ġan ime . getElementsBy Class (" episode "). first (). text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Image Info Ġ= Ġan ime . select First (" a ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageUrl Ġ= Ġan ime Image Info . select (" img "). first (). abs Url (" src ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Meta Model List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAn ime Meta Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠID Ġ= Ġ"$ title $ type Value ". hashCode (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Number Ġ= Ġepisode Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Url Ġ= Ġepisode Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Url Ġ= Ġget Category Url ( imageUrl ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= ĠimageUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Value Ġ= Ġtype Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsertion Order Ġ= Ġi ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġan ime Meta Model List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Pop ular ( response : ĠString , Ġtype Value : ĠInt ) Ġ: ĠArrayList < An ime Meta Model >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Meta Model List : ĠArrayList < An ime Meta Model > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlists Ġ= Ġdocument ?. getElementsBy Class (" added _ series _ body Ġpopular ") ?. first ()?. select (" ul ") ?. first ()?. select (" li ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" POP ULAR \ n \ n \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi = 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlists ?. forEach Ġ{ anime -> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Info First Ġ= Ġan ime . select (" a "). first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Div Ġ= Ġan ime Info First . getElementsBy Class (" thumbnail - popular "). first (). attr (" style "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageUrl Ġ= Ġimage Div . substring ( image Div . indexOf (' \' ') + 1 , Ġimage Div . lastIndexOf ('\ '' )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Url Ġ= Ġan ime Info First . attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Title Ġ= Ġan ime Info First . attr (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Info Second Ġ= Ġan ime . select (" p "). last (). select (" a ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Url Ġ= Ġan ime Info Second . attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Number Ġ= Ġan ime Info Second . text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre Html List Ġ= Ġan ime . getElementsBy Class (" genres "). first (). select (" a ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( genre Html List . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre List Ġ= ĠRealm List < Genre Model >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre List . addAll ( get Genre List ( genre Html List )) ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Meta Model List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAn ime Meta Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠID Ġ=" $ anime Title $ type Value ". hashCode (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġan ime Title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Number Ġ= Ġepisode Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Url Ġ= Ġepisode Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Url Ġ= Ġcategory Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= ĠimageUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Value Ġ= Ġtype Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre List Ġ= Ġgenre List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsertion Order Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġan ime Meta Model List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Movie ( response : ĠString , Ġtype Value : ĠInt ) Ġ: ĠArrayList < An ime Meta Model >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Meta Model List : ĠArrayList < An ime Meta Model > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" LOG CAT Ġ"+ Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlists Ġ= Ġdocument ?. getElementsBy Class (" items ") ?. first ()?. select (" li ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlists ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovie Info Ġ= Ġit . select (" a "). first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovie Url Ġ= Ġmovie Info . attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovie Name Ġ= Ġmovie Info . attr (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageUrl Ġ= Ġmovie Info . select (" img "). first (). abs Url (" src ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreleased Date Ġ= Ġit . getElementsBy Class (" released ") ?. first ()?. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Meta Model List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAn ime Meta Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠID Ġ= Ġ"$ movie Name $ type Value ". hashCode (). hashCode (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġmovie Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= ĠimageUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Url Ġ= Ġmovie Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Url Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Number Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Value Ġ= Ġtype Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsertion Order Ġ= Ġi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreleased Date Ġ= Ġreleased Date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġan ime Meta Model List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse An ime Info ( response : ĠString ): ĠAn ime Info Model { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Info Ġ= Ġdocument . getElementsBy Class (" anime _ info _ body _ bg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Url Ġ= Ġan ime Info . select (" img "). first (). abs Url (" src ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Title Ġ= Ġan ime Info . select (" h 1 "). first (). text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlists Ġ= Ġdocument ?. getElementsBy Class (" type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġtype : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġrelease Time : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġstatus : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġplot Summary : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre : ĠArrayList < Genre Model > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlists ?. forEach Indexed Ġ{ Ġindex , Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( index ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 -> Ġtype Ġ= Ġelement . text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 -> Ġplot Summary Ġ= Ġelement . text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 -> Ġgenre . addAll ( get Genre List ( element . select (" a "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 -> Ġrelease Time Ġ= Ġelement . text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 -> Ġstatus Ġ= Ġelement . text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Info Ġ= Ġdocument . getElementById (" episode _ page ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode List Ġ= Ġepisode Info . select (" a "). last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Episode Ġ= Ġepisode List . attr (" ep _ end ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalias Ġ= Ġdocument . getElementById (" alias _ anime "). attr (" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġdocument . getElementById (" movie _ id "). attr (" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAn ime Info Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid = Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Title Ġ= Ġan ime Title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġan ime Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġformat Info Values ( type ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreleased Time Ġ= Ġformat Info Values ( release Time ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġformat Info Values ( status ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Ġ= Ġgenre , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplot Summary Ġ= Ġformat Info Values ( plot Summary ). trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalias Ġ= Ġalias , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Episode Ġ= Ġend Episode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Media Url ( response : ĠString ): ĠEp isode Info { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmedia Url : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġdocument ?. getElementsBy Class (" vid cdn ") ?. first ()?. select (" a ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Url Ġ= Ġinfo ?. attr (" data - video "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Episode Url Ġ= Ġdocument . getElementsBy Class (" anime _ video _ body _ episodes _ r ") ?. select (" a ") ?. first ()?. attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Episode Url Ġ= Ġdocument . getElementsBy Class (" anime _ video _ body _ episodes _ l ") ?. select (" a ") ?. first ()?. attr (" href ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEp isode Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Episode Url Ġ= Ġnext Episode Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Episode Url Ġ= Ġprevious Episode Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvid cdn Url Ġ= Ġmedia Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse M 3 U 8 Url ( response : ĠString ): ĠString ? { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġm 3 u 8 Url : ĠString ?= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġdocument ?. getElementsBy Class (" vide oc ont ent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= ĠPattern . compile ( C . M 3 U 8 _ REGEX _ PATTERN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= Ġpattern . matcher ( info . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( matcher . find ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( matcher . group (( 0 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Ġmatcher . group ( 0 ) !!. contains (" m 3 u 8 ") Ġ|| Ġmatcher . group ( 0 ) !!. contains (" google video ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm 3 u 8 Url Ġ= Ġ Ġmatcher . group ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm 3 u 8 Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( n pe : NullPointerException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm 3 u 8 Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfetch Episode List ( response : ĠString ): ĠArrayList < Episode Model >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode List Ġ= ĠArrayList < Episode Model >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlists Ġ= Ġdocument ?. select (" li ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlists ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Url Ġ= Ġit . select (" a "). first (). attr (" href "). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Number Ġ= Ġit . getElementsBy Class (" name "). first (). text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Type Ġ= Ġit . getElementsBy Class (" cate "). first (). text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEp isode Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Number Ġ= Ġepisode Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Type Ġ= Ġepisode Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode url Ġ= Ġepisode Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġepisode List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġfilter Genre Name ( genre Name : ĠString ): ĠString { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif ( genre Name . contains (',' )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Name . substring ( genre Name . indexOf (',') + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Genre List ( genre Html List : ĠElements ): ĠArrayList < Genre Model >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre List Ġ= ĠArrayList < Genre Model >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Html List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre Url Ġ= Ġit . attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre Name Ġ= Ġit . text () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGen re Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Url Ġ= Ġgenre Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Name Ġ= Ġfilter Genre Name ( genre Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgenre List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġformat Info Values ( info Value : ĠString ): ĠString { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinfo Value . substring ( info Value . indexOf (': ') + 1 , Ġinfo Value . length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Category Url ( url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcategory Url Ġ= Ġ Ġurl . substring ( url . lastIndexOf ('/') Ġ+ Ġ 1 , Ġurl . lastIndexOf ('. ')) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Url Ġ= Ġ"/ category /$ category Url " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( exception : ĠString Index OutOfBoundsException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Image ĠURL : Ġ$ url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }