
    ĞiR                        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	m
Z
mZ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dS )    N   )InfoExtractor   )
ExtractorErrorint_or_none
remove_endsmuggle_urlstrip_or_nonetraverse_objtry_getunified_timestampunsmuggle_urlurl_or_nonec                       e Zd Zi ddZdS )	ViuBaseIE)headersc                     | j         d| g|R i |di |                                 |id         }|                    d          dk    r!t          | j         d|d          d	          |S )
Nzhttps://www.viu.com/api/r   responsestatussuccess said: messageTexpected)_download_jsongeo_verification_headersgetr   IE_NAME)selfpathr   argskwargsr   s         YC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/viu.py	_call_apizViuBaseIE._call_api   s    &4&-t--D04D D D8>D DBt4466B'BD D DDNP <<!!Y.. DL!N!N)9L!N!NY]^^^^    N)__name__
__module____qualname__r$    r%   r#   r   r      s0        -/       r%   r   c                   X    e Zd ZdZdddddddd	id
ddddddddd	idddddgZd ZdS )ViuIEz<(?:viu:|https?://[^/]+\.viu\.com/[a-z]{2}/media/)(?P<id>\d+)zEhttps://www.viu.com/en/media/1116705532?containerId=playlist-22168059
1116705532mp4zCitizen Khan - Ep 1z$md5:d7ea1604f49e5ba79c212c551ce2110eidexttitledescriptionskip_downloadm3u8 downloadzGeo-restricted to Indiaurl	info_dictparamsskipz'https://www.viu.com/en/media/1130599965
1130599965zJealousy Incarnate - Episode 1z$md5:d3d82375cab969415d2720b6894361e9Geo-restricted to Indonesiaz)https://india.viu.com/en/media/1126286865T)r6   only_matchingc                    |                      |          }|                     d|ddd|d          d         d         }|d	         }d }|                    d
          p|                    d          }|                    d          }|                    d          }|r|r|r| d| d| }n|d         }|                     ||d          \  }	}
|                                D ]o\  }}t          j        d|          }|s|
                    |                    d          g           	                    ||                    d          d           p|||                    d          |                    d          |t          |                    d                    t          |                    d                    |	|
d	S )Nz	clip/loadzDownloading video dataviu_desktopjsonappidfmtr/   queryitemr   r1   urlpathdurlpathtdirforwhole	jwhlsfile/hrefr-   z+subtitle_(?P<lang>[^_]+)_(?P<ext>(vtt|srt))langr0   )r6   r0   r2   moviealbumshowname	episodenoduration)	r/   r1   r2   seriesepisodeepisode_numberrO   formats	subtitles)	_match_idr$   r   #_extract_m3u8_formats_and_subtitlesitemsrematch
setdefaultgroupappendr   )r   r6   video_id
video_datar1   m3u8_urlurl_pathrH   hls_filerS   rT   keyvaluemobjs                 r#   _real_extractzViuIE._real_extract?   s   >>#&&^^#;&D D $  
 
 
 7#>>*--J	1J1J!~~n55
 >>+.. 	* 	* 	*">>\>>H>>HH
 "&)H!EEhPXZ_``$**,, 	 	JC8JCPPD   F!3!3R88??zz%((A A     %>>-88 nn%9::)*..*E*EFF#JNN:$>$>??"

 

 
	
r%   Nr&   r'   r(   
_VALID_URL_TESTSre   r)   r%   r#   r+   r+       s        PJV*A	
 
 _
 *  95A	
 
 _
 .  ; 1F:0
 0
 0
 0
 0
r%   r+   c                   0    e Zd ZdZdZddddddd	Zd
 ZdS )ViuPlaylistIEzviu:playlistz9https?://www\.viu\.com/[^/]+/listing/playlist-(?P<id>\d+)z0https://www.viu.com/en/listing/playlist-2246138022461380zThe Good Wife)r/   r1      r;   )r6   r7   playlist_countr9   c           	         |                      |          }|                     d|dddd|z   d          d         }g }|                    d	g           D ]V}|                    d
          }|st          |          }|                    |                     d|z   d|                     W|                     |||                    d                    S )Nzcontainer/loadzDownloading playlist infor>   r?   z	playlist-r@   rC   	containerrE   r/   zviu:Viur1   )rU   r$   r   strr\   
