
    VGh	                     r    d dl Z 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 ddlmZmZ  G d d	e      Zy)
    N   )InfoExtractor   )HEADRequest)ExtractorErrorextract_attributesint_or_noneparse_qssmuggle_urlunsmuggle_urlurl_or_noneurlhandle_detect_ext)find_elementtraverse_objc                        e Zd ZdZde dgZ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idddddddddd d!ddidgZd"d#dd$dd%d&d'd(d)ddidd*d+dd,d-d.d/d0dd1ddidgZe fd2       Zd3 Z	 xZ
S )4
BunnyCdnIEzqhttps?://(?:iframe\.mediadelivery\.net|video\.bunnycdn\.com)/(?:embed|play)/(?P<library_id>\d+)/(?P<id>[\da-f-]+)z<iframe[^>]+src=[\'"](?P<url>z[^\'"]*)[\'"]zRhttps://iframe.mediadelivery.net/embed/113933/e73edec1-e381-4c8b-ae73-717a140e0924z$e73edec1-e381-4c8b-ae73-717a140e0924mp4zmistress morgana (3).mp4 iYdzOre:^https?://.*\.b-cdn\.net/e73edec1-e381-4c8b-ae73-717a140e0924/thumbnail\.jpgg      @20230828)idexttitledescription	timestamp	thumbnaildurationupload_dateskip_downloadT)url	info_dictparamszQhttps://iframe.mediadelivery.net/play/136145/32e34c4b-0d72-437c-9abb-05e67657da34z$32e34c4b-0d72-437c-9abb-05e67657da34idzXre:^https?://.*\.b-cdn\.net/32e34c4b-0d72-437c-9abb-05e67657da34/thumbnail_9172dc16\.jpgg     Z@z$md5:981a3e899a5c78352b21ed8b2f1efd8120230804z&Sanela ist Teil der #arbeitsmarktkraft)r   r   r   r   r   r   r   r   zRhttps://iframe.mediadelivery.net/embed/200867/2e8545ec-509d-4571-b855-4cf0235ccd75z$2e8545ec-509d-4571-b855-4cf0235ccd75iXeznetflix part 1g     @20240221zOre:^https?://.*\.b-cdn\.net/2e8545ec-509d-4571-b855-4cf0235ccd75/thumbnail\.jpg)r   r   r   r   r   r   r   r   zhttps://conword.io/z$3a5d863e-9cd6-447e-b6ef-e289af50b349u.   Conword bei der Stadt Köln und Stadt Dortmund20231031g      ?@zLhttps://video.watchuh.com/3a5d863e-9cd6-447e-b6ef-e289af50b349/thumbnail.jpgibAe)r   r   r   r   r   r   r   r   zjhttps://www.stockphotos.com/video/moscow-subway-the-train-is-arriving-at-the-park-kultury-station-10017830z$0b02fa20-4e8c-4140-8f87-f64d820a3386zOre:^https?://.*\.b-cdn\.net/0b02fa20-4e8c-4140-8f87-f64d820a3386/thumbnail\.jpgzAMoscow subway. The train is arriving at the Park Kultury station.20240531g      2@iYf)r   r   r   r   r   r   r   r   c              #   X   K   t         |   ||      D ]  }t        |d|i        y w)NReferer)super_extract_embed_urlsr   )clsr   webpage	embed_url	__class__s       b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/bunnycdn.pyr)   zBunnyCdnIE._extract_embed_urls\   s4     4S'B 	;Ii)S)9::	;s   '*c                    t        |i       \  }}| j                  |      j                  dd      \  }}| j                  d| d| |t	        |ddi      t	        t        |      ddd      	      }| j                  |d 
      dk(  x}rt        dd      |dk(  rt        dd      d|i}t	        | j                  ||||      d      xs i }|j                  d      xs g }	|j                  d      xs i }
| j                  d|dd 
      }t        |      rl| j                  t        |      |d|dd      }|rJ|j                  dk(  r;|	j                  |dd|t!        |d
      t#        |j%                  d            d        | j                  d!|d"d 
      }| j                  d#|d$d 
      }| j                  d%|d&d 
      }t	        t        |      d'      }t	        t        |      d(      }i }|r|r}|r{|ry|rw| j                  |||d)*       | j'                  ||d|d+d,      \  }}|D ]  }|j)                  d-|d.        |	j+                  |       | j-                  ||
/       d0||||d1i}||	|
d2t	        |t/        d3d4      ht0        hd5t2        j4                  hd6t6        hfd7t        hfd8f      || j9                  ||d9      S ):Nr   
library_idz'https://iframe.mediadelivery.net/embed//r'   tokenexpires)r2   r3   )headersquery)default403zZThis video is inaccessible. Setting a Referer header might be required to access the videoT)expected404zThis video does not exist)_headersr   formats	subtitlesz9(?:var|const|let)\s+originalUrl\s*=\s*["\']([^"\']+)["\']zoriginal urlzChecking originalF)i  i  )video_idnoter4   fatalexpected_status   sourcer   r   zContent-Length)r   	format_idqualityhttp_headersr   filesizez6\.setAttribute\([\'"]src[\'"],\s*[\'"]([^\'"]+)[\'"]\)zsrc urlz%loadUrl\([\'"]([^\'"]+/activate)[\'"]zactivation urlz!loadUrl\([\'"]([^\'"]+/ping)[\'"]zping url)secretr   )	contextIdr   zDownloading activation data)r4   r>   hls)r4   m3u8_idr?   bunnycdn)protocolrE   )target_bunnycdn_ping_data)r   r4   rG   
context_id)r   r;   r<   z
main-video)r   htmlzdata-plyr-configr   zdata-poster)r   r   )r?   )r   _match_valid_urlgroup_download_webpager   r
   _html_extract_titler   _parse_html5_media_entriesget_search_regexr   _request_webpager   statusappendr   r	   
get_header#_extract_m3u8_formats_and_subtitlesupdateextend_merge_subtitlesr   r   jsonloadsstr_search_json_ld)selfr   smuggled_datar=   r0   r+   
html_titler4   infor;   r<   original_urlurlhsrc_urlactivation_urlping_urlrG   rO   	ping_datafmtssubsfmts                         r.   _real_extractzBunnyCdnIE._real_extracta   s   *33]#44S9??lS*((5j\8*Mx I0FGx}I.VW ) Y
 11'41HEQQ:Q 8BFH H 5  !<tLLc"D;;C(]d;eghiomo((9%+HH[)/R	))H'Sako * q|$((L)HCVuj ) JD s*'!) $+/eD +DOO<L,M N   $$EwPYcg % i++4g?OY] , _%%0':t & Uhw/?!(7"35EF
	~(v*""'@] # _ AA5'5PU B WJD$ 

 *$+ 
 NN4 !!$y!9 &#&$",	(I "

 7ll&N%ORdQe,tzzlGcUK+k];h % 	

 

 ""7HE"B

 
	
    )__name__
__module____qualname__
_VALID_URL_EMBED_REGEX_TESTS_WEBPAGE_TESTSclassmethodr)   rq   __classcell__)r-   s   @r.   r   r      s;    FJ4ZLNOLc8/#k%	
 #D) c8#tA%=	
 #D) d8#%%k	
 #D)5(FV %8E%g#	
 #D)  |8kX%#	
 #D)N< ; ;Q
rr   r   )r`   commonr   
networkingr   utilsr   r   r	   r
   r   r   r   r   utils.traversalr   r   r    rr   r.   <module>r      s0     ! $	 	 	 9`
 `
rr   