o
    iIM                     @   sp   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                   @   s<   e Zd ZddiZdd Zdd Zdd Zd	d
 Zdd ZdS )VidyardBaseIERefererhttps://play.vidyard.com/c              
      s   g i   fdd}t |to|dd }t|dd dthtf }r+||  s=t|ddthfD ]}|| q6t|tjhdfD ]-\}}t|dd D ]!}	|	d	}
 |	d t	|	d
d dt
d||
dt|
 qQqF   fS )Nc                    s8   j | ddjdd\}} | j|d d S )Nmp4hlsF)m3u8_idheadersfataltarget)#_extract_m3u8_formats_and_subtitles_HEADERSextend_merge_subtitles)m3u8_urlfmtssubsformatsself	subtitlesvideo_id L/home/ubuntu/.local/lib/python3.10/site-packages/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      t |d S )Nr/   r   r*   r%   r%   r&   r-   '   r.   r(   mimeType)defaulthttp)r/   ext	format_id)
isinstancedictpopr   r   anyitemsgetappendr	   r   r
   _remove_duplicate_formats)r"   sourcesr$   r'   hls_listmaster_m3u8_urlvariant_m3u8_urlsource_typesource_listsourcer(   r%   r    r&   _get_formats_and_subtitles   s.   




	z(VidyardBaseIE._get_formats_and_subtitlesc                 C   sH   i }t |dd D ]}||dpdg |d |dd q	|S )Nc                 S   r0   )NvttUrlr1   r*   r%   r%   r&   r-   5   r.   z5VidyardBaseIE._get_direct_subtitles.<locals>.<lambda>languageundrG   name)r/   rJ   )r   
setdefaultr<   r=   )r"   caption_jsonr   captionr%   r%   r&   _get_direct_subtitles3   s   
z#VidyardBaseIE._get_direct_subtitlesc                 C   sf   | j d| |ddd}t|dthfdthfddthitfd	d
d dthfdtddhfdfdS )Nzhttps://play.vidyard.com/video/zDownloading additional metadataF)noter   rJ   secondsthumbnailUrlr/   videoSectionsc                 S   s   t |d d uS )Nmilliseconds)r   r*   r%   r%   r&   r-   E   s    z8VidyardBaseIE._get_additional_metadata.<locals>.<lambda>titlerS     scalerT   
start_time)rT   duration
thumbnailschapters)_download_jsonr   strr   r   allr   )r"   r$   additional_metadatar%   r%   r&   _get_additional_metadata=   s   
z&VidyardBaseIE._get_additional_metadatac                 C   s   |  d| d|d S )Nz https://play.vidyard.com/player/z.jsonpayload)r]   r"   r$   r%   r%   r&   _fetch_video_jsonK   s
   zVidyardBaseIE._fetch_video_jsonc                 C   s   |  |d |\}}| j| |d|d i | |d t|dthfdththfdthfdtht	ht
