
    VGhF                         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  G d de      Z G d	 d
e      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determine_extint_or_nonejoin_nonemptystr_or_nonetraverse_objurl_or_nonec                   6    e Zd ZdZdZdZd Zd	dZd	dZd
dZ	y)HotStarBaseIEzhttps://www.hotstar.comzhttps://api.hotstar.coms   KSuc                 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)selfpathargskwargss       a/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/hotstar.py_call_api_v1zHotStarBaseIE._call_api_v1   sK    "t""}}oVD6*I-1I5;I'+GI 	I    Nc                    t        |      xs t        t        j                               }|dz   }d| d| d}|dt        j                  | j
                  |j                         t        j                        j                         z   z  }|r-|j                  d      r|j                  d      j                  }nl| j                  | j                   d|dt        j                  d	t!        t#        j$                               d
dgi      j                         |ddd      d   }| j                  | j                   d| |||dd|d      }	|	d   dk7  rt'        |	d   d      |	d   S )Nip  zst=z~exp=z~acl=/*z~hmac=userUPz/um/v3/userszDownloading token
device_ids	device_id)idtyper   zapplication/json)hotstarauthx-hs-platformzContent-Type)notedatar   user_identity/z6.72.2web)r#   zx-hs-appversionr$   zx-hs-usertoken)queryr   messagez#Playback URL's fetched successfullyT)expectedr&   )r	   inttimehmacnew_AKAMAI_ENCRYPTION_KEYencodehashlibsha256	hexdigestgetvaluer   r   jsondumpsstruuiduuid4r   )
r   r   video_idr*   stcookiesexpauthtokenresponses
             r   _call_api_implzHotStarBaseIE._call_api_impl   sq   _0DIIK 04iRDcU'*488D$?$?PWP^P^_iikkkw{{8,KK)//E''==/.2ZZs4::<7HR]0^/_ `ahhj#'%+$6	 (  #$E &&}}oQtf%xu##+!&"'	 '  I"GG #d4 4r   c                     | j                  | d| |||d|j                  d      r|j                  d      j                  nt        t	        j
                               ddd      S )Nz	/content/zaudio_channel:stereo|container:fmp4|dynamic_range:hdr|encryption:plain|ladder:tv|package:dash|resolution:fhd|subs-tag:HotstarVIP|video_codec:h265r    Windows10)zdesired-configz	device-idzos-namez
os-version)r>   r?   r*   )rD   r6   r7   r:   r;   r<   )r   r   r=   r>   r?   s        r   _call_api_v2zHotStarBaseIE._call_api_v2@   so    ""fIhZ((r7 #v?F{{;?WW[[5;;]`aeakakam]n$"	S #  	r   c              +      K    | j                   ||fi |d   d   }t        |d      D ]H  }|j                  d      s| j                  t        j                  |d   |      t        |d          J y w)Nbodyresults))assetsNitems.	contentId)root)r   r   r6   
url_result	HotStarIE
_video_url)r   r   item_idrO   r   rK   videos          r   _playlist_entrieszHotStarBaseIE._playlist_entriesI   s     #$##D'<V<VDYO!'+KL 	hEyy%oo(({);$(GTYZeTfh h	hs
   ;A57A5)NNN)
