package Ġio . github . tak us an 2 3 . internet . html Ċ Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* Ġ äºº çĶŁ åĪĿ ãģ® ãĥĨãĤ¹ãĥĪ ãĤ³ãĥ¼ãĥī ãĢĤ éĸĭ çĻº æ©Ł ãģ® Java VM ãģ§ éĸ¢æķ° ãģĮ åĭķ ãģĭ ãģĽ ãĤĭ ãģ®ãģ§ ä¾¿ åĪ© ãģł ãģ Ń ãĢĤ ãĤĤ ãģ£ ãģ¨ æĹ© ãģı ãģĭãĤī ãĤĦ ãģ£ãģ¦ ãĤĮãģ° ãĤĪ ãģĭ ãģ£ãģŁ Ċ Ġ* Ġ*/ Ċ class ĠWatch Page HTML Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Watch Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( watch Page Data , Ġdecrypt Data ) Ġ= ĠWatch Page HTML . get Watch Page (" F 2 Z Al Xr ld IM ", Ġnull , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( watch Page Data . is HTTP Streaming ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" çĶŁ æĶ¾ éĢģ ĠH LS ĠãĤ¢ ãĥī ãĥ¬ ãĤ¹ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( watch Page Data . watch Page Response JSON Data . streaming Data . hls Manifest Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" M PEG - DASH ĠãĤ¢ ãĥī ãĥ¬ ãĤ¹ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( watch Page Data . watch Page Response JSON Data . streaming Data . dash Manifest Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" åĭķ çĶ» URL ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Page Data . content Url List . forEach Ġ{ Ġmedia Url Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( media Url Data . quality ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( media Url Data . video Track Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( media Url Data . audio Track Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ---- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Page Data . watch Page Response JSON Data . streaming Data . adaptive Formats . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it . quality Label ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" --- ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" æĬķ ç¨ ¿ èĢħ ãĢĤ ãģ® çĶ» åĥı URL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Page Data . watch Page Initial JSON Data . contents . two Column Watch Next Results . results . results . contents [ 1 ]. video Secondary Info Renderer ?. owner ?. video Owner Renderer ?. thumbnail ?. thumb nails ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it . url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" éĸ¢ éĢ£ åĭķ çĶ» ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Page Data . watch Page Initial JSON Data . contents . two Column Watch Next Results . secondary Results . secondary Results . results . map NotNull Ġ{ Ġit . compact Video Renderer Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ãĤ¢ ãĥ« ãĤ ´ ãĥª ãĤº ãĥł --- ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( decrypt Data . base Js URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( decrypt Data . algorithm Func Name Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( decrypt Data . decrypt Invoke List ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" n ãĥĳ ãĥ©ãĥ¡ãĥ¼ãĤ¿ ãĥ¼ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( watch Page Data . get Media Url Data From Quality (). video Track Url ?. to Http Url ()?. query Parameter (" n ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ãĥĳ ãĥ©ãĥ¡ãĥ¼ãĤ¿ ãĥ¼ å¤īæĽ´ JavaScript ãĤ³ãĥ¼ãĥī ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( decrypt Data . url Param Fix JS Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }