
    VGhI                     |    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e      Z G d	 d
e      Zy)    N   )InfoExtractor   )	extract_attributesfloat_or_noneint_or_nonejoin_nonemptymimetype2extparse_resolutionstr_or_noneunescapeHTMLurl_or_none)traverse_objc                   ,    e Zd ZddiZd Zd Zd Zd Zy)VidyardBaseIERefererhttps://play.vidyard.com/c                 D    g i c fd}t        |t              xr |j                  dd       }t        |d dt        ht
        f      x}r ||       s!t        |ddt        hf      D ]
  } ||        t        |t        j                  hdf      D ]p  \  }}t        |d       D ][  }	|	j                  d      }
j                  |	d   t        |	j                  d      d 	      t        d
||
      dt        |
             ] r  j                         fS )Nc                     j                  | ddj                  d      \  }}j                  |       j                  |       y )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_ids      a/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/vidyard.pyadd_hls_fmts_and_subszGVidyardBaseIE._get_formats_and_subtitles.<locals>.add_hls_fmts_and_subs   sO    AA(E5$--W\ B ^JD$NN4 !!$y!9    r   c                     |d   dk(  S )Nprofileauto _vs     r(   <lambda>z:VidyardBaseIE._get_formats_and_subtitles.<locals>.<lambda>    s    )(> r*   url.c                     t        |d         S )Nr3   r   r/   s     r(   r2   z:VidyardBaseIE._get_formats_and_subtitles.<locals>.<lambda>'   s    QuXAV r*   r,   mimeType)defaulthttp)r3   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&   s   ` `        @@r(   _get_formats_and_subtitlesz(VidyardBaseIE._get_formats_and_subtitles   s=   	: gt,IUD1I*>}VYZ\ \? \!/2$0C;V$W 8 %&678 )5W

|S>Q(R 	$K&{4VW  **Y/!%='

:(>M!.v{G!L  'w/	  	 	&&w/	!!r*   c                     i }t        |d       D ]K  }|j                  |j                  d      xs dg       j                  |d   |j                  d      d       M |S )Nc                     t        |d         S )NvttUrlr5   r/   s     r(   r2   z5VidyardBaseIE._get_direct_subtitles.<locals>.<lambda>5   s    {1X;?W r*   languageundrM   name)r3   rP   )r   
setdefaultr@   rA   )r%   caption_jsonr#   captions       r(   _get_direct_subtitlesz#VidyardBaseIE._get_direct_subtitles3   sf    #L2WX 	GOOGKK
3<ubAHHx(F+J 	 r*   c                 4    | j                  d| d|      d   S )Nz https://play.vidyard.com/player/z.jsonpayload)_download_json)r%   r'   s     r(   _fetch_video_jsonzVidyardBaseIE._fetch_video_json=   s.    "".xj>JJSU 	Ur*   c                    | j                  |d   |      \  }}| j                  | j                  |j                  d            |       i 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	
      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 )NrC   captionsr   
facadeUuidvideoIdrP   descriptionmillisecondsi  )scalesecondsthumbnailUrls)smallnormalr3   tags.)id
display_idtitler]   duration
thumbnailsrd   )r$   r&   http_headers)rJ   r    rT   r@   r   strintr   r   filterr   r   r>   r   r   )r%   	json_datar'   r$   r&   s        r(   _process_video_jsonz!VidyardBaseIE._process_video_jsonA   s    !<<Yy=QS[\d88z9RS\ef
9#cU+(3%+? 3% -u|nfM#m$&?%@A.0146  /0Cek]E[\fse4
' 

 " MM
 	
