package Ġcom . st ef an zh . be et v plus . activity Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . st ef an zh . be et v plus . Category Ċ import Ġcom . st ef an zh . be et v plus . R Ċ import Ġcom . st ef an zh . be et v plus . Serial Link Ċ import Ġcom . st ef an zh . be et v plus . adapter . On Serial Link ClickListener Ċ import Ġcom . st ef an zh . be et v plus . adapter . Tv Show Adapter Ċ import Ġio . ktor . client . request . get Ċ import Ġkotlinx . coroutines .* Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Element Ċ import Ġjava . net . URL ĊĊ Ċ class ĠList Pred av ane Activity Ġ: ĠCast ing Activity () Ġ{ ĊĊĠĠĠ Ġ// Ġset Ġup Ġa Ġclick Ġlistener Ġfor Ġeach ĠTV Ġshow Ġrow ĊĠĠĠ Ġprivate Ġval Ġclick Listener Ġ= Ġobject Ġ: ĠOn Serial Link ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Serial Link Click ( tv Show : ĠSerial Link ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ List Pred av ane Activity , ĠDisplay Serial Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EXTRA _ SERIAL , Ġtv Show ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ list _ pred av ane ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe ĠTV Ġshow Ġcategory ĊĠĠĠĠĠĠĠ Ġval Ġcategory Ġ= Ġintent . get Parcelable Extra < Category >( EXTRA _ CATEGORY ) !! ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġcategory . title ĊĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlaunch Ġthis Ġcall Ġon ĠUI Ġthread Ġbut Ġits Ġresult Ġwill Ġbe Ġcomputed Ġon ĠIO Ġthread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Shows Ġ= Ġget Tv Shows ( category . link ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġshows Ġare Ġretrieved Ġsuccessfully , Ġstop Ġspinner Ġand Ġdisplay Ġthe Ġtv Ġshows ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < ProgressBar >( R . id . tv _ show _ spinner ). visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < RecyclerView >( R . id . tv _ show _ list ). visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate ĠRecyclerView Ġwith ĠTV Ġshows ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠT v Show Adapter ( tv Shows , Ġclick Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < RecyclerView >( R . id . tv _ show _ list ). prepare ( this @ List Pred av ane Activity , Ġadapter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġdata Ġfor Ġan Ġindividual ĠTV Ġshow . ĠSometimes Ġthe ĠDOM Ġfor Ġthe ĠTV Ġshow Ġmay Ġbe ĊĠĠĠĠ Ġ* Ġcorrupted Ġor Ġincomplete Ġso Ġwe 'll Ġreturn Ġnull Ġfor Ġsuch Ġshows Ġ( and Ġwill Ġlater Ġskip Ġthem ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Tv Show ( el : ĠElement ): ĠSerial Link ? Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhref Ġ= Ġel . attr (" href ") ĊĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġ" https :// b tv plus . bg $ href " ĊĠĠĠĠĠĠĠ Ġval Ġimg Src Ġ= Ġel . select (" img "). attr (" src "). prefix URL () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠURL ( img Src ). to Image Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġextract ĠTV Ġshow Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow Page Ġ= Ġclient . get < String >( link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠJ soup . parse ( show Page ). select (" div . title Ġ> Ġh 2 "). text (). if Blank Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe 'll Ġconsider Ġa Ġshow Ġwithout Ġa Ġtitle Ġto Ġbe Ġimpro per ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSerial Link ( link , Ġimg Src , Ġimage , Ġtitle ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit 's Ġpossible Ġthat Ġthere Ġare Ġerrors Ġon Ġthe ĠDOM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġwe 'll Ġskip Ġsuch Ġshows ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExtract s Ġthe Ġlinks Ġto Ġthe ĠTV Ġshows . ĊĠĠĠĠ Ġ* ĠThe ĠHTTP Ġrequest Ġfor Ġshows Ġis Ġexecuted Ġon Ġthe ĠIO - optimized Ġthread . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Tv Shows ( category Link : ĠString ): ĠList < Serial Link > Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . get < String >( category Link ) ĊĠĠĠĠĠĠĠ Ġ// Ġparses Ġthe ĠHTML Ġand Ġextract s Ġthe Ġlinks Ġto Ġthe ĠTV Ġshows ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠJ soup . parse ( response ) ĊĠĠĠĠĠĠĠ Ġval Ġcategories Ġ= Ġdoc . select (" li . rows Ġ> Ġul Ġ> Ġli ") ĊĠĠĠĠĠĠĠ Ġval Ġasync Tasks Ġ= Ġcategories . flatMap Ġ{ Ġcat Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanchors Ġ= Ġcat . select (" div . image Ġ> Ġa ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasync Ġ{ Ġget Tv Show ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġasync Tasks . await All (). filter NotNull () ĊĠĠĠ Ġ} Ċ } Ċ