
    Ği(                         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  G d de          Z G d d	e          ZdS )
    N   )InfoExtractor   )ExtractorErrorencode_data_urifloat_or_noneint_or_nonejoin_nonemptymimetype2extstr_or_nonec                       e Zd ZdZdZdg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iddddddd dd!d"d#d$d%d&id'd(d&d)gZd/d+Zd, Zd- Z	d. Z
d*S )0	UstreamIEzfhttps?://(?:www\.)?(?:ustream\.tv|video\.ibm\.com)/(?P<type>recorded|embed|embed/recorded)/(?P<id>\d+)ustreamz_<iframe[^>]+?src=(["\'])(?P<url>https?://(?:www\.)?(?:ustream\.tv|video\.ibm\.com)/embed/.+?)\1z'http://www.ustream.tv/recorded/20274954 088f151799e8f572f84eb62f17d73e5c20274954flvz4Young Americans for Liberty February 7, 2012 2:28 AMiz0O20120207	yaliberty6780869)idexttitledescription	timestampupload_dateuploaderuploader_id)urlmd5	info_dictzfhttp://www.ustream.tv/embed/recorded/59307601?ub=ff0000&lc=ff0000&oc=ffffff&uc=ffffff&v=3&wmode=direct 5a2abf40babeac9812ed20ae12d34e1059307601z"-CG11- Canada Games Figure Skatingsportscanadatv)r   r   r   r   zNThis Pro Broadcaster has chosen to remove this video from the ustream.tv site.)r   r   r    skipz$http://www.ustream.tv/embed/10299409r   10299409   )r   r    playlist_countz'http://www.ustream.tv/recorded/9134326391343263mp4z)GitHub Universe - General Session - Day 120160914iZWwa0dnskeqkr38977840)r   r   r   r   r   r   r   r   skip_downloadT)r   r    paramszVhttps://video.ibm.com/embed/recorded/128240221?&autoplay=true&controls=true&volume=100)r   only_matchingNc                    d }d }|sd}|                      d |d           d| d|d|z   d	|d
         |d          | |d                     d | |d                     d |d           ||dd          }|d
         d         d
         d         }|d
         d         d
         d         }	|                      d| d|	 |d|z             S )Nc                 0    t          |           dd          S )Nr   )hex)ns    ]C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/ustream.py
num_to_hexz.UstreamIE._get_stream_info.<locals>.num_to_hexI   s    q66!"":    c                 D    t          j        t          |                     S N)random	randrangeint)xs    r4   <lambda>z,UstreamIE._get_stream_info.<locals>.<lambda>L   s    (Q00 r6    zhttp://rg    חAz-1-z*-recorded-lp-live.ums.ustream.tv/1/ustreamzDownloading connection infoviewerr   r   :z_rpin.g  4&kCrecorded)typeappId
appVersionrsidrpinreferrermediaapplication)notequeryargshostconnectionIdzhttp://z/1/ustream?connectionId=zDownloading stream inforJ   )_download_json)
selfr   video_id
app_id_ver
extra_noter5   rnd	conn_inforM   connection_ids
             r4   _get_stream_infozUstreamIE._get_stream_infoH   sG   	 	 	 10 	J''Xss3xxXXHXXX8:E #A(m%:cc#hh//HH**SSXX2F2FHH,T,,!)	 	 (  	 |F#A&v.!!V,Q/?""CdCCMCC4zA # C C 	Cr6   c           	          t          d          D ]\}|                     ||||dk    r	d|dz    dnd          }d|d         d	         d         v r|d         d	         d         d         c S ]g S )
Nr&   r   z (try r   )r>   )rT   streamrL   )rangerX   )rQ   r   rR   rS   trial_countstream_infos         r4   _get_streamszUstreamIE._get_streamse   s     88 	; 	;K//Xz:E//6K!O6666r 0 S SK ;q>&1!444"1~f-a0:::: 5	r6   c                    d }g }|d         D ]}|d         d         }d ||d         |d         z   d|d         d                   ig}t          |d	         |d
         z            D ]R}|                    d ||d         |d         z   ||d         t          |dz  dz                               i           S|d         }|                    d          d         }	t	          d|	t          |                    d                              dt          dd          t          |          |                    d          |                    d          |d}
|	dk    r@|
	                    |                    d          d|                    d          d           n?|
	                    d|                    d          |                    d          d           |                    |
           |S )Nc                 r    |                      dt          |          d                               d|          S )N%r   )replacestr)templateidx
chunk_hashs      r4   resolve_dash_templatez=UstreamIE._parse_segmented_mp4.<locals>.resolve_dash_templatep   s0    ##CS155==c:NNNr6   streams	providersr   r   initUrlhashes0videoLength	chunkTime
segmentUrl
   contentType/dashbitratehttp_dash_segmentss   <MPD/>ztext/xmlheightwidth)	format_idprotocolr   r   rw   rx   	fragmentsvideocodecnone)vcodecacodecvbr)r   r   abr)
