
    V|h4K                         S SK r S SKrS SKrS SKrS SKrS SKrS SKrSSKJr  SSK	J
r
  SSKJrJrJrJrJrJrJrJrJrJr  SSKJrJr   " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      rg)    N   )InfoExtractor   )	HTTPError)
ExtractorErrorOnDemandPagedListdetermine_extfilter_dictint_or_nonejoin_nonemptyjwt_decode_hs256parse_iso8601str_or_noneurl_or_none)requiretraverse_objc                   v    \ rS rSrSrSrSrSrSrSSS	S
.r	SSSS
.r
S rS rSS jrSS jr\S 5       rS rSrg)HotStarBaseIE   userUPzhttps://www.hotstar.comzhttps://api.hotstar.comzhttps://apix.hotstar.com/v2s   KSuz7Hotstar;in.startv.hotstar/25.06.30.0.11580 (Android/12)zqplatform:android;app_id:in.startv.hotstar;app_version:25.06.30.0;os:Android;os_version:12;schema_version:0.0.1523android)z
user-agentzx-hs-clientzx-hs-platformz?Disney+;in.startv.hotstar.dplus.tv/23.08.14.4.2915 (Android/13)z{platform:androidtv;app_id:in.startv.hotstar.dplus.tv;app_version:23.08.14.4;os:Android;os_version:13;schema_version:0.0.970	androidtvc                    [        U5      =(       d    [        [        R                  " 5       5      n[        UU R                  S[
        1S[        R                  1SSSS[        1[        [        145      =(       d    SnX2:  $ )Nvaluesubsubscriptionsin.expiryr   )r   inttimer   _TOKEN_NAMEr   jsonloadsr   allmax)selfcookiesserver_timer   s       R/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/hotstar.py_has_active_subscription&HotStarBaseIE._has_active_subscription,   st    !+.B#diik2Bgg(8'954::,T3=/3(O P UST 	 ##    c                 Z    U R                   " U R                   SU 3/UQ70 UDSSSS.0D6$ )Nz/o/v1/headersINPCTV)zx-country-codezx-platform-code)_download_json_API_URL)r&   pathargskwargss       r)   _call_api_v1HotStarBaseIE._call_api_v13   sI    ""}}oVD6*I-1I5;I'+GI 	Ir,   Nc                    [        U5      =(       d    [        [        R                  " 5       5      nUS-   nSU SU S3nUS[        R                  " U R
                  UR                  5       [        R                  5      R                  5       -   -  nU R                  U R                   SU 3X#[        0 U R                  XE5      (       a  U R                  OU R                  EU[!        X@R"                  S45      [!        US5      =(       d    [%        [&        R(                  " 5       5      S	S
.E5      S9n[!        US[*        145      (       d  [-        S5      eUS   $ )Nip  zst=z~exp=z~acl=/*z~hmac=/r   )deviceIdr   zapplication/json)hotstarauthzx-hs-usertokenzx-hs-device-idzcontent-type)queryr.   successzAPI call was unsuccessful)r   r   r    hmacnew_AKAMAI_ENCRYPTION_KEYencodehashlibsha256	hexdigestr1   _API_URL_V2r
   r*   _SUB_HEADERS_FREE_HEADERSr   r!   struuiduuid4dictr   )	r&   r3   video_idr<   r'   stexpauthresponses	            r)   _call_api_implHotStarBaseIE._call_api_impl8   s;   _0DIIK 04iRDcU'*488D$?$?PWP^P^_iikkk&& $(( !(,(E(Eg(R(R4$$X\XjXj!#".w9I9I78S"T".w8M"N"cRUVZV`V`VbRc 2!  '  Hy4&&9:: !<==	""r,   c                     U R                  U UUSU 3[        R                  " SS// SQSS// SQSS	/S
S// SQ/ SQSS/SS/SS/S.SS9[        R                  " SS// SQS.SS9S.XES9$ )Nzcontent_type=dashhls)fmp4fmp4brtsnon_ssaissai)stereodolby51atmosplainwidevineh264h265)r`   ra   vp9)phonetvfullhd4ksdrhdr)package	containeradsaudio_channel
encryptionvideo_codecvideo_codec_non_secureladder
resolutiontrue_resolutiondynamic_range),:)
separatorsSW_SECURE_DECODESW_SECURE_CRYPTO)	HDCP_V2_2	HDCP_V2_1HDCP_V2HDCP_V1)widevine_security_levelhdcp_version)
content_idfiltersclient_capabilitiesdrm_parameters)r<   r'   rM   )rQ   r"   dumps)r&   r3   rL   content_typer'   rM   s         r)   _call_api_v2HotStarBaseIE._call_api_v2K   s    ""dVh"&|n5#'::"E?5"F+!?&
3 &/*A1#Tl$($<"'/ %$& #jj,>@R+S P* %&!?
( ) # # 	#r,   c                    [        U S[        14S[        14S[        14S[        14S[        1[        4S[        14S[        14S[        1[
        14S	[        14S
[        14S[        14S[        1[
        14S[        14S[        14S.5      $ )N	contentIdtitledescriptionduration)broadcastDate	startDateyearchannelName	channelIdshowName
seasonNameseasonNoseasonId	episodeNo)idr   r   r   	timestamprelease_yearchannel
channel_idseriesseasonseason_number	season_idepisodeepisode_number)r   rH   r   anyr   r   )
video_datas    r)   _parse_metadata_v1 HotStarBaseIE._parse_metadata_v1b   s    J&u%)C51#k]38;-M#k]3%u-&}=!C5)#cU+(;-8$sek];#'*[M:)
  	r,   c           	   #   2  #    U R                  XSU SUS-    S30 UEX`R                  -  U R                  S.ES9S   S   n[        US	S
S 45       HA  nU R                  " [        R                  US   US9[        40 U R                  U5      D6v   MC     g 7f)NzDownloading z page r   z JSON)taotas)noter<   bodyresults)assetsNitemsc                     US   $ )Nr    _vs     r)   <lambda>+HotStarBaseIE._fetch_page.<locals>.<lambda>}   s    TUVaTbr,   r   )root)r6   
_PAGE_SIZEr   
url_result	HotStarIE
_video_urlr   )	r&   r3   item_idnamer<   r   pager   videos	            r)   _fetch_pageHotStarBaseIE._fetch_pageu   s     ##,tfF4!8*E J SSoo-S $ 
 
 !" "',<gGb+cdE//$$U;%7d$CYrRVRiRijoRpr r es   BBr   )NN)__name__
__module____qualname____firstlineno__r!   	_BASE_URLr2   rE   r@   rG   rF   r*   r6   rQ   r   staticmethodr   r   __static_attributes__r   r,   r)   r   r      sw    K)I(H/K` P K"M X U$L$I
#&#.  $
rr,   r   c                      \ rS rSrSrSrSrSSSSS	S
SSSS.SS0S.SSSSSSSSSSSSSSSSS.SS0S.S S!SS"SS#S$SS%SS&S'S"S(S)SS*.SS0S.S+S,SS-SS.S/S0S1SS2S3S-SS4S5S*.SS0S.S6S7SS8S9S8S:S;S<S=.SS0S.S>S?SS@SASBSCSDS@SESF.	SS0S.SGSHSI.SJSHSI.SKSHSI./	rSLrSMSNSOSOSOSPSPSQ.r	SRSSSTSUSV.r
SWSXSYSZ.rS[S\SXS].r\SdS_S^S`.Sa jj5       rSb rScrg^)er      hotstar
JioHotstarz(?x)
        https?://(?:www\.)?hotstar\.com(?:/in)?/(?!in/)
        (?:
            (?P<type>movies|sports|clips|episode|(?P<tv>tv|shows))/
            (?(tv)(?:[^/?#]+/){2}|[^?#]*)
        )?
        [^/?#]+/
        (?P<id>\d{10})
    z=https://www.hotstar.com/can-you-not-spread-rumours/1000076273
1000076273mp4zCan You Not Spread Rumours?z$md5:c957d8868e9bc793ccb813691cc4c434iBCV20151111i}  r   extr   r   r   upload_dater   r   skip_downloadm3u8)url	info_dictparamsz\https://www.hotstar.com/tv/ek-bhram-sarvagun-sampanna/s-2116/janhvi-targets-suman/1000234847
1000234847zJanhvi Targets Sumanz$md5:78a85509348910bd1ca31be898c5796bi\20190501i  StarPlus821zEk Bhram - Sarvagun Sampannaz	Chapter 1r   
1260004607   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zZhttps://www.hotstar.com/in/shows/anupama/1260022017/anupama-anuj-share-a-moment/1000282843
1000282843zAnupama, Anuj Share a Momentz$md5:8d74ed2248423b8b06d5c8add4d7a0c0idAnupama
126002201820230307iU  i  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z[https://www.hotstar.com/in/shows/kana-kaanum-kaalangal/1260097087/back-to-school/1260097320
1260097320zBack To Schoolz$md5:b0d6a4c8a650681491e7405496fc7e13iabzHotstar SpecialszKana Kaanum Kaalangal
126009708920220421i  
1260003991zEhttps://www.hotstar.com/in/clips/e3-sairat-kahani-pyaar-ki/1000262286
1000262286zE3 - SaiRat, Kahani Pyaar Kiz$md5:e3b4b3203bc0c5396fe7d0e4948a638520210606i(`i  )r   r   r   r   r   r   r   r   z3https://www.hotstar.com/in/movies/premam/1000091195
1000091195Premami  z$md5:096cd8aaae8dab56524823dc19dfa9f7i&W20160502i"#  )	r   r   r   r   r   r   r   r   r   z7https://www.hotstar.com/movies/radha-gopalam/1000057157Tr   only_matchingzhhttps://www.hotstar.com/in/sports/cricket/follow-the-blues-2021/recap-eng-fight-back-on-day-2/1260066104zZhttps://www.hotstar.com/in/sports/football/most-costly-pl-transfers-ft-grealish/1260065956Fmoviematchr   content)moviessportsr   rd   showsclipsNMOVIEEPISODESPORTCLIPS)r   r   r   r   rr   ro   rt   )resvcodecdrlanguageaudio_codec)r   acodecr   N	ignore_me)slugr   c                `    S X$4;   d   eU(       d  [        U R                  USS9nU SU SU 3$ )Nr9   delim)r   r   )clsrL   
video_typer   r   s        r)   r   HotStarIE._video_url  s?    
)))) 
#FDqaz**r,   c                 F  ^ ^ T R                  U5      R                  SS5      u  p#T R                  U   nT R                  U5      nU(       a   UR	                  T R
                  5      (       d  T R                  5         [        T R                  U S3USSUS.S9SS	S
[        145      =(       d    0 nUR	                  S5      (       a  T R                  U5        Sn/ 0 SpnST R                   S30n
[        US[        145      =(       d    T R                  U   nT R                  T R                   S3US5      R                  S5      nT R!                  SX+XL5      n[        USSSSS SSS[        1["        [%        S5      145      n[        USS[&        S 45       GH  n[)        UR	                  S5      5      =(       d    Sm[#        U U4S  jT R*                  R-                  5        5       5      (       a  M\  [        S! TR/                  S"5       5       5      nUR	                  S#5      S$;  a  S%n	M  [0        R2                  " S&S'US(   5      n[5        U5      n/ 0 nn S)T;   d  US*:X  a  T R7                  UUS+U
S,9u  nnO_S-T;   d  US.:X  a  T R9                  UX*S/9u  nnO?US0:X  a  O8U[;        UR	                  S15      5      [;        UR	                  S25      5      S3./n U GH~  nT RH                  R-                  5        H2  u  nnUR	                  U5      (       a  M  UR	                  U5      UU'   M4     UR	                  S55      S6:w  a*  UR	                  S75      (       d  UR	                  S75      US7'   UR	                  S85      S6:w  a  UR	                  S95      (       dm  S:S;S<.R	                  UR	                  S=5      5      US9'   S>US?   ;   d  S@UR	                  SA5      =(       d    S;   a   SBUR	                  SC5      =(       d    SD-   USC'   [K        UR	                  SE5      UR	                  S85      S6:w  a  UR	                  S=5      OS UR	                  SA5      SFSG9USA'   GM     URM                  U5        T RO                  UU5      nGM     U(       dX  U(       a  T RQ                  SH/S%SI9  O?U	(       a  T R                  U5        O&T RS                  XL5      (       d  T RU                  SJS%SK9  T RW                  U5        U H$  nURY                  SL0 5      R[                  U
5        M&     0 T R]                  U5      EUUUSM.E$ ! [<         aY  n[?        UR@                  [B        5      (       a  UR@                  RD                  S4;   a  S%nOT RG                  U5         S nAGM   S nAff = f)NNr   typez/detailF   )r   r   )fatalr<   r   r   itemdrmProtectedRefererz/incontentTypezFetching server timezx-origin-datezpages/watchr   spacesplayerwidget_wrappersc                     US   S:H  $ )NtemplatePlayerWidgetr   r   s     r)   r   )HotStarIE._real_extract.<locals>.<lambda>=  s    *YgHgr,   widgetdataplayer_configzplayer config)media_assetmedia_asset_v2)primaryfallbackc                     [        US   5      $ )Ncontent_url)r   r   s     r)   r   r  C  s    k!M*:;r,   playback_tags c              3   n   >#    U  H*  u  pTR                  U5        H  nU S U 3T;   v   M     M,     g7f)rv   N)_configuration_arg).0keyprefixignorer&   tagss       r)   	<genexpr>*HotStarIE._real_extract.<locals>.<genexpr>F  sB      ?&>{s!%!8!8!=v XQvh'4/!= 0&>s   25c              3   V   #    U  H  n/ UR                  S S5      QSP7SS v   M!     g7f)rv   r   Nr   )split)r   ts     r)   r%  r&  K  s,     R/Q4aggc1o4t4Ra8/s   ');rn   )r^   NTz(?<=//staragvod)(\d)zweb\1r  zpackage:hlsr   r   )r   r.   zpackage:dashmpd)r.   f4mwidthheight)r   r-  r.  )i  i  r   nonert   r   audio_channelsr      )r[   r\   rm   Audio_Description	format_idzAudio Descriptionformat_noteisource_preferencerq   z, r   r/   )	countriesmetadata_availablez1Your account does not have access to this content)expectedhttp_headers)r   formats	subtitles)/_match_valid_urlgroup_TYPE_get_cookiesgetr!   raise_login_requiredr   r6   rK   
report_drmr   rH   _CONTENT_TYPE_request_webpage
get_headerr   r   r   r$   r   _IGNORE_MAPr   r(  rer   r	   #_extract_m3u8_formats_and_subtitles"_extract_mpd_formats_and_subtitlesr   r   
isinstancecauser   statuswrite_debug_TAG_FIELDSr   extend_merge_subtitlesraise_geo_restrictedr*   raise_no_formats_remove_duplicate_formats
setdefaultupdater   )r&   r   rL   r  r'   r   geo_restrictedr;  subshas_drmr.   r   rM   watchr  playback_settag_dict
format_urlr   current_formatscurrent_subsefkr   r$  s   `                        @r)   _real_extractHotStarIE._real_extract#  sw   #44S9??fMZZ
+
##C(gkk$*:*:;;%%'!G4he%T  FTF3	5 ; 9;	 	 >>.))OOH%!#Rw 045#J0FGi4K]K]^hKi ""~~c"H.DFFPjQ`Fa 	!!-U$UHh(9;gfovsW_=U<V-X Y )-#;9
 L
 |//@AGRD ?&*&6&6&<&<&>? ? ? R$**S/RRH||L)@ 7<P]C^_J
+C,.\O D(C6M484\4\"H% 5] 5J1O\#t+se|484[4["H 5\ 5?1O\E\  *!,\-=-=g-F!G"-l.>.>x.H"I( 'O % ,,224DAq5588'||A! 5 55?f,QUU?5K5K)1o)FAo&55?f,QUU;K5L5L"##$+ c(,,78 &'
 ,q~=.1553G3M2N14>Q8R8XVX1Y-.#0LL*56UU8_5NHLL1TXEE-(	$ - ! %, NN?+((|<DCF ))TFt)T)227??%%&Ydh%i&&w/ALL,33G< 
%%j1
	
 	
W " aggy11aggnn
6R%)N$$Q's+   !T=>T=T=%7T==
V AVV r   )N)r   r   r   r   IE_NAMEIE_DESC
_VALID_URL_TESTS_GEO_BYPASSr?  rD  rG  rO  classmethodr   rc  r   r   r,   r)   r   r      s6   GGJ O2A#%4	
 #F+ n+A#%!4!%-
" #F+'* l3!A#!%%5!
" #F+'* m%!A#)-%%'&
" #F+'* W3A5%#	
 #F+ E A#%

 #F+ I z lUmF\ K E 	M K K +;T + +p
r,   r   c                   d    \ rS rSrSrSrSrSSS.SS	S
SSSSSSS.S.SSS.SSS.SSS./rS rSr	g)HotStarPrefixIEi  zWThe "hotstar:" prefix is no longer in use, but this is kept for backward compatibility Fz'hotstar:(?:(?P<type>\w+):)?(?P<id>\d+)$zhotstar:1000076273Tr   zhotstar:movies:1260009879
1260009879r   zNuvvu Naaku Nachavz$md5:d43701b1314e6f8233ce33523c043b7di*n]20190903i#*  r   )r   r   zhotstar:episode:1000234847zhotstar:sports:1260065956zhotstar:sports:1260066104c                     U R                  U5      R                  SS5      u  p#U R                  [        R	                  X#5      [        U5      $ )Nr   r  )r=  r>  r   r   r   )r&   r   rL   r  s       r)   rc  HotStarPrefixIE._real_extract  sA    #44S9??fMy33HI9V^__r,   r   N)
r   r   r   r   __doc__rf  rg  rh  rc  r   r   r,   r)   rl  rl    su    bG;J# +)A#%+	
 ,
 + +-F8`r,   rl  c                   b    \ rS rSrSrSrSSS0SS.S	SS
0SS.SSS0SS.SSS0SS./rSrS rSr	g)HotStarSeriesIEi  zhotstar:seriesz[(?P<url>https?://(?:www\.)?hotstar\.com(?:/in)?/(?:tv|shows)/[^/]+/(?P<id>\d+))/?(?:[#?]|$)z4https://www.hotstar.com/in/tv/radhakrishn/1260000646r   
1260000646i  )r   r   playlist_mincountz-https://www.hotstar.com/tv/dancee-/1260050431
1260050431*   z-https://www.hotstar.com/in/tv/mahabharat/435/435i  z4https://www.hotstar.com/in/shows/anupama/1260022017/
1260022017iA  d   c                     U R                  U5      R                  SS5      u  pU R                  SUSU0S9S   S   S   S   n[        [        R
                  " U R                  S	US
SUS.U5      U R                  5      nU R                  XB5      $ )Nr   r   zshow/detailr   )r<   r   r   r  ztray/g/1/itemsr   r   )etideid)	r=  r>  r6   r   	functoolspartialr   r   playlist_result)r&   r   	series_idr}  entriess        r)   rc  HotStarSeriesIE._real_extract  s    ..s399%F9[),D   FFLNNWYY_aaeg $I$5$5.	q-s%459__F ##G77r,   r   N)
r   r   r   r   re  rg  rh  r   rc  r   r   r,   r)   rs  rs    s    GoJE,
 ! ?,
   ?%
 ! F,
 "%F2 J	8r,   rs  )r~  rB   r>   r"   rH  r    rI   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r   r   rl  rs  r   r,   r)   <module>r     so        	   ! -   4erM erPQ
 Q
h"`m "`J'8m '8r,   