url_resultplaylist_result)r   r6   playlist_idplaylist_dataentriesrE   item_ids          r#   re   zViuPlaylistIE._real_extract   s   nnS))k'&!K/0 0 '    !%%fb11 	3 	3DhhtnnG 'llGNN4?? %2 2 3 3 3 3 ##[-"3"3G"<"<> > 	>r%   N)r&   r'   r(   r   rg   _TESTre   r)   r%   r#   rj   rj   r   sT        GMJA$
 
 - E> > > > >r%   rj   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
ddddddddddd
dddd gZdd!d"d#d$Zdd!d%d&Zd'Z	i Z
d( Zd) Zd* Zd+ Zd'S ),ViuOTTIEzviu:ottviuzkhttps?://(?:www\.)?viu\.com/ott/(?P<country_code>[a-z]{2})/(?P<lang_code>[a-z]{2}-[a-z]{2})/vod/(?P<id>\d+)zIhttp://www.viu.com/ott/sg/en-us/vod/3421/The%20Prime%20Minister%20and%20I3421r-   zA New Beginningz$md5:1e7486a619b6399b25ba6a41c0fe5b2cr.   r4   T)r3   
noplaylistzGeo-restricted to Singaporer5   zIhttps://www.viu.com/ott/hk/zh-hk/vod/430078/%E7%AC%AC%E5%85%AD%E6%84%9F-3430078u   大韓民國的1%z$md5:74d6db47ddd9ddb9c89a05739103ccdbr   i  u   第六感 3zYhttps://d2anahhhmp1ffz.cloudfront.net/1313295781/d2b14f48d008ef2f3a9200c98d8e9b63967b9cc2)	r/   r0   r1   r2   rR   rO   rQ   rP   	thumbnailzGeo-restricted to Hong Kongzthttps://www.viu.com/ott/hk/zh-hk/vod/444666/%E6%88%91%E7%9A%84%E5%AE%A4%E5%8F%8B%E6%98%AF%E4%B9%9D%E5%B0%BE%E7%8B%90rl   23807u   我的室友是九尾狐z$md5:b42c95f2b4a316cdd6ae14ca695f33b9)r/   r1   r2   F)r6   rm   r7   r8   r9   r         )HKSGTHPH   )zzh-hkzzh-cnzen-usNc                     t          |d           }|r6|dk    r0t          |d           }t          | j         d| d| dd          |                    d	          pi S )
Nc                     | d         d         S )Nr   coder)   xs    r#   <lambda>z(ViuOTTIE._detect_error.<locals>.<lambda>   s    1X;v+> r%   r   c                     | d         d         S )Nr   r   r)   r   s    r#   r   z(ViuOTTIE._detect_error.<locals>.<lambda>   s    !H+i2H r%   r   z ()Tr   data)r   r   r   r   )r   r   r   r   s       r#   _detect_errorzViuOTTIE._detect_error   s    x!>!>?? 	\D1HHh(H(HIIG DL!K!K!K!KD!K!K!KVZ[[[[||F##)r)r%   c                 b   | j         !|                                 \  }}|d S d| j        |          dd}|                     d|d|t	          j        |dd                                                    }|                    d	          st          d
          |                     d|d|t	          j        ||dd                                                    }| 	                    |           |                    d          | _         |                    d          | j        |<   | j         S )NBearer application/json)AuthorizationContent-Typez7https://api-gateway-global.viu.com/api/account/validatezValidating email addressemail)	principalprovider)r   r   existszInvalid email addressz1https://api-gateway-global.viu.com/api/auth/loginz
Logging in)r   passwordr   identitytoken)
_user_token_get_login_info_auth_codesr   r?   dumpsencoder   r   r   )r   country_coder]   usernamer   r   r   s          r#   _loginzViuOTTIE._login   sa   #!%!5!5!7!7Hh!K4+;L+I!K!K 2 G &&I4gZ!) '! !   688 '  D 88H%% >$%<===&&C,Z% ( '! !   688 '  D t$$$#xx
33D-1XXg->->D\*r%   c                 V   d                     t          j        dd                    }|                     d| d|ddid	t	          j        |                                d
ddt          t          j	                              dd          
                                          d         S )N 
0123456789
   )kz4https://api-gateway-global.viu.com/api/auth/token?v=000r   r   zGetting bearer tokenbrowserweben0)countryCodeplatformplatformFlagLabellanguageuuid	carrierId)r   noter   r   )joinrandomchoicesr   r?   r   upperrq   r   uuid4r   )r   r   r]   rands       r#   
