
    yf	G                         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 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   )
compat_str)	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       :/usr/lib/python3/dist-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||fz  }|dt        j                  | j
                  |j                         t        j                        j                         z   z  }|r-|j                  d      r|j                  d      j                  }nm| j                  | j                   d|dt        j                  dt!        t#        j$                               dd	gi      j                  d
      |ddd      d   }| j                  | j                   d| |||dd|d      }	|	d   dk7  rt'        |	d   d      |	d   S )Nip  zst=%d~exp=%d~acl=/*z~hmac=userUPz/um/v3/userszDownloading token
device_ids	device_id)idtypezutf-8r   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dumpsr   uuiduuid4r   )
r   r   video_idr+   stcookiesexpauthtokenresponses
             r   _call_api_implzHotStarBaseIE._call_api_impl    sn   _0DIIK 04i$Cy0488D$?$?PWP^P^_iikkkw{{8,KK)//E''==/.2ZZz$**,7OYd0e/f ghoopwx#'%+$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   r7   r8   r   r;   r<   )r   r   r=   r>   r?   s        r   _call_api_v2zHotStarBaseIE._call_api_v2A   so    ""fIhZ((r7 #v?F{{;?WW[[5;;]ghlhrhrht]u$"	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   r7   
url_result	HotStarIE
_video_url)r   r   item_idrO   r   rK   videos          r   _playlist_entrieszHotStarBaseIE._playlist_entriesJ   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   r2   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        d j'                  d      D              }t)        |j                  d            }|st+        j,                  dd|      }t/        |      }g i }}	 dv s|dk(  r j1                  ||d|
      \  }}n^d v s|d!k(  r j3                  |||
"      \  }}n=|d#k(  rn7|t5        |j                  d$            t5        |j                  d%            d&g}|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>t5        |j                  d>            d?t5        t        |d@dA            dBt5        |j                  dC            dD|dE|	dF|j                  dG      dHt        |j                  dI            dJ|j                  dK      dL|j                  dM      dNt5        |j                  dO            dPt        |j                  dQ            dR|j                  d<      dSt5        |j                  dT            S # t6        $ r@}t        |j8                  t:              r|j8                  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   ,/c              3   N   K   | ]  }|j                  d d      dgz   dd   yw)r   r   Nr   )split)r   ts     r   r   z*HotStarIE._real_extract.<locals>.<genexpr>  s(     TqQWWS!_v5r:Ts   #%;playbackUrlz(?<=//staragvod)(\d)zweb\1zpackage:hlsrj   r_   )rb   r   zpackage:dashmpd)r   f4mwidthheight)rk   r   r   i  T
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_TYPEr7   _get_cookiesr   r   dict	get_param
report_drm_download_webpage_handlerZ   r   rH   
isinstancer   any_IGNORE_MAPrM   r   r   resubr	   #_extract_m3u8_formats_and_subtitles"_extract_mpd_formats_and_subtitlesr
   r   causer   status_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tag_dict
format_urlrb   current_formatscurrent_subse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&<&<&>? ? TDJJsOTTH$\%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 ||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!
 	
E " 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   R   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_extractr  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  R  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  w  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(  )r4   r0   r9   r   r/   r;   commonr   compatr   networking.exceptionsr   utilsr   r	   r
   r   r   r   r   r   rQ   r  r  r  r(  r[   r   r   <module>r6     s       	   !  -  9hM 9hx}
 }
@"`m "`J^ ^4tm t@#qm #qr   