__name__
__module____qualname__	_BASE_URLr   r1   r   rD   rH   rU    r   r   r   r      s)    )I(H`I
 Bhr   r   c                   P   e 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d dd!dd"d#dd$dd%d&d!d'd(dd)d*d+d,d-dd.dd/d0d1d2dd3d4d.dd5d6d)dd7d8dd9d:d9d;d<d=d>dd?d@ddAdBdCdDdEdAdFdG	ddHdIdJdKdIdJdLdIdJg	ZdMZdNdOdPdPdPdQdQdRZdSdTdUdVZdWdXdTdYZ	e
d_d[dZd\d]       Zd^ ZyZ)`rQ   hotstarz(?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!   exttitledescription	timestampupload_datedurationepisode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3zEk Bhram - Sarvagun Sampannaz	Chapter 1r   6771   )r!   rb   rc   rd   re   rf   rg   channel
channel_idseriesseasonseason_number	season_idrh   episode_numberrk   rl   zZhttps://www.hotstar.com/in/shows/anupama/1260022017/anupama-anuj-share-a-moment/1000282843
1000282843zAnupama, Anuj Share a Momentz$md5:8d74ed2248423b8b06d5c8add4d7a0c0idAnupama739920230307iU  i  )r!   rb   rc   rw   rd   re   rt   rv   rx   ry   rf   rh   rz   rg   ru   z HTTP Error 504: Gateway Time-out)rk   rl   skipz[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944120220421i  54zEhttps://www.hotstar.com/in/clips/e3-sairat-kahani-pyaar-ki/1000262286
1000262286zE3 - SaiRat, Kahani Pyaar Kiz$md5:e3b4b3203bc0c5396fe7d0e4948a638520210606i(`i  )r!   rb   rc   rd   rh   rf   re   rg   z3https://www.hotstar.com/in/movies/premam/1000091195
1000091195Premami  z$md5:d833c654e4187b5e34757eafb5b72d7fi&W20160502i"#  )	r!   rb   rc   release_yearrd   re   rf   rh   rg   z7https://www.hotstar.com/movies/radha-gopalam/1000057157Trk   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matchrh   content)moviessportsrh   tvshowsclipsN
resolutionvideo_codecdynamic_range)resvcodecdrlanguageaudio_codec)r   acodecr   N	ignore_me)slugrO   c                Z    d ||fv sJ |st        | j                  |d      }| d| d| S )Nr(   delim)r
   rZ   )clsr=   
video_typer   rO   s        r   rR   zHotStarIE._video_url   sA    
D)))) 
#FDqaz**r   c           
      N     j                  |      j                  dd      \  }} j                  j                  ||      } j	                  |      }t         j                  | d|dd|d      dd	d
t        hf      xs i } j                  d      s"|j                  d      r j                  |        j                   j                   d|      d   j                  j                  d      }d}g i }	}d j                   di}
 j                  d|||      d   }|D ]  }t        |t              st        |j                  d            xs dt!         fd j"                  j%                         D              rat'        |j                  d            }|s~t)        j*                  dd|      }t-        |      }g i }}	 dv s|dk(  r j/                  ||d|
      \  }}n^dv s|dk(  r j1                  |||
       \  }}n=|d!k(  rn7|t3        |j                  d"            t3        |j                  d#            d$g}t        d' j=                  d(      D              }|j                  d)      d*vr|D ]  }d&|d+<   	 |D ]$  } j>                  j%                         D ]+  \  }}|j                  |      r|j                  |      ||<   - |j                  d,      d-k7  r%|j                  d.      s|j                  d.      |d.<   |j                  d/      d-k7  r7|j                  d0      s&d1d2d3j                  |j                  d4            |d0<   tA        |j                  d5      |j                  d/      d-k7  r|j                  d4      nd |j                  d6      d78      |d6<   ' |jC                  |        jE                  |	|      }	 |s|r jG                  d9gd&:        jI                  |       |D ]#  }|jK                  d;i       jM                  |
       % i d|d<|j                  d<      d=|j                  d=      d>t3        |j                  d>            d?t3        t        |d@dA            dBt3        |j                  dC            dD|dE|	dF|j                  dG      dHt        |j                  dI            dJ|j                  dK      dL|j                  dM      dNt3        |j                  dO            dPt        |j                  dQ            dR|j                  d<      dSt3        |j                  dT            S # t4        $ r@}t        |j6                  t8              r|j6                  j:                  d%k(  rd&}Y d }~zd }~ww xY w)UNr!   r"   z/detailF'  )tasrN   )fatalr*   rJ   rK   itemallow_unplayable_formatsdrmProtectedz/inr   zx-origin-dateRefererzplay/v1/playback)r>   r?   playBackSetstagsCombination c              3   b   K   | ]&  \  }}j                  |      D ]  }| d | v   ( yw):N)_configuration_arg).0keyprefixignorer   tagss       r   	<genexpr>z*HotStarIE._real_extract.<locals>.<genexpr>   sK      ?"sF!%!8!8!=? XQvh'4/ ?/ ?s   ,/playbackUrlz(?<=//staragvod)(\d)zweb\1zpackage:hlsrj   r_   )rb   r   zpackage:dashmpd)r   f4mwidthheight)rk   r   r   i  Tc              3   P   K   | ]  }g |j                  d d      ddd    yw)r   r   Nr   )split)r   ts     r   r   z*HotStarIE._real_extract.<locals>.<genexpr>  s,     RQ4aggc1o4t4Ra8Rs   $&;
encryption)plainNhas_drmr   noner   r   audio_channelsr      )stereodolby51audio_channelladderformat_notez, r   r   )	countriesmetadata_availablehttp_headersrc   rd   rg   re   broadcastDate	startDater   yearformats	subtitlesrt   channelNameru   	channelIdrv   showNamerw   
seasonNamerx   seasonNory   seasonIdrh   rz   	episodeNo)'_match_valid_urlgroup_TYPEr6   _get_cookiesr   r   dict	get_param
report_drm_download_webpage_handlerZ   r   rH   
isinstancer   any_IGNORE_MAPrM   r   resubr   #_extract_m3u8_formats_and_subtitles"_extract_mpd_formats_and_subtitlesr	   r   causer   statusr   _TAG_FIELDSr
   extend_merge_subtitlesraise_geo_restricted_remove_duplicate_formats
setdefaultupdate)r   rk   r=   r   r?   
video_datar>   geo_restrictedr   subsr   playback_setsplayback_set
format_urlrb   current_formatscurrent_subsetag_dictfkvr   s   `                     @r   _real_extractzHotStarIE._real_extract   s   #44S9??fM*ZZ^^J
;
##C(!,g&UaiEj  lY/1 7 57 	 ~~89jnn^>\OOH% **dnn-=S+A8LQOWW[[\klB 045 ))*<h2W^)_`no) :	=LlD1|//0ABCIrD ?&*&6&6&<&<&>? ? $\%5%5m%DEJ 7:NJ
+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 R$**S/RRH||L)@( (A#'AiL($   ,,224 /DAq558'||A!/ 55?f,QUU?5K)1o)FAo&55?f,QUU;K5L"##$+ c(,,78 &' $1LL*56UU8_5NHLL1TXEE-(	$ -  " NN?+((|<Du:	=x >%%4%P&&w/ 	=ALL,33G<	=
(
Z^^G,
 :>>-8
 JNN:$>?	

 \*o{%[\
 K
v(>?
 w
 
 z~~m4
 +jnn[&AB
 jnnZ0
 jnn\2
 [
)CD
 Z^^J%?@
 z~~g.
  k*..*EF!
 	
G " aggy1aggnn6K%)Ns   
B U	V$$5VV$rV   )rW   rX   rY   IE_NAME
_VALID_URL_TESTS_GEO_BYPASSr   r   r   classmethodrR   r  r[   r   r   rQ   rQ   Q   s   GJ O2A#%4	
 #F+ n+A#%!4!-
( l3!A#!%5!
" 3'* m%!A#)-%'
( W3A5%#	
 E A#%

 I z lMiFT K E K K +;T + +h
r   rQ   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#*  ra   r{   zhotstar:episode:1000234847zhotstar:sports:1260065956zhotstar:sports:1260066104c                     | j                  |      j                  dd      \  }}| j                  t        j	                  ||      t        |      S )Nr!   r"   )r   r   rP   rQ   rR   )r   rk   r=   r   s       r   r  zHotStarPrefixIE._real_extractq  sE    #44S9??fM*y33HjI9V^__r   N)rW   rX   rY   __doc__IE_DESCr  r  r  r[   r   r   r  r  Q  su    bG;J# +)A#%+	
 ,
 + +-F8`r   r  c                   D    e Zd ZdZdZdddidddd	d
dd	d
dd	d
gZd Zy)HotStarPlaylistIEzhotstar:playlistzZhttps?://(?:www\.)?hotstar\.com(?:/in)?/(?:tv|shows)(?:/[^/]+){2}/list/[^/]+/t-(?P<id>\w+)zJhttps://www.hotstar.com/tv/savdhaan-india/s-26/list/popular-clips/t-3_2_26r!   3_2_26   rk   rl   playlist_mincountzMhttps://www.hotstar.com/shows/savdhaan-india/s-26/list/popular-clips/t-3_2_26Tr   zAhttps://www.hotstar.com/tv/savdhaan-india/s-26/list/extras/t-2480zQhttps://www.hotstar.com/in/tv/karthika-deepam/15457/list/popular-clips/t-3_2_1272c           	      r    | j                  |      }| j                  | j                  d|d|d      |      S )Nz	tray/findr   )r   uqIdr*   )	_match_idplaylist_resultrU   )r   rk   id_s      r   r  zHotStarPlaylistIE._real_extract  sC    nnS!##"";5RU;V"WY\^ 	^r   NrW   rX   rY   r  r  r  r  r[   r   r   r  r  v  sZ     GnJ[(
   _ S cF"^r   r  c                   P    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gZd Zy)HotStarSeasonIEzhotstar:seasonzd(?P<url>https?://(?:www\.)?hotstar\.com(?:/in)?/(?:tv|shows)/[^/]+/\w+)/seasons/[^/]+/ss-(?P<id>\w+)zJhttps://www.hotstar.com/tv/radhakrishn/1260000646/seasons/season-2/ss-8028r!   8028#   r  zDhttps://www.hotstar.com/in/tv/ishqbaaz/9567/seasons/season-2/ss-43574357   zGhttps://www.hotstar.com/in/tv/bigg-boss/14714/seasons/season-4/ss-8208/8208   zJhttps://www.hotstar.com/in/shows/bigg-boss/14714/seasons/season-4/ss-8208/Tr   c                     | j                  |      j                         \  }}| j                  | j                  d||ddd|d      |      S )Nzseason/assetr   r   )taor   sizer!   r  )r   groupsr  rU   )r   rk   ry   s      r   r  zHotStarSeasonIE._real_extract  s]    ..s3::<Y##D$:$:Is!Au\e2f %; %hirt 	tr   Nr  r[   r   r   r  r    sr    GxJ[&
   V&
   Y&
   \%F.tr   r  c                   V    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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  z-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/
1260022017i  c                     | j                  |      j                         \  }}| j                  d|d|i      d   d   d   d   }| j                  | j	                  d||d	d
d	|d      |      S )Nzshow/detailrN   r  rJ   rK   r   r!   ztray/g/1/itemsr   r   )r$  r   etideid)r   r&  r   r  rU   )r   rk   	series_idr  s       r   r  zHotStarSeriesIE._real_extract  s    ..s3::<Y9[),D   FFLNNWYY_aaeg ##D$:$:iAeUV_b4c %; %efoq 	qr   Nr  r[   r   r   r(  r(    s|    GoJE,
 ! ?,
   ?%
 ! F,
 !%F4qr   r(  )r3   r/   r8   r   r.   r;   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   rQ   r  r  r  r(  r[   r   r   <module>r5     s       	   ! -  9hM 9hx}
 }
@"`m "`J^ ^4tm t@#qm #qr   