_get_tokenzViuOTTIE._get_token   s    wwv~lb999::""L4LLLh#%78?U+1133%%* DJLL))     vxx # 
 
 !
" 
	"r%   c                     t          i           \  }                                                               \  }ddd j                                                                      }|r|d<                        d dd          d	         }|                    d
          }|s                                  |                    d          }                     ||          r|                    d          pi }|                    d          }	|	rg }
t          |	d           D ]}|                    d          }|s|

                                         t          d d| d| dddi          t          t          |          |                    dd                                                                                    |
||                    d          |                    d                    S d}|d          j                            |                                          pdd fd} j                                      s                                j        <   d }	  |            }ny# t*          t,          f$ re                                }||d<   nd\  }d <   	  |            }n0# t*          t,          f$ r |                      d!"           Y nw xY wY nw xY w|st+          d#d$          g }|                    d%          pi                                 D ]$\  }t5                               d&d'd (                    }|rt8          j                            |          }t?          t8          j                             |j!        d)                    "                    |                    d*          pd+d,d-           |#                    t8          j        $                                        %                                }|
                    ||d.tM          |fd/t4                    d0           &i }|                    d1          pg D ]}|                    d          pd2}|                    d%          r6|'                    |g           
                    |d%         d3d4| d5           |                    d6          r9|'                    | d7g           
                    |d6         d3d8| d5           tQ          |                    d                    }||                    d          tM          |d9           |tS          |                    d:                    tS          |                    d                     tU          |                    d;                    ||d<
S )=Nzvod/ajax-detailr   )rplatform_flag_label
product_idarea_idzhttp://www.viu.com/ott/z
/index.phpzDownloading video inforC   r   current_product	series_idrP   productc                 H    t          |                     dd                    S )Nnumberr   )r   r   r   s    r#   r   z(ViuOTTIE._real_extract.<locals>.<lambda>)  s    ;quuXWXGYGY;Z;Z r%   )rb   r   rJ   z/vod/force_noplaylistTsynopsisr   namer2   Fccs_product_id3)r   language_flag_idc                                           ddddj                  d          }                     |                               d          S )Nz:https://api-gateway-global.viu.com/api/playback/distributeFzDownloading stream infor   )r   RefererOrigin)r]   rD   fatalr   r   stream)r   r   r   r   )stream_datar   rD   r   r6   r]   s    r#   download_playbackz1ViuOTTIE._real_extract.<locals>.download_playback:  sq    --L!eB[%Ot/?/M%O%O"!  .  K %%k2266x@@@r%   r   )T180rO   r   )methodzCannot get stream infor   r6   zs(\d+)pheightdefault)keep_blank_valuestime_duration9999999r   )rO   duration_startr-   c                      | d                  S )Nsizer)   )r   
vid_formats    r#   r   z(ViuOTTIE._real_extract.<locals>.<lambda>o  s    1V9Z;P r%   )	format_idr6   r   r0   filesizesubtitleundsrtzSpoken text for )r6   r0   r   second_subtitle_url_ostzOn-screen text for c                     | d         d         S )NrP   r   r)   r   s    r#   r   z(ViuOTTIE._real_extract.<locals>.<lambda>  s    ak&6I r%   r   cover_image_url)
r/   r1   r2   rP   rQ   rR   rO   r   rS   rT   )+r   _match_valid_urlgroups_AREA_IDr   r   r   raise_geo_restricted_yes_playlistsortedr\   rr   r	   rz   rq   striprs   _LANGUAGE_FLAGlowerr   r   r   KeyErrorr   raise_login_requiredrW   int_search_regexurllibparseurlparsedict	parse_qslrD   update_replace	urlencodegeturlr   rZ   r
   r   r   )r   r6   idata	lang_coder   product_datar^   r   rP   r   rv   entryrw   duration_limitr   r   r   rS   
