U
    g"J                     @   sx   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 ddlmZ G dd deZG d	d
 d
eZdS )    N   )InfoExtractor   )	extract_attributesfloat_or_noneint_or_nonejoin_nonemptymimetype2extparse_resolutionstr_or_noneunescapeHTMLurl_or_none)traverse_objc                   @   s4   e Zd ZddiZdd Zdd Zdd Zd	d
 ZdS )VidyardBaseIEZRefererhttps://play.vidyard.com/c              
      s   g i    fdd}t |to0|dd }t|dd dthtf }rV||  szt|ddthfD ]}|| qlt|tjhdfD ]Z\}}t|dd D ]B}	|	d	}
 |	d t	|	d
d dt
d||
dt|
 qq   fS )Nc                    s8   j | ddjdd\}} | j|d d S )Nmp4hlsF)Zm3u8_idheadersfataltarget)Z#_extract_m3u8_formats_and_subtitles_HEADERSextend_merge_subtitles)Zm3u8_urlZfmtssubsformatsself	subtitlesvideo_id </tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/vidyard.pyadd_hls_fmts_and_subs   s         

zGVidyardBaseIE._get_formats_and_subtitles.<locals>.add_hls_fmts_and_subsr   c                 S   s   |d dkS )Nprofileautor    _vr    r    r!   <lambda>!       z:VidyardBaseIE._get_formats_and_subtitles.<locals>.<lambda>url.c                 S   s   t |d S )Nr*   r   r%   r    r    r!   r(   (   r)   r#   ZmimeType)defaulthttp)r*   extZ	format_id)
isinstancedictpopr   r   anyitemsgetappendr	   r   r
   Z_remove_duplicate_formats)r   sourcesr   r"   Zhls_listZmaster_m3u8_urlZvariant_m3u8_urlZsource_typeZsource_listsourcer#   r    r   r!   _get_formats_and_subtitles   s.    
 




z(VidyardBaseIE._get_formats_and_subtitlesc                 C   sH   i }t |dd D ]0}||dp&dg |d |dd q|S )Nc                 S   s   t |d S )NvttUrlr+   r%   r    r    r!   r(   6   r)   z5VidyardBaseIE._get_direct_subtitles.<locals>.<lambda>languageZundr9   name)r*   r;   )r   
setdefaultr4   r5   )r   Zcaption_jsonr   captionr    r    r!   _get_direct_subtitles4   s    
z#VidyardBaseIE._get_direct_subtitlesc                 C   s   |  d| d|d S )Nz https://play.vidyard.com/player/z.jsonpayload)Z_download_jsonr   r   r    r    r!   _fetch_video_json>   s    
 zVidyardBaseIE._fetch_video_jsonc                 C   s   |  |d |\}}| j| |d|d t|dthfdththfdthfdththdd	 hfd
t	j
tddhfdthfftfdddthifdddthfd||| jdS )Nr6   Zcaptionsr   Z
facadeUuidZvideoIdr;   descriptionc                 S   s   | pd S )Nr    )xr    r    r!   r(   K   r)   z3VidyardBaseIE._process_video_json.<locals>.<lambda>Zmillisecondsi  )ZscalesecondsZthumbnailUrls)smallnormalr*   tags.)id
display_idtitlerB   durationZ
thumbnailsrG   )r   r   Zhttp_headers)r8   r   r>   r4   r   strintr   r   	functoolspartialr   r   r2   r   r   )r   Z	json_datar   r   r   r    r    r!   _process_video_jsonB   s&    z!VidyardBaseIE._process_video_jsonN)__name__
__module____qualname__r   r8   r>   rA   rP   r    r    r    r!   r      s
   
