
    uki4K                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZddlmZ ddl	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZ  G d d	e      Z G d
 de      Z G d de      Z G d de      Zy)    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                   j    e Zd ZdZdZdZdZdZdddd	Zd
ddd	Z	d Z
d ZddZddZed        Zd Zy)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                     t        |      xs t        t        j                               }t        || j                  dt
        hdt        j                  hddddt        ht        t        hf      xs d}||kD  S )Nvaluesubsubscriptionsin.expiryr   )r   inttimer   _TOKEN_NAMEr   jsonloadsr   allmax)selfcookiesserver_timer   s       S/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/yt_dlp/extractor/hotstar.py_has_active_subscriptionz&HotStarBaseIE._has_active_subscription,   sv    !+.B#diik2Bgg(8'954::,T3=/3(O P UST 	 ##    c                 Z     | j                   | j                   d| g|i |ddddiS )Nz/o/v1/headersINPCTV)zx-country-codezx-platform-code)_download_json_API_URL)r%   pathargskwargss       r(   _call_api_v1zHotStarBaseIE._call_api_v13   sK    "t""}}oVD6*I-1I5;I'+GI 	Ir*   Nc                    t        |      xs t        t        j                               }|dz   }d| d| d}|dt        j                  | j
                  |j                         t        j                        j                         z   z  }| j                  | j                   d| ||t        i | j                  ||      r| j                  n| j                  |t!        || j"                  df      t!        |d      xs t%        t'        j(                               d	d
            }t!        |dt*        hf      st-        d      |d   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	hexdigestr/   _API_URL_V2r
   r)   _SUB_HEADERS_FREE_HEADERSr   r    struuiduuid4dictr   )	r%   r1   video_idr9   r&   stexpauthresponses	            r(   _call_api_implzHotStarBaseIE._call_api_impl8   s;   _0DIIK 04iRDcU'*488D$?$?PWP^P^_iikkk&& $((% !(,(E(Egr(R4$$X\XjXj!#".w9I9I78S"T".w8M"N"cRUVZV`V`VbRc 2!  '  Hy4&&9: !<==	""r*   c                     | j                  | ||d| t        j                  ddgg dddgg ddd	gd
dgg dg dddgddgddgdd      t        j                  ddgg ddd      d||      S )Nzcontent_type=dashhls)fmp4fmp4brtsnon_ssaissai)stereodolby51atmosplainwidevineh264h265)r\   r]   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)r9   r&   rJ   )rN   r!   dumps)r%   r1   rI   content_typer&   rJ   s         r(   _call_api_v2zHotStarBaseIE._call_api_v2K   s    ""dVh"&|n5#'::"E?5"F+!?&
3 &/*A1#Tl$($<"'/ %$& #jj,>@R+S P* %&!?
( r) # # 	#r*   c                    t        | dt        hfdt        hfdt        hfdt        hfdt        ht        fdt        hfdt        hfdt        ht
        hfd	t        hfd
t        hfdt        hfdt        ht
        hfdt        hfdt        hfd      S )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   rE   r   anyr   r   )
video_datas    r(   _parse_metadata_v1z HotStarBaseIE._parse_metadata_v1b   s    J&u%)C51#k]38;-M#k]3%u-&}=!C5)#cU+(;-8$sek];#'*[M:)
  	r*   c           	   #   >  K   | j                  ||d| d|dz    di ||| j                  z  | j                  d      d   d   }t        |d	d
d f      D ]C  } | j                  t        j                  |d   |      t        fi | j                  |       E y w)NzDownloading z page r   z JSON)taotas)noter9   bodyresults)assetsNitemsc                     |d   S )Nr    _vs     r(   <lambda>z+HotStarBaseIE._fetch_page.<locals>.<lambda>}   s    TUVaTb r*   r   )root)r4   
_PAGE_SIZEr   
url_result	HotStarIE
_video_urlr   )	r%   r1   item_idnamer9   r   pager   videos	            r(   _fetch_pagezHotStarBaseIE._fetch_pageu   s     ##',tfF4!8*E J SSdoo-S $ 
 
 !" "',<gGb+cd 	rE!$//$$U;%7d$CYrRVRiRijoRpr r	rs   BB)NN)__name__
__module____qualname__r    	_BASE_URLr0   rB   r=   rD   rC   r)   r4   rN   r   staticmethodr   r   r   r*   r(   r   r      sw    K)I(H/K` P K"M X U$L$I
#&#.  $
rr*   r   c                   ~   e Zd ZdZdZdZdddddd	d
dddddiddddddddddddddddddddiddd dd!dd"d#dd$dd%d&d!d'd(dd)ddidd*d+dd,dd-d.d/d0dd1d2d,dd3d4d)ddidd5d6dd7d8d7d9d:d;d<ddidd=d>dd?d@dAdBdCd?dDdE	ddiddFdGdHdIdGdHdJdGdHg	ZdKZdLdMdNdNdNdOdOdPZdQdRdSdTdUZ	dVdWdXdYZ
dZd[dWd\Zedbd^d]d_d`       Zda Zy])cr   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   r`   showsclipsNMOVIEEPISODESPORTCLIPS)r   r   r   r   rn   rk   rp   )resvcodecdrlanguageaudio_codec)r   acodecr   N	ignore_me)slugr   c                Z    d ||fv sJ |st        | j                  |d      }| d| d| S )Nr6   delim)r   r   )clsrI   
video_typer   r   s        r(   r   zHotStarIE._video_url  sA    
D)))) 
#FDqaz**r*   c                 
     j                  |      j                  dd      \  }} j                  |   } j                  |      }|r|j	                   j
                        s j                          t         j                  | d|dd|d      dd	d
t        hf      xs i }|j	                  d      r j                  |       d}g i d}	}}d j                   di}
t        |dt        hf      xs  j                  |   } j                   j                   d|d      j                  d      } j!                  d||||      }t        |ddddd dddt        ht"        t%        d      hf      }t        |ddt&        d f      D ]  }t)        |j	                  d            xs dt#         fd  j*                  j-                         D              rPt        d! j/                  d"      D              }|j	                  d#      d$vrd%}	t1        j2                  d&d'|d(         }t5        |      }g i }}	 d)v s|d*k(  r j7                  ||d+|
,      \  }}n^d-v s|d.k(  r j9                  |||
/      \  }}n=|d0k(  rn7|t;        |j	                  d1            t;        |j	                  d2            d3g}|D ]]  } jH                  j-                         D ]+  \  }}|j	                  |      r|j	                  |      ||<   - |j	                  d5      d6k7  r%|j	                  d7      s|j	                  d7      |d7<   |j	                  d8      d6k7  rp|j	                  d9      s_d:d;d<j	                  |j	                  d=            |d9<   d>|d?   v sd@|j	                  dA      xs dv rdB|j	                  dC      xs dDz   |dC<   tK        |j	                  dE      |j	                  d8      d6k7  r|j	                  d=      nd |j	                  dA      dFG      |dA<   ` |jM                  |        jO                  ||      } |sP|r jQ                  dHgd%I       n9|	r j                  |       n% jS                  ||      s jU                  dJd%K        jW                  |       |D ]#  }|jY                  dLi       j[                  |
       % i  j]                  |      |||dMS # t<        $ rQ}t?        |j@                  tB              r|j@                  jD                  d4v rd%}n jG                  |       Y d }~d }~ww xY w)NNr   typez/detailF   )r   r   )fatalr9   r   r   itemdrmProtectedRefererz/incontentTypezFetching server timezx-origin-datezpages/watchr   spacesplayerwidget_wrappersc                     |d   dk(  S )NtemplatePlayerWidgetr   r   s     r(   r   z)HotStarIE._real_extract.<locals>.<lambda>=  s    *YgHg r*   widgetdataplayer_configzplayer config)media_assetmedia_asset_v2)primaryfallbackc                     t        |d         S )Ncontent_url)r   r   s     r(   r   z)HotStarIE._real_extract.<locals>.<lambda>C  s    k!M*:; r*   playback_tags c              3   b   K   | ]&  \  }}j                  |      D ]  }| d | v   ( yw)rr   N)_configuration_arg).0keyprefixignorer%   tagss       r(   	<genexpr>z*HotStarIE._real_extract.<locals>.<genexpr>F  sK      ?"sF!%!8!8!=? XQvh'4/ ?/ ?s   ,/c              3   P   K   | ]  }g |j                  d d      ddd    yw)rr   r   Nr   )split)r  ts     r(   r  z*HotStarIE._real_extract.<locals>.<genexpr>K  s,     RQ4aggc1o4t4Ra8Rs   $&;rj   )rZ   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   nonerp   r   audio_channelsr      )rW   rX   ri   Audio_Description	format_idzAudio Descriptionformat_noteisource_preferencerm   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   r4   rH   
report_drmr   rE   _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   rI   r   r&   r   geo_restrictedr-  subshas_drmr,   r   rJ   watchr  playback_settag_dict
format_urlr   current_formatscurrent_subsefkr   r  s   `                        @r(   _real_extractzHotStarIE._real_extract#  s   #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 	!!-<RTU$UHh(9;gfovsW_=U<V-X Y )-#;9
  A	=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["Hg 5\ 5?1O\E\  *!,\-=-=g-F!G"-l.>.>x.H"I( 'O %   ,,224 /DAq558'||A!/ 55?f,QUU?5K)1o)FAo&55?f,QUU;K5L"##$+ c(,,78 &'
 ,q~=.1553G3M2N14>Q8R8XVX1Y-.#0LL*56UU8_5NHLL1TXEE-(	$ - ! , NN?+((|<DCA	=F ))TFt)T)227B?%%&Ydh%i&&w/ 	=ALL,33G<	=
%%j1
	
 	
W " aggy1aggnn
6R%)N$$Q's   :B S''	U0AT<<U)N)r   r   r   IE_NAMEIE_DESC
_VALID_URL_TESTS_GEO_BYPASSr1  r6  r9  rA  classmethodr   rU  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                   \    e Zd ZdZdZdZdddddd	d
ddddd
dddddddddddgZd Zy)HotStarPrefixIEzX The "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                     | j                  |      j                  dd      \  }}| j                  t        j	                  ||      t        |      S )Nr   r   )r/  r0  r   r   r   )r%   r   rI   r   s       r(   rU  zHotStarPrefixIE._real_extract  sE    #44S9??fM*y33HjI9V^__r*   N)r   r   r   __doc__rW  rX  rY  rU  r   r*   r(   r]  r]    su    bG;J# +)A#%+	
 ,
 + +-F8`r*   r]  c                   Z    e Zd ZdZdZdddiddddd	id
ddddidddddiddgZdZd Zy)HotStarSeriesIEz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                 (   | j                  |      j                  dd      \  }}| j                  d|d|i      d   d   d   d   }t        t	        j
                  | j                  d	|d
d|d|      | j                        }| j                  ||      S )Nr   r   zshow/detailr   )r9   r   r   r   ztray/g/1/itemsr   r   )etideid)	r/  r0  r4   r   	functoolspartialr   r   playlist_result)r%   r   	series_idrm  entriess        r(   rU  zHotStarSeriesIE._real_extract  s    ..s399%FY9[),D   FFLNNWYY_aaeg $I$5$5.	q-s%459__F ##GY77r*   N)r   r   r   rV  rX  rY  r   rU  r   r*   r(   rc  rc    s    GoJE,
 ! ?,
   ?%
 ! F,
 "%F2 J	8r*   rc  )rn  r?   r;   r!   r:  r   rF   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r   r   r]  rc  r   r*   r(   <module>rw     so        	   ! -   4erM erPQ
 Q
h"`m "`J'8m '8r*   