stream_urlr   old_stream_urlrT   subrL   r1   r   rD   r   r]   s   ``                       @@@@r#   re   zViuOTTIE._real_extract  s   "3++
U,0,A,A#,F,F,M,M,O,O)i ##("
 
 -##L$6$6$8$899 	'&E)**>l>>>$E + 3 339; "%%&788
 	(%%'''NN;//	i599 	o!%%h//52Fjj++G o#G1Z1Z[[[ T TE#ii55G" ! NN4??#$gl$g$gY$g$g]d$g$g$g%7$>@ @ #g,,		*b0I0I0O0O0Q0Q$S $S T T T T
 ++GY

6@R@RTZT^T^_lTmTmnnn()9: $ 3 7 7	8I8I J J Qc
 

		A 		A 		A 		A 		A 		A 		A 		A 		A ##L11 	U-1__\8-T-TD\*	=++--KK) 	= 	= 	=KKh77E $)j!! 5@1j 1=//11"H- = = =$)))<<<<<=	=  	J !9DIIII'2u'='='C&J&J&L&L 	 	"J
++J
HVZ+[[\\F  c!'!6!6z!B!BV\33N4H\`3aabb * ? ? L9&)     ,446<;Q;QRW;X;X4YY``bb
NN'! #K1P1P1P1PRUVV      	>>*--3 	 	C776??+eDwwu~~ $$T2..55u: 5t557 7   
 ww,-- $$]]]B77>>45 8$88@ @    jnnZ8899%>>-88l,I,IJJ)*..*B*BCC#KOOJ$?$?@@$Z^^4E%F%FGG"
 
 	
s6   
J 7L
KL*L	LL		LL)r&   r'   r(   r   _NETRC_MACHINErg   rh   r   r   r   r   r   r   r   re   r)   r%   r#   rz   rz      sm       GNJZ&A	
 
 -
 
 .  [(A*#t

 

 -
 
 .# & F/A
 
 -
 
 . ?,F^ 	 H  N KK* * *     B" " "A
 A
 A
 A
 A
r%   rz   c                       e Zd ZdddddddZ e ej                              Z e ej                              ZdZ	ed	d
Z
dddZd ZdS )ViuOTTIndonesiaBaseIEg      ?r?   g      @g       @r>   desktop)verrB   averappverrA   r   Nr   )zx-session-idzx-client      )ADULTSteensc           
          |                      dd ddi| j        i | j        d| j        it	          j        d| j        i                                          d          d         t          _        d S )	Nz"https://um.viuapi.io/user/identityzContent-typer   iiddeviceIdzDownloading token information)r   rD   r   r   r   )	r   _HEADERS_BASE_QUERY
_DEVICE_IDr?   r   r   r
  _TOKEN)r   s    r#   _real_initializez&ViuOTTIndonesiaBaseIE._real_initialize  s    '+':':0$#%7I4=I>T%>udo>>Z9::AACC0 (; (2 (2
 3:(;$$$r%   )r&   r'   r(   r  rq   r   r   r  _SESSION_IDr  r  _AGE_RATINGS_MAPPERr  r)   r%   r#   r
  r
    s         K ZTZ\\""J#jdjll##KF $ H  
; ; ; ; ;r%   r
  c                       e 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dddgdddddddd d!d"d g d#d$d%
dd&d'dddd(d$d)d*d+d,d-
dgZd. Zd/S )0ViuOTTIndonesiaIEz?https?://www\.viu\.com/ott/\w+/\w+/all/video-[\w-]+-(?P<id>\d+)zhttps://www.viu.com/ott/id/id/all/video-japanese-drama-tv_shows-detective_conan_episode_793-1165863142?containerId=playlist-26271226
1165863142r-   i  zEpisode 793zDetective Conan - Episode 793i  z$md5:b79d55345bc1e0217ece22616267c9a5zhhttps://vuclipi-a.akamaihd.net/p/cloudinary/h_171,w_304,dpr_1.5,f_auto,c_thumb,q_auto:low/1165863189/d-120210101i f_)
r/   r0   rR   rQ   r1   rO   r2   r   upload_date	timestamp)r6   r7   zlhttps://www.viu.com/ott/id/id/all/video-korean-reality-tv_shows-entertainment_weekly_episode_1622-1118617054
1118617054iV  zEpisode 1622z$md5:6d68ca450004020113e9bf27ad99f0f8z#Entertainment Weekly - Episode 1622iy  zhhttps://vuclipi-a.akamaihd.net/p/cloudinary/h_171,w_304,dpr_1.5,f_auto,c_thumb,q_auto:low/1120187848/d-1i T20150101zShin Hyun-joonz
Lee Da-Hee)r/   r0   rR   rQ   r2   r1   rO   r   r"  r!  castzhttps://www.viu.com/ott/id/id/all/video-japanese-trailer-tv_shows-trailer_jujutsu_kaisen_ver_01-1166044219?containerId=playlist-26273140
116604421920200101i ^zTrailer 'Jujutsu Kaisen' Ver.01\   zhhttps://vuclipi-a.akamaihd.net/p/cloudinary/h_171,w_304,dpr_1.5,f_auto,c_thumb,q_auto:low/1166044240/d-1)zJunya Enokiu    Yûichi Nakamuraz Yuma Uchidaz
Asami Setor  )
r/   r0   r!  r"  r1   rO   r   r2   r%  	age_limitzhttps://www.viu.com/ott/id/id/all/video-japanese-animation-movies-demon_slayer_kimetsu_no_yaiba_the_movie_mugen_train-1165892707?containerId=1675060691786
1165892707z8Demon Slayer - Kimetsu no Yaiba - The Movie: Mugen Trainzcount:9zhhttps://vuclipi-a.akamaihd.net/p/cloudinary/h_171,w_304,dpr_1.5,f_auto,c_thumb,q_auto:low/1165895279/d-1z$md5:1ce9c35a3aeab384085533f746c87469im  )
r/   r0   r"  r!  r1   r)  r%  r   r2   rO   c                 (   |                      |          }|                     ||          }|                     d| |ddt          j        i| j        ddi          }|                     |d         |          \  }}|                     d|d	|          d
         d         }|                                D ]\  }}| 	                    d|ddd          \  }	}
|	ri|
rg|
                    |	g                               |
|d           |
dk    r5||	                             dt          ||         d           dd           t          t          t          d |                     ||                              d          pi }|t          |dd          p|                    d          |                    d          p|                    d          |                    d          t          |d          t%          |                    d                    ||t          |ddt&                    p!t'          |                    d                     t          |d!d "          | j                            |                    d#                    d$S )%Nz$https://um.viuapi.io/drm/v1/content/r%   r   ccodeID)r   r   playUrlzwindow\.__INITIAL_STATE__\s*=zinitial statecontentclipDetailsz(^subtitle_(?P<lang>[\w-]+)_(?P<ext>\w+)$zsubtitle metadata)NN)rL   r0   )r   r[   )r0   r6   vttr   c                 0    |                      d          dv S )Nz@type)	TVEpisodeMovie)r   r   s    r#   r   z1ViuOTTIndonesiaIE._real_extract.<locals>.<lambda>  s    aeeGnn(>> r%   r   r1   display_titler   r2   rO   )imager6   dateCreated
episode_norN   )expected_typeepisodeNumber)actor.r   r   internal_age_rating)r/   r1   r2   rO   r   r"  rS   rT   rR   r%  r)  )rU   _download_webpager   r
  r  r  rV   _search_jsonrW   r   rZ   r\   r   r   listfilter_yield_json_ldr   r   r   r  )r   r6   
display_idwebpager^   rS   rT   initial_staterb   rL   r0   rQ   s               r#   re   zViuOTTIndonesiaIE._real_extract  s   ^^C((
((j99((?:??RU$&;&BcdmcU\^bcc ) e e
 "EEjQZF[]ghh)),g !##02 &++-- 	 	HC**;SBU$O + = =ID#  
 
$$T2..557 7   
 %<<dO**$",]3-?"G"GLLL, ,   
 tF>>@S@ST[]g@h@h%j %j  k  klmo o urt 	 "='?KK - V,,(,,];;Yw{{=?Y?Y%))*55%g/?@@*7;;}+E+EFF"+M<doppp  L"-gkk/.J.J"K"K *@$OOO155m6G6GH]6^6^__
 
 	
r%   Nrf   r)   r%   r#   r  r    s+       SJ V!$4A D%#
 
  ~"%A: D#%%|4
 
 " Z%#8 D>VVV
 
 " l#%O DA
 
 Y;Fz,
 ,
 ,
 ,
 ,
r%   r  )r?   r   rX   urllib.parser   r   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r+   rj   rz   r
  r  r)   r%   r#   <module>rH     s     				      ! ! ! ! ! !                              O
 O
 O
 O
 O
I O
 O
 O
d!> !> !> !> !>I !> !> !>Hx
 x
 x
 x
 x
} x
 x
 x
v; ; ; ; ;M ; ; ;Bk
 k
 k
 k
 k
- k
 k
 k
 k
 k
r%   