
    V|h)                         S SK r SSKJr  SSKJrJrJrJr   " S S\5      r " S S	\5      r	 " S
 S\5      r
 " S S\5      rg)    N   )InfoExtractor   )ExtractorErrorint_or_nonetraverse_objtry_getc                   $    \ rS rSrS rSS jrSrg)AmazonMiniTVBaseIE   c                 t    U R                  SS SS9  U R                  S5      S   R                  [        l        g )Nzhttps://www.amazon.in/minitvzFetching guest session cookiesnotezhttps://www.amazon.inz
session-id)_download_webpage_get_cookiesvaluer   
session_id)selfs    W/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/amazonminitv.py_real_initialize#AmazonMiniTVBaseIE._real_initialize   s@    *D1 	 	3 )-(9(9:Q(RS_(`(f(f%    Nc           
         SSS.nU(       a#  US   R                  SU R                  S.UE5        U R                  SU(       a  SOS	 3XS
SSS.U(       a$  [        R                  " U5      R                  5       OS U(       a  S OSUS.UES9nUR                  S5      (       a  [        SUS   S   S    35      eU(       d  U$ US   US      $ )NATVINen_GB)clientIddeviceLocale	variablesVOD)contentTypesessionIdTokenz%https://www.amazon.in/minitv/api/web/graphqlprszapplication/json/dWeb)zContent-TypecurrentpageurlcurrentplatformA1WMMUXPCUJL4N)
deviceType	contentId)r   headersdataqueryerrorszMiniTV said: r   messager,   operationName)updater   _download_jsonjsondumpsencodegetr   )r   asinr,   r   deviceresps         r   	_call_apiAmazonMiniTVBaseIE._call_api   s    %w?$$$"&//& &  ""3I53QR 2"%#)& 26DJJt$++-4$.!% % #  88H =h1B91M0N!OPPKF|D122r    )NN)__name__
__module____qualname____firstlineno__r   r:   __static_attributes__r<   r   r   r   r      s    g3r   r   c                       \ rS rSrSrS0 SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S	_S#S$_S%S0ES&.S'S(SS)SS*S+S,S-S./ S/.
S&.S0S1S2.S3S1S2.S4S1S2./rS5rS6 rS7rg8)9AmazonMiniTVIE+   za(?:https?://(?:www\.)?amazon\.in/minitv/tp/|amazonminitv:(?:amzn1\.dv\.gti\.)?)(?P<id>[a-f0-9-]+)zrhttps://www.amazon.in/minitv/tp/75fe3a75-b8fe-4499-8100-5c9424344840?referrer=https%3A%2F%2Fwww.amazon.in%2Fminitvidz1amzn1.dv.gti.75fe3a75-b8fe-4499-8100-5c9424344840extmp4titlezMay I Kiss You?languageHindi	thumbnailzre:^https?://.*\.(?:jpg|png)$descriptionz$md5:a549bfc747973e04feb707833474e59drelease_timestampi Jbrelease_date20220213durationiN  chapterszcount:2serieszCouple Goals	series_id1amzn1.dv.gti.56521d46-b040-4fd5-872e-3e70476a04b0seasonzSeason 3season_number   	season_idz1amzn1.dv.gti.20331016-d9b9-4968-b991-c89fa4927a36episodeepisode_numberr   
episode_id)url	info_dictzrhttps://www.amazon.in/minitv/tp/280d2564-584f-452f-9c98-7baf906e01ab?referrer=https%3A%2F%2Fwww.amazon.in%2Fminitvz1amzn1.dv.gti.280d2564-584f-452f-9c98-7baf906e01abJahaanzre:^https?://.*\.(?:jpg|png)z$md5:05eb765a77bf703f322f120ec6867339i z2b20220317i  )
rE   rF   rH   rI   rK   rL   rM   rN   rP   rQ   zDhttps://www.amazon.in/minitv/tp/280d2564-584f-452f-9c98-7baf906e01abTr\   only_matchingz>amazonminitv:amzn1.dv.gti.280d2564-584f-452f-9c98-7baf906e01abz1amazonminitv:280d2564-584f-452f-9c98-7baf906e01abaw  
query content($sessionIdToken: String!, $deviceLocale: String, $contentId: ID!, $contentType: ContentType!, $clientId: String) {
  content(
    applicationContextInput: {deviceLocale: $deviceLocale, sessionIdToken: $sessionIdToken, clientId: $clientId}
    contentId: $contentId
    contentType: $contentType
  ) {
    contentId
    name
    ... on Episode {
      contentId
      vodType
      name
      images
      description {
        synopsis
        contentLengthInSeconds
      }
      publicReleaseDateUTC
      audioTracks
      seasonId
      seriesId
      seriesName
      seasonNumber
      episodeNumber
      timecode {
        endCreditsTime
      }
    }
    ... on MovieContent {
      contentId
      vodType
      name
      description {
        synopsis
        contentLengthInSeconds
      }
      images
      publicReleaseDateUTC
      audioTracks
    }
  }
}c           
         SU R                  U5       3nU R                  USS9n/ 0 pTUS   R                  5        H  u  pg[        US5      (       d  M  US:X  a=  U R	                  US   USSUS	S
9u  pUR                  U5        U R                  XY5      nM[  US:X  a:  U R                  US   X&S	S9u  pUR                  U
5        U R                  X[5      nM  U R                  SU 35        M     U R                  USSSU0U R                  S.S9n[        US 5      nUR                  S5      S:H  n0 SU_SUR                  S5      _SU_SU_S[        US5      _SUR                  S5      =(       d    0 R                  5        VVs/ s H
  u  paUUS.PM     snn_S [        US!5      _S"[        [        US# 5      5      _S$[        US%5      _S&U(       a  US'S(./O/ _S)UR                  S*5      _S+UR                  S,5      _S-UR                  S.5      _S/UR                  S05      _S1U(       a  UR                  S5      OS _S2UR                  S35      _S4U(       a  U_$ S _$ s  snnf )5Namzn1.dv.gti.zDownloading playback infor   playbackAssetsmanifestUrlhlsrG   m3u8_nativeF)rF   entry_protocolm3u8_idfataldash)mpd_idrj   zUnknown asset type: zDownloading title infocontentr*   r0   r   r-   r   r,   c                     U S   S   S-  $ )NtimecodeendCreditsTime  r<   xs    r   <lambda>.AmazonMiniTVIE._real_extract.<locals>.<lambda>   s    Qz]CS5TW[5[r   vodTypeEPISODErE   rH   nameformats	subtitlesrI   )audioTracksr   
thumbnailsimages)rE   r\   rL   )rL   synopsisrM   c                     U S   S-  $ )NpublicReleaseDateUTCrs   r<   rt   s    r   rv   rw      s    1McKdgkKkr   rP   )rL   contentLengthInSecondsrQ   zEnd Credits)
start_timerH   rR   
seriesNamerS   seriesIdrV   seasonNumberrX   seasonIdrY   rZ   episodeNumberr[   )	_match_idr:   itemsr   #_extract_m3u8_formats_and_subtitlesextend_merge_subtitles"_extract_mpd_formats_and_subtitlesreport_warning_GRAPHQL_QUERY_CONTENTr	   r6   r   )r   r\   r7   r#   r{   r|   type_asset	m3u8_fmts	m3u8_subsmpd_fmtsmpd_subs
title_infocredits_time
is_episodes                  r   _real_extractAmazonMiniTVIE._real_extract   s   t~~c234nnT(CnD 01779LE}55~'+'O'O-($E-! (P (0$	 y) 11)G	&%)%L%L-($E &M &K"x( 11)F	##&:5'$BC :" ^^/!*)40447 $ 
 z+[\^^I.);

$
Z^^F+
 w
 	

 Z1CD
  ",!9!?R F F HJ !I*%  !IJ
 <
4OP
  WZAk-l!m
 Z1Z[
   +&  %'!
" jnn\2#
$ 
3%
& Z^^N;'
( 
3)
* z~~f-+
, jnn_=-
. *$/
 	
. 37/
 	
Js   I
r<   N)	r=   r>   r?   r@   
_VALID_URL_TESTSr   r   rA   r<   r   r   rC   rC   +   sb   uJ D
E
5
 &
 	

 9
 A
  
 J
 
 	
 n
 L
 j
 Q
 L
  (!
" a#
$ M%
. DE8A!+&
 V P CU-F^*X7
r   rC   c                   J    \ rS rSrSrSrSrSSSS0S	.S
SS./rSrS r	S r
Srg)AmazonMiniTVSeasonIE   zamazonminitv:seasonz;amazonminitv:season:(?:amzn1\.dv\.gti\.)?(?P<id>[a-f0-9-]+)z-Amazon MiniTV Season, "minitv:season:" prefixzEamazonminitv:season:amzn1.dv.gti.0aa996eb-6a1b-4886-a342-387fbd2f1db0   rE   z1amzn1.dv.gti.0aa996eb-6a1b-4886-a342-387fbd2f1db0r\   playlist_mincountr]   z8amazonminitv:season:0aa996eb-6a1b-4886-a342-387fbd2f1db0Tr`   a[  
query getEpisodes($sessionIdToken: String!, $clientId: String, $episodeOrSeasonId: ID!, $deviceLocale: String) {
  getEpisodes(
    applicationContextInput: {sessionIdToken: $sessionIdToken, deviceLocale: $deviceLocale, clientId: $clientId}
    episodeOrSeasonId: $episodeOrSeasonId
  ) {
    episodes {
      ... on Episode {
        contentId
        name
        images
        seriesName
        seasonId
        seriesId
        seasonNumber
        episodeNumber
        description {
          synopsis
          contentLengthInSeconds
        }
        publicReleaseDateUTC
      }
    }
  }
}
c              #      #    U R                  USSSU0U R                  S.S9nUS    H%  nU R                  SUS    3[        US   5      v   M'     g 7f)	NzDownloading season infogetEpisodesepisodeOrSeasonIdrn   ro   episodeszamazonminitv:r*   )r:   _GRAPHQL_QUERY
url_resultrC   )r   r7   season_inforY   s       r   _entriesAmazonMiniTVSeasonIE._entries   su     nn0!.148,,8 %  #:.G// 456P[H\^ ^ /   AAc                 l    SU R                  U5       3nU R                  U R                  U5      U5      $ Nrc   r   playlist_resultr   r   r\   r7   s      r   r   "AmazonMiniTVSeasonIE._real_extract   4    t~~c234##DMM$$7>>r   r<   Nr=   r>   r?   r@   IE_NAMEr   IE_DESCr   r   r   r   rA   r<   r   r   r   r      sN    #GOJ=GVE
 J	FN6
^?r   r   c                   J    \ rS rSrSrSrSrSSSS0S	.S
SS./rSrS r	S r
Srg)AmazonMiniTVSeriesIE   zamazonminitv:seriesz;amazonminitv:series:(?:amzn1\.dv\.gti\.)?(?P<id>[a-f0-9-]+)z-Amazon MiniTV Series, "minitv:series:" prefixzEamazonminitv:series:amzn1.dv.gti.56521d46-b040-4fd5-872e-3e70476a04b0rW   rE   rT   r   z8amazonminitv:series:56521d46-b040-4fd5-872e-3e70476a04b0Tr`   aa  
query getSeasons($sessionIdToken: String!, $deviceLocale: String, $episodeOrSeasonOrSeriesId: ID!, $clientId: String) {
  getSeasons(
    applicationContextInput: {deviceLocale: $deviceLocale, sessionIdToken: $sessionIdToken, clientId: $clientId}
    episodeOrSeasonOrSeriesId: $episodeOrSeasonOrSeriesId
  ) {
    seasons {
      seasonId
    }
  }
}
c              #      #    U R                  USSSU0U R                  S.S9nUS    H%  nU R                  SUS    3[        US   5      v   M'     g 7f)	NzDownloading series info
getSeasonsepisodeOrSeasonOrSeriesIdrn   ro   seasonszamazonminitv:season:r   )r:   r   r   r   )r   r7   r   rU   s       r   r   AmazonMiniTVSeriesIE._entries  sq     nn0!-94@,,8 %  "),F//$8
9K8L"MOceklvewxx -r   c                 l    SU R                  U5       3nU R                  U R                  U5      U5      $ r   r   r   s      r   r   "AmazonMiniTVSeriesIE._real_extract$  r   r   r<   Nr   r<   r   r   r   r      sN    #GOJ=GVE
 J	FN	y?r   r   )r3   commonr   utilsr   r   r   r	   r   rC   r   r   r<   r   r   <module>r      sI     ! F F!3 !3HT
' T
n8?- 8?v)?- )?r   