r   c                       s  e Zd ZdddgZdgZ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ddg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d0d1dd2d3d4dd5d6dd7d8d9dd:d;dd<d=d>dgd?d@dAdBdCdDdEdFddGdHdIddJdKddLdMdNddOdPddQdRdSddTdUddVdWdXddYdZdd[d\d]dd^d_dd`dadbddcddddedfdgddhdiddjdkdldgd?dmdAdndodpddqddrdddsdtduddvdwdxdygdzdd{d|d}d~d|d}dd|d}gZdddddddddddddddddddddddddddddeedeeeedddddddddiddddddddigdddeeedddddddddddiddddddddidddddddddigddgZe	 fddZ
dd Z  ZS )	VidyardIEz=https?://[\w-]+(?:\.hubs)?\.vidyard\.com/watch/(?P<id>[\w-]+)z;https?://(?:embed|share)\.vidyard\.com/share/(?P<id>[\w-]+)z6https?://play\.vidyard\.com/(?:player/)?(?P<id>[\w-]+)zF<iframe[^>]* src=["\'](?P<url>(?:https?:)?//play\.vidyard\.com/[\w-]+)zAhttps://vyexample03.hubs.vidyard.com/watch/oTDMPlUv--51Th455G5u7QzoTDMPlUv--51Th455G5u7QZ50347r   zHomepage VideozLook I changed the description.zIhttps://cdn.vidyard.com/thumbnails/50347/OUPa5LTKV46849sLYngMqQ_small.jpgc   ZtheseZareallrG   )rH   rI   r.   rJ   rB   	thumbnailrK   rG   )r*   	info_dictz7https://share.vidyard.com/watch/PaQzDAT1h8JqB8ivEu2j6Y?ZPaQzDAT1h8JqB8ivEu2j6YZ9281024zInline Embedz-https://cdn.vidyard.com/thumbnails/spacer.gifg+ΗD@)rH   rI   r.   rJ   rW   rK   z6https://embed.vidyard.com/share/oTDMPlUv--51Th455G5u7Qz6https://embed.vidyard.com/share/SyStyHtYujcBHe5PkZc5DLZSyStyHtYujcBHe5PkZc5DLZ41974005zOPrepare the Frame and Track for Palm Beach Polysatin Shutters With BiFold Trackz;re:In this video, you will learn how to prepare the frame.+zLhttps://cdn.vidyard.com/thumbnails/41974005/IJw7oCaJcF1h7WWu3OVZ8A_small.pngg-*p@)rH   rI   r.   rJ   rB   rW   rK   z=https://thelink.hubs.vidyard.com/watch/pwu7pCYWSwAnPxs8nDoFrEZpwu7pCYWSwAnPxs8nDoFrEzAPLAYLIST - Palm Beach Shutters- Bi-Fold Track System InstallationZ1Fw4B84jZTXLXWqkE71RiMZ5861113z6Palm Beach - Bi-Fold Track System "Frame Installation"zKhttps://cdn.vidyard.com/thumbnails/5861113/29CJ54s5g1_aP38zkKLHew_small.jpgg~jtd@ZDqP3wBvLXSpxrcqpT5kEeoZ41976334zEInstall the Track for Palm Beach Polysatin Shutters With BiFold TrackzKhttps://cdn.vidyard.com/thumbnails/5861090/RwG2VaTylUa6KhSTED1r1Q_small.pngg-硫W@ZopfybfxpzQArxqtQYB6oBUZ41976364zEInstall the Panel for Palm Beach Polysatin Shutters With BiFold TrackzKhttps://cdn.vidyard.com/thumbnails/5860926/JIOaJR08dM4QgXi_iQ2zGA_small.pnggmg@ZrWrXvkbTNNaNqD6189HJyaZ41976382zEAdjust the Panels for Palm Beach Polysatin Shutters With BiFold TrackzKhttps://cdn.vidyard.com/thumbnails/5860687/CwHxBv4UudAhOh43FVB4tw_small.pngg)\Da@ZeYPTB521MZ9TPEArSethQ5Z41976409zTAssemble and Install the Valance for Palm Beach Polysatin Shutters With BiFold TrackzKhttps://cdn.vidyard.com/thumbnails/5861425/0y68qlMU4O5VKU7bJ8i_AA_small.pnggI+b@)rH   rJ   entries   )r*   rX   playlist_countz;https://salesforce.vidyard.com/watch/d4vqPjs7Q5EzVEis5QT3jdZd4vqPjs7Q5EzVEis5QT3jdzEHow To: Service Cloud: Import External Content in Lightning KnowledgeZmcjDpSZir2iSttbvFkx6RvZ29479036z&Welcome to this Expert Coaching SerieszZhttps://cdn.vidyard.com/thumbnails/ouyQi9WuwyiOupChUWNmjQ/7170d3485ba602e012df05_small.jpgg
ףp=C@Z84bPYwpg243G6xYEfJdYw9Z21820704zChapter 1 - Title + AgendazZhttps://cdn.vidyard.com/thumbnails/HFPN0ZgQq4Ow8BghGcQSow/bfaa30123c8f6601e7d7f2_small.jpgg/$X@ZnP17fMuvA66buVHUrzqjTiZ21820707zChapter 2 - Import OptionszZhttps://cdn.vidyard.com/thumbnails/rGRIF5nFjPI9OOA2qJ_Dbg/86a8d02bfec9a566845dd4_small.jpgg1Zh@Zm54EcwXdpA5gDBH5rgCYoVZ21820710z*Chapter 3 - Importing Article TranslationszZhttps://cdn.vidyard.com/thumbnails/IVX4XR8zpSsiNIHx45kz-A/1ccbf8a29a33856d06b3ed_small.jpgg%Cg@Zj4nzS42oq4hE9oRV73w3eQZ21820716zChapter 4 - Best PracticeszZhttps://cdn.vidyard.com/thumbnails/BtrRrQpRDLbA4AT95YQyog/1f1e6b8e7fdc3fa95ec8d3_small.jpgg(\r@Zy28PYfW5pftvers9PXzisCZ21820727zChapter 5 - Migration StepszZhttps://cdn.vidyard.com/thumbnails/K2CdQOXDfLcrVTF60r0bdw/a09239ada28b6ffce12b1f_small.jpggQe@ZYWU1eQxYvhj29SjYoPw5jHZ21820733zChapter 6 - DemozZhttps://cdn.vidyard.com/thumbnails/rsmhP-cO8dAa8ilvFGCX0g/7911ef415167cd14032068_small.jpggS㥻@ZnmEvVqpwdJUgb74zKsLGxnZ29479037zSchedule Your Follow-UpzZhttps://cdn.vidyard.com/thumbnails/Rtwc7X4PEkF4Ae5kHi-Jvw/174ebed3f34227b1ffa1d0_small.jpgg@@   z4https://play.vidyard.com/iDqTwWGrd36vaLuaCY3nTs.htmlZiDqTwWGrd36vaLuaCY3nTsZ9281009zLightbox EmbedgGzC@zOhttps://play.vidyard.com/player/7GAApnNNbcZZ46k6JqJQSh.json?disable_analytics=0Z7GAApnNNbcZZ46k6JqJQShZ820026zNThe Art of Storytelling: How to Deliver Your Brand Story with Content & SocialzZhttps://cdn.vidyard.com/thumbnails/MhbE-5sEFQu4x3fI6FkNlA/41eb5717c557cd19456910_small.jpggҠ@Z
Summit2017)rH   rI   r.   rJ   rW   rK   rG   z5http://share.vidyard.com/share/diYeo6YR2yiGgL8odvS8RiT)r*   Zonly_matchingz/https://play.vidyard.com/FFlz3ZpxhIfKQ1fd9DAryAz?https://play.vidyard.com/qhMAu5A76GZVrFzOPgSf9A/type/standalonezLhttps://resources.altium.com/p/2-the-extreme-importance-of-pc-board-stack-upZGDx1oXrFWj4XHbipfoXaMnZ3225198z+The Extreme Importance of PC Board Stack UpzZhttps://cdn.vidyard.com/thumbnails/73_Q3_hBexWX7Og1sae6cg/9998fa4faec921439e2c04_small.jpggDl{@z5http://videos.vivint.com/watch/DXx2sW4WaLA6hTdGFz7ja8ZDXx2sW4WaLA6hTdGFz7ja8Z2746529z%How To Powercycle the Smart Hub Panelgrh>@zZhttps://cdn.vidyard.com/thumbnails/_-6cw8xQUJ3qiCs_JENc_A/b21d7a5e47967f49399d30_small.jpg)rH   rI   r.   rJ   rK   rW   z@https://www.babypips.com/learn/forex/introduction-to-metatrader4ZMIBHhiLVTxga7wqLsuoDjQZ20291z!Lesson 1 - Opening an MT4 AccountzKNever heard of MetaTrader4? Here's the 411 on the popular trading platform!   zIhttps://cdn.vidyard.com/thumbnails/20291/IM-G2WXQR9VBLl2Cmzvftg_small.jpg)rH   rI   r.   rJ   rB   rK   rW   zhttps://www.avaya.com/en/r   )rH   rJ   	age_limitZupload_daterB   rW   	timestamprX   Zd61w8EQoZv1LDuPxDkQP2QZ42456529zGettyImages-1027g      @zVhttps://cdn.vidyard.com/thumbnails/42061563/p6bY08d2N4e4IDz-7J4_wkgsPq3-qgcx_small.jpgZVAsYDi7eiqZRbHodUA2meCZ42456569zGettyImages-1325598833gET@zVhttps://cdn.vidyard.com/thumbnails/42052358/y3qrbDpn_2quWr_5XBi7yzS3UvEI__ZM_small.jpgr   )r*   rX   Zplaylistr[   zhttps://www.gogoair.com/)rH   rJ   rB   r^   ZvpCWTVHw3qrciLtVY94YkSZ40780699zLUpgrade to AVANCE 100% worth it - Jason Talley, Owner and Pilot, Testimonialz$md5:f609824839439a51990cef55ffc472aagI+Q@zVhttps://cdn.vidyard.com/thumbnails/40780699/KzjfYZz5MZl2gHF_e-4i2c6ib1cLDweQ_small.jpgZxAmV9AsLbnitCw35paLBD8Z31130867z;Brad Keselowski goes faster with Gogo AVANCE inflight Wi-FigGz`@zVhttps://cdn.vidyard.com/thumbnails/31130867/HknyDtLdm2Eih9JZ4A5XLjhfBX_6HRw5_small.jpgZRkkrFRNxfP79nwCQavecpFZ39009815zLive Demo of Gogo Galileoz$md5:e2df497236f4e12c3fef8b392b5f23e0gx&1\@zVhttps://cdn.vidyard.com/thumbnails/38144873/CWLlxfUbJ4Gh0ThbUum89IsEM4yupzMb_small.jpg   c                 #   s   t  ||D ]}|dr&d| }|V  qtd|D ]&}t|d d }r:d| V  q:td|D ]}d| V  qnd S )Nz//zhttps:zY(<(?:img|div)[^>]* class=(["\'])(?:[^>"\']* )?vidyard-player-embed(?: [^>"\']*)?\2[^>]+>)r   z	data-uuidr   z5<script[^>]* id=["\']vidyard_embed_code_([\w-]+)["\'])super_extract_embed_urls
startswithrefindallr   r4   )clsr*   ZwebpageZ	embed_urlZembed_elementr   Zembed_id	__class__r    r!   rb     s    

 zVidyardIE._extract_embed_urlsc                    sh     | }t|d dkr8 |d d S   fdd|d D t|d |dS )NZchaptersr   r   c                    s   g | ]}  |qS r    )rP   ).0Zchapterr@   r    r!   
<listcomp>  s     z+VidyardIE._real_extract.<locals>.<listcomp>Z
playerUuidr;   )Z	_match_idrA   lenrP   Zplaylist_resultrL   r4   )r   r*   Z
video_jsonr    r@   r!   _real_extract  s    


 zVidyardIE._real_extract)rQ   rR   rS   Z
_VALID_URLZ_EMBED_REGEXZ_TESTSrL   floatZ_WEBPAGE_TESTSclassmethodrb   rl   __classcell__r    r    rg   r!   rT   X   sB  

/5=C  F
#
nrT   )rN   rd   commonr   utilsr   r   r   r   r	   r
   r   r   r   Zutils.traversalr   r   rT   r    r    r    r!   <module>   s   ,E