package Ġcom . lag rad ost . cloud stream 3 . movie providers Ċ Ċ import Ġcom . lag rad ost . cloud stream 3 .* Ċ import Ġcom . lag rad ost . cloud stream 3 . Load Response . Companion . add Duration Ċ import Ġcom . lag rad ost . cloud stream 3 . Load Response . Companion . add Rating Ċ import Ġcom . lag rad ost . cloud stream 3 . utils . Extractor Link Ċ import Ġcom . lag rad ost . cloud stream 3 . Tv Type Ċ import Ġcom . lag rad ost . cloud stream 3 . app Ċ import Ġcom . lag rad ost . cloud stream 3 . utils . Qual ities Ċ import Ġjava . lang . Exception Ċ Ċ class ĠNginx Provider Ġ: ĠMain API () Ġ{ ĊĠĠĠ Ġoverride Ġvar Ġname Ġ= Ġ" N ginx " ĊĠĠĠ Ġoverride Ġval Ġhas Quick Search Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġval Ġhas Main Page Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġval Ġsupported Types Ġ= Ġset Of ( Tv Type . An ime Movie , ĠT v Type . Tv Series , ĠT v Type . Movie ) ĊĊĊĊĠĠĠ Ġfun Ġget Auth Header ( stored Credentials : ĠString ?): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( stored Credentials Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap Of ( Pair (" Authorization ", Ġ" Basic Ġ")) Ġ Ġ// Ġno ĠAuthorization Ġheaders ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbasic AuthToken Ġ= Ġbase 6 4 Encode ( stored Credentials . toByteArray ()) Ġ Ġ// Ġwill Ġthis Ġbe Ġloaded Ġwhen Ġnot Ġusing Ġthe Ġprovider Ġ??? Ġcan Ġincrease Ġload ĊĠĠĠĠĠĠĠ Ġreturn Ġmap Of ( Pair (" Authorization ", Ġ" Basic Ġ$ basic AuthToken ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload ( url : ĠString ): ĠLoad Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauth Header Ġ= Ġget Auth Header ( stored Credentials ) Ġ Ġ// Ġcall Ġagain Ġbecause Ġit Ġisn 't Ġre loaded Ġif Ġin Ġmain Ġclass Ġand Ġstored Credentials Ġloads Ġafter ĊĠĠĠĠĠĠĠ Ġ// Ġurl Ġcan Ġbe Ġtv show . n fo Ġfor Ġseries Ġor Ġmedia Root Url Ġfor Ġmovies ĊĊĠĠĠĠĠĠĠ Ġval Ġmedia Root Document Ġ= Ġapp . get ( url , Ġauth Header ). document ĊĊĠĠĠĠĠĠĠ Ġval Ġn fo Url Ġ= Ġurl Ġ+ Ġmedia Root Document . getElementsBy AttributeValue Containing (" href ", Ġ". n fo "). attr (" href ") Ġ Ġ// Ġmetadata Ġurl Ġfile ĊĊĠĠĠĠĠĠĠ Ġval Ġmetadata Document Ġ= Ġapp . get ( n fo Url , Ġauth Header ). document Ġ Ġ// Ġget Ġthe Ġmetadata Ġn fo Ġfile ĊĊĠĠĠĠĠĠĠ Ġval Ġis Movie Ġ= Ġ! n fo Url . contains (" tv show . n fo ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġmetadata Document . select First (" title ") !!. text () ĊĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġmetadata Document . select First (" plot ") !!. text () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Movie ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposter Ġ= Ġmetadata Document . select First (" thumb ") !!. text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtr ailer Ġ= Ġmetadata Document . select (" tr ailer "). map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. text ()?. replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" plugin :// plugin . video . youtube / play /? video _ id =", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// www . youtube . com / watch ? v =" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpartial Url Ġ= Ġmedia Root Document . getElementsBy AttributeValue Containing (" href ", Ġ". n fo "). attr (" href "). replace (". n fo ", Ġ". ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġmetadata Document . select First (" year ") ?. text ()?. toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrating Average Ġ= Ġmetadata Document . select First (" value ") ?. text ()?. toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags List Ġ= Ġmetadata Document . select (" genre ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map NotNull Ġ{ ĠĠ Ġ// Ġall Ġthe Ġtags Ġlike Ġaction , Ġthr iller Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. text () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata List Ġ= Ġmedia Root Document . getElementsBy AttributeValue Containing ( Ġ Ġ// Ġlist Ġof Ġall Ġurls Ġof Ġthe Ġwebpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" href ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġurl Ġ+ Ġdata List . first NotNull Of Ġ{ Ġitem Ġ-> Ġitem . take If Ġ{ Ġ(! it . attr (" href "). contains (". n fo ") Ġ&& Ġ Ġ! it . attr (" href "). contains (". jpg ")) } Ġ}. attr (" href "). toString () Ġ Ġ// Ġexclude Ġposter Ġand Ġn fo Ġ( metadata ) Ġfile ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew Movie Load Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT v Type . Movie , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . year Ġ= Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . plot Ġ= Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . rating Ġ= Ġrating Average ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . tags Ġ= Ġtags List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . trail ers Ġ= Ġtr ailer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Post er ( poster , Ġauth Header ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ Ġ// Ġa Ġtv Ġser ie ĊĠĠĠĠĠĠĠ Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Pair < Int , ĠString >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Root Url Ġ= Ġurl . replace (" tv show . n fo ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposter Url Ġ= Ġmedia Root Url Ġ+ Ġ" poster . jpg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Root Document Ġ= Ġapp . get ( media Root Url , Ġauth Header ). document ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse asons Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Root Document . getElementsBy AttributeValue Containing (" href ", Ġ" Season % 2 0 ") ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags List Ġ= Ġmetadata Document . select (" genre ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map NotNull Ġ{ ĠĠ Ġ// Ġall Ġthe Ġtags Ġlike Ġaction , Ġthr iller Ġ... ; Ġunused Ġvariable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġactors List Ġ= Ġdocument . select (" actor ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ? . map NotNull Ġ{ ĠĠ Ġ// Ġall Ġthe Ġtags Ġlike Ġaction , Ġthr iller Ġ... ; Ġunused Ġvariable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġit ?. text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġse asons . forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseason Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . attr (" href ") ?. replace (" Season % 2 0 ", Ġ"") ?. replace ("/", Ġ"") ?. toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhref Ġ= Ġmedia Root Url Ġ+ Ġelement . attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( season Ġ!= Ġnull Ġ&& Ġseason Ġ> Ġ 0 Ġ&& Ġhref . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( season , Ġhref )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . isEmpty ()) Ġthrow ĠError Loading Exception (" No ĠSe asons ĠFound ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode List Ġ= ĠArrayList < Episode >() ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . ap map Ġ{ Ġ( season Int , Ġseason String ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseason Document Ġ= Ġapp . get ( season String , Ġauth Header ). document ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode s Ġ= Ġseason Document . getElementsBy AttributeValue Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" href ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ". n fo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ// Ġget Ġmetadata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode s . forEach Ġ{ Ġepisode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fo Document Ġ= Ġapp . get ( season String Ġ+ Ġepisode . attr (" href "), Ġauth Header ). document Ġ// Ġget Ġepisode Ġmetadata Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġep Num Ġ= Ġn fo Document . select First (" episode ") ?. text ()?. toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseason String Ġ+ Ġepisode . attr (" href "). replace (". n fo ", Ġ"- thumb . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġn fo Document . select First (" title ") !!. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġval Ġseason Int Ġ= Ġn fo Document . select First (" season "). text (). toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġn fo Document . select First (" a ired ") ?. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplot Ġ= Ġn fo Document . select First (" plot ") ?. text () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata List Ġ= Ġseason Document . getElementsBy AttributeValue Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" href ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode . attr (" href "). replace (". n fo ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġseason String Ġ+ Ġdata List . first NotNull Of Ġ{ Ġitem Ġ-> Ġitem . take If Ġ{ Ġ(! it . attr (" href "). contains (". n fo ") Ġ&& Ġ Ġ! it . attr (" href "). contains (". jpg ")) } Ġ}. attr (" href "). toString () Ġ Ġ// Ġexclude Ġposter Ġand Ġn fo Ġ( metadata ) Ġfile ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Episode ( data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . season Ġ= Ġseason Int ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . episode Ġ= Ġep Num ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . poster Url Ġ= Ġposter Ġ Ġ// Ġwill Ġrequire Ġheaders Ġtoo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . description Ġ= Ġplot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Date ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew Tv Series Load Response ( title , Ġurl , ĠT v Type . Tv Series , Ġepisode List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . url Ġ= Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . episodes Ġ= Ġepisode List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . plot Ġ= Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . tags Ġ= Ġtags List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Post er ( poster Url , Ġauth Header ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload Links ( ĊĠĠĠĠĠĠĠ Ġdata : ĠString , ĊĠĠĠĠĠĠĠ Ġis Cast ing : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġsubtitle Callback : Ġ( Subtitle File ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġcallback : Ġ( Extractor Link ) Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġload Extractor ( data , Ġnull ) Ġ{ Ġcallback ( it . copy ( headers = auth Header )) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġauth Header Ġ= Ġget Auth Header ( stored Credentials ) Ġ Ġ// Ġcall Ġagain Ġbecause Ġit Ġisn 't Ġre loaded Ġif Ġin Ġmain Ġclass Ġand Ġstored Credentials Ġloads Ġafter ĊĠĠĠĠĠĠĠ Ġcallback . invoke Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExtract or Link ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata , Ġ Ġ// Ġrefer er Ġnot Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQual ities . Unknown . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Header , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Main Page (): ĠHome Page Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauth Header Ġ= Ġget Auth Header ( stored Credentials ) Ġ Ġ// Ġcall Ġagain Ġbecause Ġit Ġisn 't Ġre loaded Ġif Ġin Ġmain Ġclass Ġand Ġstored Credentials Ġloads Ġafter ĊĠĠĠĠĠĠĠ Ġif Ġ( main Url Ġ== Ġ" NONE "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠError Loading Exception (" No Ġnginx Ġurl Ġspecified Ġin Ġthe Ġsettings : ĠNginx ĠSet t ign s Ġ> ĠNginx Ġserver Ġurl , Ġtry Ġagain Ġin Ġa Ġfew Ġseconds ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġapp . get ( main Url , Ġauth Header ). document ĊĠĠĠĠĠĠĠ Ġval Ġcategories Ġ= Ġdocument . select (" a ") ĊĠĠĠĠĠĠĠ Ġval Ġreturn List Ġ= Ġcategories . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Path Ġ= Ġmain Url Ġ+ Ġit . attr (" href ") Ġ?: Ġreturn @ map NotNull Ġnull Ġ// Ġget Ġthe Ġurl Ġof Ġthe Ġcategory ; Ġlike Ġhttp :// 1 9 2 . 1 6 8 . 1 . 1 0 / media / Movies / ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Title Ġ= Ġit . text () Ġ Ġ// Ġget Ġthe Ġcategory Ġtitle Ġlike ĠMov ies Ġor ĠSeries ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( category Title Ġ!= Ġ"../ " Ġ&& Ġcategory Title Ġ!= Ġ" Music /") Ġ{ Ġ Ġ// Ġexclude Ġparent Ġdir Ġand ĠMusic Ġdir ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Document Ġ= Ġapp . get ( category Path , Ġauth Header ). document Ġ// Ġqueries Ġthe Ġpage Ġhttp :// 1 9 2 . 1 6 8 . 1 . 1 0 / media / Movies / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Links Ġ= Ġcategory Document . select (" a ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent List Ġ= Ġcontent Links . map NotNull Ġ{ Ġhead Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( head . attr (" href ") Ġ!= Ġ"../ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Root Url Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Path Ġ+ Ġhead . attr (" href ") // Ġlike Ġhttp :// 1 9 2 . 1 6 8 . 1 . 1 0 / media / Series / Ch ern ob yl / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Document Ġ= Ġapp . get ( media Root Url , Ġauth Header ). document ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fo Filename Ġ= Ġmedia Document . getElementsBy AttributeValue Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" href ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ". n fo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) [ 0 ]. attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Movie Type Ġ= Ġn fo Filename Ġ!= Ġ" tv show . n fo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fo Path Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Root Url Ġ+ Ġn fo Filename Ġ// Ġmust Ġexist Ġor Ġwill Ġraise Ġerrors , Ġonly Ġthe Ġfirst Ġone Ġis Ġtaken ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fo Content Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp . get ( n fo Path , Ġauth Header ). document Ġ Ġ// Ġall Ġthe Ġmetadata ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Movie Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovie Name Ġ= Ġn fo Content . select (" title "). text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposter Url Ġ= Ġmedia Root Url Ġ+ Ġ" poster . jpg " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map NotNull Ġnew Movie Search Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Root Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT v Type . Movie , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Post er ( poster Url , Ġauth Header ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ Ġ// Ġtv Ġser ie ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġser ie Name Ġ= Ġn fo Content . select (" title "). text () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposter Url Ġ= Ġmedia Root Url Ġ+ Ġ" poster . jpg " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Tv Series Search Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġser ie Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn fo Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT v Type . Tv Series , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Post er ( poster Url , Ġauth Header ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ġ Ġ// Ġcan Ġcause Ġissues Ġinvisible Ġerrors ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// log Error ( e ) Ġ// Ġnot Ġworking Ġbecause Ġit Ġchanges Ġthe Ġreturn Ġtype Ġof Ġcurrent List Ġto ĠAny ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current List . isNotEmpty () Ġ&& Ġcategory Title Ġ!= Ġ"../ ") Ġ{ Ġ Ġ// Ġexclude Ġupper Ġdir ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHome Page List ( category Title , Ġcurrent List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull Ġ Ġ// Ġthe Ġpath Ġis Ġ../ Ġwhich Ġis Ġparent Ġdirectory ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġif Ġ( return List . isEmpty ()) Ġreturn Ġnull Ġ// Ġmaybe Ġdoing Ġnothing Ġid k ĊĠĠĠĠĠĠĠ Ġreturn ĠHome Page Response ( return List ) ĊĠĠĠ Ġ} Ċ } Ċ