fd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 )Nr?   captionsr   
facadeUuidvideoIdrJ   descriptionrS   rU   rV   rP   thumbnailUrls)smallnormalr/   tags.)id
display_idrT   rh   rZ   r[   rl   )r!   r#   http_headers)rF   r   rN   r<   ra   r   r^   intr   r   filterr   r   r:   r   r   )r"   	json_datar$   r!   r#   r%   r%   r&   _process_video_jsonO   s.   z!VidyardBaseIE._process_video_jsonN)	__name__
__module____qualname__r   rF   rN   ra   rd   rs   r%   r%   r%   r&   r      s    
r   c                       s  e Zd Zg dZdgZ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g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/d0d'd(dd)d+d,dd1d2dd3d4d5dd6d7dd8d9d:dd;d<dd=d>d?dd@dAddBdCdDddEdFddGdHdIdgdJdKdLdMdNdOdPdQdRddSdTdUddVdWddXdYdZdd[d\dd]d^d_dd`daddbdcddddedfddgdhdiddjdkddldmdnddodpddqdrdsddtduddvdwdxdgdJdydzd{d|d}dd~ddddddddddddgdddddddddddgZdddddddddddddddddddddddddddddddeedeeeedddddddddiddddddddigddddddddddddgZe	 fddZ
dd Z  ZS )	VidyardIE)z=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--51Th455G5u7Q50347r   zHomepage VideozLook I changed the description.zIhttps://cdn.vidyard.com/thumbnails/50347/OUPa5LTKV46849sLYngMqQ_small.jpgc   )thesearer_   rl   )rm   rn   r5   rT   rh   	thumbnailrZ   rl   )r/   	info_dictz7https://share.vidyard.com/watch/PaQzDAT1h8JqB8ivEu2j6Y?PaQzDAT1h8JqB8ivEu2j6Y9281024zInline Embedz-https://cdn.vidyard.com/thumbnails/spacer.gifg+ΗD@)rm   rn   r5   rT   r|   rZ   z6https://share.vidyard.com/watch/wL237MtNgZUHo6e8WPiJbFwL237MtNgZUHo6e8WPiJbF25926870zAdding & Editing Video ChapterszVhttps://cdn.vidyard.com/thumbnails/25926870/bvSEZS3dGY7DByQ_bzB57avIZ_hsvhr4_small.jpggQ`@zAdding new chaptersr   rX   zPreviewing your videoJ   zEditing your chapters[   z"Share a link to a specific chapteri   )rm   rn   r5   rT   r|   rZ   r\   z6https://embed.vidyard.com/share/oTDMPlUv--51Th455G5u7Qz6https://embed.vidyard.com/share/SyStyHtYujcBHe5PkZc5DLSyStyHtYujcBHe5PkZc5DL41974005zFInstall Palm Beach Shutters with a Bi-Fold Track System (Video 1 of 6)z1re:In this video, you will learn the first step.+zLhttps://cdn.vidyard.com/thumbnails/41974005/IJw7oCaJcF1h7WWu3OVZ8A_small.pngg-*p@)rm   rn   r5   rT   rh   r|   rZ   z=https://thelink.hubs.vidyard.com/watch/pwu7pCYWSwAnPxs8nDoFrEpwu7pCYWSwAnPxs8nDoFrEzAPLAYLIST - Palm Beach Shutters- Bi-Fold Track System Installation1Fw4B84jZTXLXWqkE71RiM5861113zFInstall Palm Beach Shutters with a Bi-Fold Track System (Video 2 of 6)zKhttps://cdn.vidyard.com/thumbnails/5861113/29CJ54s5g1_aP38zkKLHew_small.jpgg~jtd@DqP3wBvLXSpxrcqpT5kEeo41976334zFInstall Palm Beach Shutters with a Bi-Fold Track System (Video 3 of 6)zKhttps://cdn.vidyard.com/thumbnails/5861090/RwG2VaTylUa6KhSTED1r1Q_small.pngg-硫W@opfybfxpzQArxqtQYB6oBU41976364zFInstall Palm Beach Shutters with a Bi-Fold Track System (Video 4 of 6)zKhttps://cdn.vidyard.com/thumbnails/5860926/JIOaJR08dM4QgXi_iQ2zGA_small.pnggmg@rWrXvkbTNNaNqD6189HJya41976382zFInstall Palm Beach Shutters with a Bi-Fold Track System (Video 5 of 6)zKhttps://cdn.vidyard.com/thumbnails/5860687/CwHxBv4UudAhOh43FVB4tw_small.pngg)\Da@eYPTB521MZ9TPEArSethQ541976409zFInstall Palm Beach Shutters with a Bi-Fold Track System (Video 6 of 6)zKhttps://cdn.vidyard.com/thumbnails/5861425/0y68qlMU4O5VKU7bJ8i_AA_small.pnggI+b@)rm   rT   entries   )r/   r}   playlist_countz;https://salesforce.vidyard.com/watch/d4vqPjs7Q5EzVEis5QT3jdzIURL now 404s. Alternative non hubs.vidyard.com playlist not yet availabled4vqPjs7Q5EzVEis5QT3jdzEHow To: Service Cloud: Import External Content in Lightning KnowledgemcjDpSZir2iSttbvFkx6Rv29479036z&Welcome to this Expert Coaching SerieszZhttps://cdn.vidyard.com/thumbnails/ouyQi9WuwyiOupChUWNmjQ/7170d3485ba602e012df05_small.jpgg
ףp=C@84bPYwpg243G6xYEfJdYw921820704zChapter 1 - Title + AgendazZhttps://cdn.vidyard.com/thumbnails/HFPN0ZgQq4Ow8BghGcQSow/bfaa30123c8f6601e7d7f2_small.jpgg/$X@nP17fMuvA66buVHUrzqjTi21820707zChapter 2 - Import OptionszZhttps://cdn.vidyard.com/thumbnails/rGRIF5nFjPI9OOA2qJ_Dbg/86a8d02bfec9a566845dd4_small.jpgg1Zh@m54EcwXdpA5gDBH5rgCYoV21820710z*Chapter 3 - Importing Article TranslationszZhttps://cdn.vidyard.com/thumbnails/IVX4XR8zpSsiNIHx45kz-A/1ccbf8a29a33856d06b3ed_small.jpgg%Cg@j4nzS42oq4hE9oRV73w3eQ21820716zChapter 4 - Best PracticeszZhttps://cdn.vidyard.com/thumbnails/BtrRrQpRDLbA4AT95YQyog/1f1e6b8e7fdc3fa95ec8d3_small.jpgg(\r@y28PYfW5pftvers9PXzisC21820727zChapter 5 - Migration StepszZhttps://cdn.vidyard.com/thumbnails/K2CdQOXDfLcrVTF60r0bdw/a09239ada28b6ffce12b1f_small.jpggQe@YWU1eQxYvhj29SjYoPw5jH21820733zChapter 6 - DemozZhttps://cdn.vidyard.com/thumbnails/rsmhP-cO8dAa8ilvFGCX0g/7911ef415167cd14032068_small.jpggS㥻@nmEvVqpwdJUgb74zKsLGxn29479037zSchedule Your Follow-UpzZhttps://cdn.vidyard.com/thumbnails/Rtwc7X4PEkF4Ae5kHi-Jvw/174ebed3f34227b1ffa1d0_small.jpgg@@   )r/   skipr}   r   z4https://play.vidyard.com/iDqTwWGrd36vaLuaCY3nTs.htmliDqTwWGrd36vaLuaCY3nTs9281009zLightbox EmbedgGzC@zOhttps://play.vidyard.com/player/7GAApnNNbcZZ46k6JqJQSh.json?disable_analytics=07GAApnNNbcZZ46k6JqJQSh820026zNThe Art of Storytelling: How to Deliver Your Brand Story with Content & SocialzZhttps://cdn.vidyard.com/thumbnails/MhbE-5sEFQu4x3fI6FkNlA/41eb5717c557cd19456910_small.jpggҠ@
Summit2017)rm   rn   r5   rT   r|   rZ   rl   z5http://share.vidyard.com/share/diYeo6YR2yiGgL8odvS8RiT)r/   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-upGDx1oXrFWj4XHbipfoXaMn3225198z+The Extreme Importance of PC Board Stack UpzZhttps://cdn.vidyard.com/thumbnails/73_Q3_hBexWX7Og1sae6cg/9998fa4faec921439e2c04_small.jpggDl{@z5http://videos.vivint.com/watch/DXx2sW4WaLA6hTdGFz7ja8zXURL certificate expired 2025-09-10. Alternative script embed test case not yet availableDXx2sW4WaLA6hTdGFz7ja82746529z%How To Powercycle the Smart Hub Panelgrh>@zZhttps://cdn.vidyard.com/thumbnails/_-6cw8xQUJ3qiCs_JENc_A/b21d7a5e47967f49399d30_small.jpg)rm   rn   r5   rT   rZ   r|   )r/   r   r}   z@https://www.babypips.com/learn/forex/introduction-to-metatrader4MIBHhiLVTxga7wqLsuoDjQ20291z!Lesson 1 - Opening an MT4 AccountzKNever heard of MetaTrader4? Here's the 411 on the popular trading platform!gQe@zIhttps://cdn.vidyard.com/thumbnails/20291/IM-G2WXQR9VBLl2Cmzvftg_small.jpg)rm   rn   r5   rT   rh   rZ   r|   zvURL changed embed method to 'class="vidyard-player-embed"'. An alternative iframe embed test case is not yet availablezhttps://www.avaya.com/en/)rm   rT   	age_limitupload_daterh   r|   	timestampr}   d61w8EQoZv1LDuPxDkQP2Q42456529zGettyImages-1027g      @zVhttps://cdn.vidyard.com/thumbnails/42061563/p6bY08d2N4e4IDz-7J4_wkgsPq3-qgcx_small.jpgVAsYDi7eiqZRbHodUA2meC42456569zGettyImages-1325598833gET@zVhttps://cdn.vidyard.com/thumbnails/42052358/y3qrbDpn_2quWr_5XBi7yzS3UvEI__ZM_small.jpgr   )r   r/   r}   playlistr   pMk8eNCYzukzJaEPoo1Hgn47074153zJAvaya Infinity Helps Redefine the Contact Center as Your Connection Centerz7re:Our mission is to help you turn single engagements.+g33333cT@zVhttps://cdn.vidyard.com/thumbnails/47074153/MZOLKhXdbiUWwp2ROnT5HaXL0oau6JtR_small.jpgc                 #   s    t  ||D ]}|drd| }|V  qtd|D ]}t|d d }r1d| V  qtd|D ]}d| V  q8d 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   r<   )clsr/   webpage	embed_urlembed_elementr$   embed_id	__class__r%   r&   r     s   

zVidyardIE._extract_embed_urlsc                    sh     | }t|d dkr |d d S   fdd|d D t|d |dS )Nr\   r   r   c                 3   s    | ]	}  |V  qd S )N)rs   ).0chapterrc   r%   r&   	<genexpr>  s    z*VidyardIE._real_extract.<locals>.<genexpr>
playerUuidrJ   )	_match_idrd   lenrs   playlist_resultr^   r<   )r"   r/   
video_jsonr%   rc   r&   _real_extract  s   

zVidyardIE._real_extract)rt   ru   rv   
_VALID_URL_EMBED_REGEX_TESTSr^   float_WEBPAGE_TESTSclassmethodr   r   __classcell__r%   r%   r   r&   rw   f   s8   /5=D  ^
%Trw   )r   commonr   utilsr   r   r   r   r	   r
   r   r   r   utils.traversalr   r   rw   r%   r%   r%   r&   <module>   s    ,T