
    uki,!                     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d"d#dd$dd%d&d'd(d)ddidd*dd+gZd,d-dd.dd/d0d1d2d3ddidd4d5dd6d7d8d9d:dd;ddidgZe fd<       Zd= Z	 xZ
S )>
BunnyCdnIEz|https?://(?:(?:iframe|player)\.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:11452bcb31f379ee3eaf1234d3264e44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   zRhttps://iframe.mediadelivery.net/embed/289162/6372f5a3-68df-4ef7-a115-e1110186c477z$6372f5a3-68df-4ef7-a115-e1110186c477z012-Creating Small Asset Blockouts -Timelapse.mp4g     pp@i@f20240824zOre:^https?://.*\.b-cdn\.net/6372f5a3-68df-4ef7-a115-e1110186c477/thumbnail\.jpg)r   r   r   r   r   r   r   r   zRhttps://player.mediadelivery.net/embed/519128/875880a9-bcc2-4038-9e05-e5024bba9b70)r   only_matchingz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       T/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/yt_dlp/extractor/bunnycdn.pyr+   zBunnyCdnIE._extract_embed_urlsm   s4     4S'B 	;Ii)S)9::	;s   '*c                    t        |i       \  }}| j                  |      j                  dd      \  }}| j                  d| d| |d|j	                  d      xs 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-                  ||
0       d1||||d2i}||	|
d3t        |t/        d4d5      ht0        hd6t2        j4                  hd7t6        hfd8t        hfd9f      || j9                  ||d:      S );Nr   
library_idz'https://iframe.mediadelivery.net/embed//r)   z!https://iframe.mediadelivery.net/tokenexpires)r4   r5   )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noter6   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)r6   r@   hls)r6   m3u8_idrA   bunnycdn)protocolrG   )target_bunnycdn_ping_data)r   r6   rI   
context_id)r   r=   r>   z
main-video)r   htmlzdata-plyr-configr   zdata-poster)r   r   )rA   )r   _match_valid_urlgroup_download_webpagegetr   r
   _html_extract_titler   _parse_html5_media_entries_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?   r2   r-   
html_titler6   infor=   r>   original_urlurlhsrc_urlactivation_urlping_urlrI   rQ   	ping_datafmtssubsfmts                         r0   _real_extractzBunnyCdnIE._real_extractr   s   *33]#44S9??lS*((5j\8*Mx 1 1) < c@cd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+   rs   __classcell__)r/   s   @r0   r   r      s|    QJ4ZLNOLc8/#k%	
 #D) c8#tA%=	
 #D) d8#%%k	
 #D)  d8G#%k	
 #D) dm9Fx %8E%g#	
 #D)  |8kX%#	
 #D)N< ; ;Q
rt   r   )rb   commonr   
networkingr   utilsr   r   r	   r
   r   r   r   r   utils.traversalr   r   r    rt   r0   <module>r      s0     ! $	 	 	 9q
 q
rt   