r\   appendrd   splitr
   r   getr   r   update)rQ   dash_stream_inforh   formatsr[   providerr{   rf   content_typekindfs              r4   _parse_segmented_mp4zUstreamIE._parse_segmented_mp4o   sX   	O 	O 	O &y1 &	 &	F'4Q7H,,UOfY&77<LX<VWZ<[] ] I -m<@PQ\@]]^^    00 &*>>(23sby2~3F3FGI I"    
 "-0L%%c**1-D*D+fjj.C.C"D"DF F0&y*==#L11 **X..G,,&
 
A w$jj11$!::i00      $$jj11!::i00    
 NN1r6   c                                           |          }|                    d          |                    d          dk    r0|                    d          dz   }                     |d          S |                    d          dk    rx|                    d                               |          }                                          d|d                    }                      fd	|D                       S                      d
 d          }|                    d          }|rt           j
         d| d          |d         }|d         }	t          |                    d                    fd|d                                         D             }
|
sS                     |d          }|r8|
                                         |d         d         dd                     	 |                    d          }t!          |                    d                    }t          |                    d                    }t!          |                    d                    }|                    d i                               d!          }|                    d i                               d          }d" |                    d#i                                           D             }|	||||||||
d$
S )%Nr   rB   zembed/recordedhttp://www.ustream.tv/recorded/Ustreamembedz-ustream\.vars\.offAirContentVideoIds=([^;]+);zcontent video IDsc              3   J   K   | ]}                     d |z   d          V  dS )r   r   N
url_result).0urQ   s     r4   	<genexpr>z*UstreamIE._real_extract.<locals>.<genexpr>   s8      nnWX!BQ!F	RRnnnnnnr6   zhttps://api.ustream.tv/videos/z.jsonerrorz returned error: T)expectedr|   r   	file_sizec                 (    g | ]\  }}|||d S ))r   r   r   filesize )r   ry   	video_urlr   rR   s      r4   
<listcomp>z+UstreamIE._real_extract.<locals>.<listcomp>   sN     P P P
 #iYP 	
 
 P P Pr6   
media_urls)   r   )rS   r   r   r)   hls)r   m3u8_idr   
created_atlengthviewsownerusernamec                     g | ]
\  }}||d S ))r   r   r   )r   thumbnail_idthumbnail_urls      r4   r   z+UstreamIE._real_extract.<locals>.<listcomp>   sA     Q Q Q *lM  
 
 Q Q Qr6   	thumbnail)
r   r   r   
thumbnailsr   duration
view_countr   r   r   )_match_valid_urlgroupr   _download_webpage_parse_json_search_regexplaylist_resultrP   r   r   IE_NAMEr   itemsr_   extend_extract_m3u8_formatsr	   )rQ   r   mdesktop_urlwebpagecontent_video_idsr.   r   r|   r   r   hls_streamsr   r   r   r   r   r   r   r   rR   s   `                  @@r4   _real_extractzUstreamIE._real_extract   s{   !!#&&774== 776??...wwt}}H;hFK??;	:::776??g%%wwt}}H,,S(;;G $ 0 01C1C@'#2% 2%&.!0 !0 ''nnnn\mnnn   $$<X<<<hH H 

7## 	J <99%99DJ J J J wg ;!7!788P P P P P
 ',L&9&?&?&A&AP P P  	++Cg+NNK Pt99N5)8  :  O  O P P P ii..		, 7 788	 8!4!455 7!3!344
99Wb))--j99ii,,0066Q Q .3YY{B-G-G-M-M-O-OQ Q Q
 &$" $ &
 
 	
r6   r8   )__name__
__module____qualname__
_VALID_URLr   _EMBED_REGEX_TESTSrX   r_   r   r   r   r6   r4   r   r      sI       zJGvwL81KQ#%#$	
 	
   x19(	
 
 a  6*
   9@%F#%%	
 	
 T
   h ]1FfC C C C:  , , ,\M
 M
 M
 M
 M
r6   r   c                   ,    e Zd ZdZdZdddiddZd Zd	S )
UstreamChannelIEz3https?://(?:www\.)?ustream\.tv/channel/(?P<slug>.+)zustream:channelz*http://www.ustream.tv/channel/channeljapanr   10874166   )r   r    playlist_mincountc                                           |          }|                    d          }                     ||          }                     d|          }d}d| d}g }|r                     t
          j                            ||          |dt          |          dz    d	          }	|	                    t          j        d
|	d                              |	d         }| fd|D             }
d|||
dS )Nslugzustream:channel_idzhttp://www.ustream.tvz/ajax/socialstream/videos/z/1.jsonz%Downloading video information (next: r   rZ   rO   zdata-content-id="(\d.*)"datanextUrlc                 B    g | ]}                     d |z   d          S )r   r   r   )r   vidrQ   s     r4   r   z2UstreamChannelIE._real_extract.<locals>.<listcomp>  s=     " " " OO=CYOO" " "r6   playlist)_typer   
display_identries)r   r   r   _html_search_metarP   urllibparseurljoinlenr   refindall)rQ   r   r   r   r   
channel_idBASEnext_url	video_idsreplyr   s   `          r4   r   zUstreamChannelIE._real_extract   s>   !!#&&WWV__
((j99++,@'JJ
&C
CCC	 	(''$$T844jRS^^a=ORRR ( T TE RZ(CU6]SSTTTY'H  	(" " " " " " "  $	
 
 	
r6   N)r   r   r   r   r   _TESTr   r   r6   r4   r   r      sK        GJG;*
   E
 
 
 
 
r6   r   )r9   r   urllib.parser   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r6   r4   <module>r      s     				     ! ! ! ! ! !                 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
x#
 #
 #
 #
 #
} #
 #
 #
 #
 #
r6   