
    Ği=                         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mZ ddlmZ  G d de          Z G d d	e          Z G d
 de          ZdS )   )InfoExtractor   )	HTTPError)ExtractorErrorLazyListint_or_nonejoin_nonemptyparse_iso8601parse_qssmuggle_urlstr_or_noneurl_or_noneurlencode_postdataurljoin)traverse_objc                   ,    e Zd ZdZdZe dZd Zd ZdS )RoosterTeethBaseIEroosterteethz https://svod-be.roosterteeth.comz/api/v1c                    |                      | j                                      d          rd S 	 |                     dd dt	          dd||d                     d S # t
          $ r}d}t          |j        t                    r|j        j	        d	k    r| 
                    |j        j                                                                        d d
          }|rI|                    d          p)|                    d          p|                    d          }|r|d|z   z  }|                     |           Y d }~d S d }~ww xY w)Nrt_access_tokenz)https://auth.roosterteeth.com/oauth/tokenz
Logging in@4338d2b4bdc8db1239360f28e72f0d9ddb1fd01e7a38fbb07b4b1f4ba4564cc5password)	client_id
grant_typeusernamer   )datazUnable to logini  Ffatal
extra_infoerror_descriptionerrorz: )_get_cookies_API_BASE_URLget_download_jsonr   r   
isinstancecauser   status_parse_jsonresponsereaddecodereport_warning)selfr   r   emsgrespr!   s          bC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/roosterteeth.py_perform_loginz!RoosterTeethBaseIE._perform_login   s   T/00445FGG 	F	%;l);!c", ( (	= = * *         	% 	% 	%#C!'9-- ,!'.C2G2G''(8(=(=(?(?(F(F(H(H$V['\\ , HH\22hdhh?R6S6ShW[W_W_`gWhWhE ,te|+$$$$$$$$$	%s   +A 
E(CE  Ec           	         g }t          |d          D ]`}|                    d          dvr|                    d |                    d          pi                                 D                        a|                    d          pi }t          |dd          }|                    d          }t	          |                    d	                    }t	          |                    d
                    }|r
d|v r|dz  }n|s|}i d
|d|                    d          d|dt          |dd          dt          |dd          dt          |                    d                    dt	          |                    d                    d|dt          |                    d                    d|d|                    d          dt          |                    d                    dt          |                    d                    d|d |                     |||d!d!"          d#|                    d$          S )%N)includedimagestype)episode_imagebonus_feature_imagec                 <    g | ]\  }}t          |          ||d S ))idurl)r   ).0namer<   s      r2   
<listcomp>z:RoosterTeethBaseIE._extract_video_info.<locals>.<listcomp>4   sP     \ \ \ $+VYJZJZ\    \ \ \    
attributestitledisplay_titleis_sponsors_onlyuuidr;   parent_content_idz-bonus
display_idslugdescriptioncaptionseries
show_titleparent_content_titleseason_number	season_idepisodeepisode_numbernumber
episode_id
channel_iddurationlengthrelease_timestamporiginal_air_date
thumbnailsavailabilityF)needs_premiumneeds_subscription
needs_auth
is_privateis_unlistedtagsgenres)r   r$   extenditemsr   r   r
   _availability)	r.   r   rY   imagerA   rB   sub_onlyrS   video_ids	            r2   _extract_video_infoz&RoosterTeethBaseIE._extract_video_info/   s   
!$(>?? 	] 	]Eyy  (PPP \ \ !&		, 7 7 =2DDFF\ \ \ ] ] ] ]
 XXl++1r
Z/BB>>"455 &!1!122
txx~~.. 	"+z99 HH 	"!H
(
*..00
 U
 <
M9MM	

 l:|=STT
 [)H)HII
 Z^^K%@%@AA
 u
 k*..*B*BCC
 *
 *..66
 JNN8$<$<==
  z~~>Q/R/R!S!S
 *
 D..&8PX e / 5 5
$ JNN8,,%
 	
r@   N)__name__
__module____qualname___NETRC_MACHINE	_API_BASEr#   r3   rh    r@   r2   r   r      sJ        #N2I )))M% % %.(
 (
 (
 (
 (
r@   r   c                      e Zd ZdZdi 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d d!d"d#d$d%d&d'd(d)id*d+i dd,dd-d	d.dd/dd.d!d0dd1dddddd2dd3dd4gdd5dd6dd7dd8d#d9d:d;d'd(d)id*d<d=d>d?d@d?d0d1dddAdBdCdDdEdFdGd(d)id*dHi ddIddd	dJddKdddd1ddJddLddMddNddOgddPddQddRddSd!dTd#dUdVdWd'd(d)id*dXi ddYddd	dZdddd[dddd\d!d]ddZdd^dd1ddOd_gdd`ddadd3ddbdcdddedfidggd(d)idhdid)djdkd)djdld)djdmd)djdnd)djdod)djdpd)djgZdqZdr Zds ZdtS )uRoosterTeethIEzUhttps?://(?:.+?\.)?roosterteeth\.com/(?:bonus-feature|episode|watch)/(?P<id>[^/?#&]+)zfhttp://roosterteeth.com/episode/million-dollars-but-season-2-million-dollars-but-the-game-announcementr;   9156rG   zFmillion-dollars-but-season-2-million-dollars-but-the-game-announcementextmp4rB   z-Million Dollars, But... The Game AnnouncementrI   z$md5:168a54b40e228e79f4ddb141e89fe4f5	thumbnailzre:^https?://.*\.png$rK   zMillion Dollars, But...rP   r`   z	Game ShowSketchrN   r   rZ   publicrQ   
   rS   z$00374575-464e-11e7-a302-065410f210c4seasonzSeason 2rO   z$ffa27d48-464d-11e7-a302-065410f210c4rT   z$92b6bb21-91d2-4b1b-bf95-3268fa0d9939rU      i W3W20160511)rW   release_dateskip_downloadT)r<   	info_dictparamsz,https://roosterteeth.com/watch/rwby-bonus-2540432zrwby-bonus-25Grimmz$md5:f30ff570741213418a8d2c19868b93abz$92f780eb-ebfe-4bf5-a3b5-c6ad5460a5f1zre:^https?://.*\.(png|jpe?g)$z$f8117b13-f068-499e-803e-eec9ea2dec8c   	Animationz$4b8f0a9e-12c4-41ed-8caa-fed15a85bab8zSeason 1zRWBY: World of Remnantr      i#@T20141016z,https://roosterteeth.com/watch/rwby-bonus-21z33-bonuszrwby-bonus-21zVolume 5 Yang Character Shortz$md5:8c2440bc763ea90c52cfe0a68093e1f7z$f2a9f132-1fe2-44ad-8956-63d7c02677207   RWBY   ip&Y20171014)r;   rG   rB   rI   rP   rT   rt   rr   rZ   rS   rQ   rK   rU   rW   r{   zhttps://www.roosterteeth.com/watch/achievement-hunter-achievement-hunter-fatality-walkthrough-deathstroke-lex-luthor-captain-marvel-green-lantern-and-wonder-woman25394z^Fatality Walkthrough: Deathstroke, Lex Luthor, Captain Marvel, Green Lantern, and Wonder Womanz$md5:91bb934698344fb9647b1c7351f16964G   z$ffaec998-464d-11e7-a302-065410f210c4zSeason 2008GamingzAchievement Hunterz$md5:4465ce4f001735f9d7a2ae529a543d31z$ffa13340-464d-11e7-a302-065410f210c4i  z$2cb2a70c-be50-46f5-93d7-84a1baabb4f7   it6I20081203z1https://roosterteeth.com/watch/lets-play-2013-12617845zWWE '13z