r*   N)__name__
__module____qualname__r   rJ   rT   rX   ro   r.   r*   r(   r   r      s"    67H"<U
r*   r   c                       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
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*dd+d,dd-d.d/dd0d1dd2d3d4dd5d6dd7d8d9dgd:d;d<d=d>d?d@dAddBdCdDddEdFddGdHdIddJdKddLdMdNddOdPddQdRdSddTdUddVdWdXddYdZdd[d\d]dd^d_dd`dadbddcddddedfdgdgd:dhd<didjdkddlddmdddndodpddqdrdsdtgduddvdwdxdydwdxdzdwdxgZd{d|d}dd~ddd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d       Z
d Z x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areallrd   )re   rf   r9   rg   r]   	thumbnailrh   rd   )r3   	info_dictz7https://share.vidyard.com/watch/PaQzDAT1h8JqB8ivEu2j6Y?PaQzDAT1h8JqB8ivEu2j6Y9281024zInline Embedz-https://cdn.vidyard.com/thumbnails/spacer.gifg+ΗD@)re   rf   r9   rg   rz   rh   z6https://embed.vidyard.com/share/oTDMPlUv--51Th455G5u7Qz6https://embed.vidyard.com/share/SyStyHtYujcBHe5PkZc5DLSyStyHtYujcBHe5PkZc5DL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@)re   rf   r9   rg   r]   rz   rh   z=https://thelink.hubs.vidyard.com/watch/pwu7pCYWSwAnPxs8nDoFrEpwu7pCYWSwAnPxs8nDoFrEzAPLAYLIST - Palm Beach Shutters- Bi-Fold Track System Installation1Fw4B84jZTXLXWqkE71RiM5861113z6Palm Beach - Bi-Fold Track System "Frame Installation"zKhttps://cdn.vidyard.com/thumbnails/5861113/29CJ54s5g1_aP38zkKLHew_small.jpgg~jtd@DqP3wBvLXSpxrcqpT5kEeo41976334zEInstall the Track for Palm Beach Polysatin Shutters With BiFold TrackzKhttps://cdn.vidyard.com/thumbnails/5861090/RwG2VaTylUa6KhSTED1r1Q_small.pngg-硫W@opfybfxpzQArxqtQYB6oBU41976364zEInstall the Panel for Palm Beach Polysatin Shutters With BiFold TrackzKhttps://cdn.vidyard.com/thumbnails/5860926/JIOaJR08dM4QgXi_iQ2zGA_small.pnggmg@rWrXvkbTNNaNqD6189HJya41976382zEAdjust the Panels for Palm Beach Polysatin Shutters With BiFold TrackzKhttps://cdn.vidyard.com/thumbnails/5860687/CwHxBv4UudAhOh43FVB4tw_small.pngg)\Da@eYPTB521MZ9TPEArSethQ541976409zTAssemble and Install the Valance for Palm Beach Polysatin Shutters With BiFold TrackzKhttps://cdn.vidyard.com/thumbnails/5861425/0y68qlMU4O5VKU7bJ8i_AA_small.pnggI+b@)re   rg   entries   )r3   r{   playlist_countz;https://salesforce.vidyard.com/watch/d4vqPjs7Q5EzVEis5QT3jd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@@   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)re   rf   r9   rg   rz   rh   rd   z5http://share.vidyard.com/share/diYeo6YR2yiGgL8odvS8RiT)r3   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/DXx2sW4WaLA6hTdGFz7ja8DXx2sW4WaLA6hTdGFz7ja82746529z%How To Powercycle the Smart Hub Panelgrh>@zZhttps://cdn.vidyard.com/thumbnails/_-6cw8xQUJ3qiCs_JENc_A/b21d7a5e47967f49399d30_small.jpg)re   rf   r9   rg   rh   rz   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!   zIhttps://cdn.vidyard.com/thumbnails/20291/IM-G2WXQR9VBLl2Cmzvftg_small.jpg)re   rf   r9   rg   r]   rh   rz   zhttps://www.avaya.com/en/r   )re   rg   	age_limitupload_dater]   rz   	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   )r3   r{   playlistr   zhttps://www.gogoair.com/)re   rg   r]   r   vpCWTVHw3qrciLtVY94YkS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.jpgxAmV9AsLbnitCw35paLBD831130867z;Brad Keselowski goes faster with Gogo AVANCE inflight Wi-FigGz`@zVhttps://cdn.vidyard.com/thumbnails/31130867/HknyDtLdm2Eih9JZ4A5XLjhfBX_6HRw5_small.jpgRkkrFRNxfP79nwCQavecpF39009815zLive Demo of Gogo Galileoz$md5:e2df497236f4e12c3fef8b392b5f23e0gx&1\@zVhttps://cdn.vidyard.com/thumbnails/38144873/CWLlxfUbJ4Gh0ThbUum89IsEM4yupzMb_small.jpg   c              #   4  K   t         |   ||      D ]  }|j                  d      rd| }|  t        j                  d|      D ])  }t        |d         j                  d      x}s#d|  + t        j                  d|      D ]	  }d|   y w)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@   )clsr3   webpage	embed_urlembed_elementr'   embed_id	__class__s          r(   r   zVidyardIE._extract_embed_urls  s      4S'B 	I##D)$YK0	O	  ZZlnuw 	=M-mA.>?CCKPPxP1(<<	=
 

#[]de 	9H-hZ88	9s   A(B,,Bc                      j                  |       j                        }t        |d         dk(  r j                  |d   d         S  j	                   fd|d   D        t        |d         |j                  d            S )Nchaptersr   r   c              3   B   K   | ]  }j                  |        y w)N)ro   ).0chapterr%   r'   s     r(   	<genexpr>z*VidyardIE._real_extract.<locals>.<genexpr>  s     _WT%%gx8_s   
playerUuidrP   )	_match_idrX   lenro   playlist_resultrk   r@   )r%   r3   
video_jsonr'   s   `  @r(   _real_extractzVidyardIE._real_extract  s    >>#&++H5
z*%&!+++Jz,B1,ExPP##_
S]H^_
<():>>&+AC 	Cr*   )rp   rq   rr   
_VALID_URL_EMBED_REGEX_TESTSrk   float_WEBPAGE_TESTSclassmethodr   r   __classcell__)r   s   @r(   rt   rt   W   s[   J
 ^^LR*!%<d3	
 I*##H

 H*!%<d3	
 H*$fYg
 O*X.(jk# /'Qj# /(`j" /(`j# /(`j# /(oj#G*.
^ e3j M*\.(Ay" /(5y" /(5y# /(Ey# /(5y# /(6y# /(+y# /(2y"c8<
z AAF F*#%H
 a*"eu !N
 G A QBFJ ^*#Bu 
 G*#<u
 R*!8id
 + 	
 .(+u	
 .(1!u	
& A!F * 
 .(gE"u

 .(V#u	
 .(4E#u

'< Q)GlN\ 9 9 	Cr*   rt   )r   commonr   utilsr   r   r   r	   r
   r   r   r   r   utils.traversalr   r   rt   r.   r*   r(   <module>r      s>    	 !
 
 
 +B
M B
JRC RCr*   