Let's Playz$ffa23d9c-464d-11e7-a302-065410f210c4z$75ba87e8-06fd-4482-bad9-52a4da2c6181z$ffdbe55e-464d-11e7-a302-065410f210c4zOur Favoritesz$md5:b4a5226d2bbcf0dafbde11a2ba27262dzlets-play-2013-126zSeason 3rW   i`Qr{   20130204z'Direct m3u8 URL returned HTTP Error 403)r<   r}   expected_warningsr~   zhttp://achievementhunter.roosterteeth.com/episode/off-topic-the-achievement-hunter-podcast-2016-i-didn-t-think-it-would-pass-31)r<   only_matchingzWhttp://funhaus.roosterteeth.com/episode/funhaus-shorts-2016-austin-sucks-funhaus-shortszRhttp://screwattack.roosterteeth.com/episode/death-battle-season-3-mewtwo-vs-shadowzahttp://theknow.roosterteeth.com/episode/the-know-game-news-season-1-boring-steam-sales-are-betterzhttp://roosterteeth.com/episode/rt-docs-the-world-s-greatest-head-massage-the-world-s-greatest-head-massage-an-asmr-journey-part-onezehttps://roosterteeth.com/watch/million-dollars-but-season-2-million-dollars-but-the-game-announcementznhttps://roosterteeth.com/bonus-feature/camp-camp-soundtrack-another-rap-song-about-foreign-cars-richie-branson6203312018001c                     |                      d|d| j                  }| j                            d                              t          d| d| d|i                    }|d         |d	         fS )
Nz/accounts/(\d+)/videos/z
account id)defaultBrightcoveNewzhttps://players.brightcove.net/z$/default_default/index.html?videoId=referrerformats	subtitles)_search_regex_BRIGHTCOVE_ACCOUNT_ID_downloaderget_info_extractorextractr   )r.   bc_idr<   m3u8_url
account_idinfos         r2   )_extract_brightcove_formats_and_subtitlesz8RoosterTeethIE._extract_brightcove_formats_and_subtitles   s    ''&,Hc ( e e
22?CCKKKejee^ceeM M     I[ 111r@   c                    |                      |          }| j         d| }	 |                     |dz   |dddi          d         d         }n# t          $ r}t	          |j        t                    r|j        j        d	k    rq|                     |j        j	        
                                                                |                              d
          du r|                     | d            d }~ww xY w|d         d         }t          |d          dk    }t          |ddt          hf          }	 |                     ||ddd          \  }	}
nv# t          $ ri}|r\|rZt	          |j        t                    r@|j        j        d	k    r0|                     d           |                     |||          \  }	}
n Y d }~nd }~ww xY w|                     ||d          d         d         }||	|
d|                     |          S )Nz/watch/z/videoszDownloading video JSON metadatazClient-Typeweb)headersr       i  accessFz$ is only available for FIRST membersrA   r<   )rA   encoding_pipeline
brightcoveuidrs   m3u8_nativehls)m3u8_idzLDirect m3u8 URL returned HTTP Error 403; retrying with Brightcove extractionz!Downloading episode JSON metadata)rG   r   r   )	_match_idr#   r%   r   r&   r'   r   r(   r)   r*   r+   r,   r$   raise_login_requiredr   str#_extract_m3u8_formats_and_subtitlesr-   r   rh   )r.   r<   rG   api_episode_url
video_datar/   r   is_brightcover   r   r   rP   s               r2   _real_extractzRoosterTeethIE._real_extract   s   ^^C((
!/DD
DD		,,)+Z9Z&. - 0 006889;JJ  	 	 	!'9-- M!'.C2G2G##AG$4$9$9$;$;$B$B$D$DjQQUUV^__chhh--%KKKM M M	 l+E2$Z1TUUYeeZ,u)EFF		!%!I!I*e]E "J "K "KGYY 	 	 	  :agy+I+I agn`cNcNc##bd d d%)%S%STY[^`h%i%i" #		 %%Z/1 11799:<
 %"
 
 &&w//	
 	
s1   *A 
C9BC44C98E 
G	 AGG	N)ri   rj   rk   
_VALID_URL_TESTSr   r   r   rn   r@   r2   rp   rp   Z   s?       iJw
&
b
 5
 D	

 A
 1
 /
 F
 [(+
 Q
 H
 b
 @
 j
 ?
  @!
" #
$ ",&'
 
 
* #D)/ 2 >
'
/
 W
 A	

 w
 @
 9
 5
 H
 @
 a
 [M
 ?
 j
 .
  Q!
" #
$ ",&'
 
 
* #D)/ 4 >)4A6@9$@ !+&
 
" #D)) . t
'
5
 u
 A	

 H
 9
 w
 b
 @
 m
 XJ
 *
 @
 ?
 T
  @!
" #
$ ",&'
 
 
* #D)1 6 C
'
5
 Z
 H	

 m
 b
 ?
 @
 z
 @
 9
 X/
 A
 .
 Q
  j!
"  #
$ J%
 
( HH"D)1 4 Q  i  d  s 
 V 
 w  @ UMF^ -2 2 2(
 (
 (
 (
 (
r@   rp   c                   b    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gZd Zd ZdS )RoosterTeethSeriesIEz<https?://(?:.+?\.)?roosterteeth\.com/series/(?P<id>[^/?#&]+)z-https://roosterteeth.com/series/rwby?season=7   zrwby-7zRWBY - Season 7)r;   rB   )r<   playlist_countr}   z/https://roosterteeth.com/series/the-weird-place   zthe-weird-placezThe Weird Placez/https://roosterteeth.com/series/role-initiative   zrole-initiativezRole Initiative)r<   playlist_mincountr}   z=https://roosterteeth.com/series/let-s-play-minecraft?season=92   zlet-s-play-minecraft-9zLet's Play Minecraft - Season 9c           
   #      K   t          ||          } fd}                      j         d| d|          }t          |dd f          D ]h}t          |d          }|||k    r |                     t	           j        |d         d                   |d	| d
ddi                    E d {V  i|5 |                      j         d| d|dd                    E d {V  d S d S )Nc              3      K   t          | dd f          D ]E} j        t          d|d         d                   t          fi                     |          V  Fd S )Nr   c                     |d         d         S )Ncanonical_linksr.   rn   _vs     r2   <lambda>zGRoosterTeethSeriesIE._entries.<locals>.yield_episodes.<locals>.<lambda>D  s    AFWDXY_D` r@   zhttps://www.roosterteeth.comr   r.   )r   
url_resultr   rp   rh   )r   rP   r.   s     r2   yield_episodesz5RoosterTeethSeriesIE._entries.<locals>.yield_episodesC  s      'v7`7`.abb I I%do:GDU<VW]<^__"I I&*&>&>w&G&GI I I I I II Ir@   z/shows/z/seasons?order=asc&order_byr   c                     |d         d         S )Nlinksepisodesrn   r   s     r2   r   z/RoosterTeethSeriesIE._entries.<locals>.<lambda>K  s    1W:V`Ka r@   )rA   rR   r   r   zDownloading season z JSON metadataper_pagei  )queryz0/bonus_features?order=asc&order_by&per_page=1000z(Downloading bonus features JSON metadataFr   )r	   r%   r#   r   r   rm   )r.   	series_idrN   rG   r   series_dataseason_dataidxs   `       r2   _entrieszRoosterTeethSeriesIE._entries@  s     "9m<<
	I 	I 	I 	I 	I ))!PP)PPPR\^ ^'f>a>a5bcc 	V 	VK{,DEEC(SM-A-A%~d&9&9G(<Z(HII:9c999*dAS ': 'U 'U V V V V V V V V V V  %~d&9&9%iiiiiiFe ': 'U 'U V V V V V V V V V V V ! r@   c           	      V   |                      |          }t          t          |          dt                    }t	          |                     ||                    }|                     |t          ||          t          |d                             d          |d                    S )N)rx   r   )expected_typer   rK   z
 - Season )delim)	r   r   r   r   r   r   playlist_resultr	   r$   )r.   r<   r   rN   entriess        r2   r   z"RoosterTeethSeriesIE._real_extractX  s    NN3''	$Xc]]MQ\]]]4==MBBCC##)]33'!*..22MVVVX X 	Xr@   N)ri   rj   rk   r   r   r   r   rn   r@   r2   r   r      s        PJ>&
 
  A#&
 
  A#&
 
  O*7
 
 +F<V V V0X X X X Xr@   r   N)commonr   networking.exceptionsr   utilsr   r   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   rp   r   rn   r@   r2   <module>r      so   ! ! ! ! ! ! - - - - - -                          + * * * * *D
 D
 D
 D
 D
 D
 D
 D
NC
 C
 C
 C
 C
' C
 C
 C
L@X @X @X @X @X- @X @X @X @X @Xr@   