
    i,!                     r    S SK r SSKJr  SSKJr  SSKJrJrJrJ	r	J
r
JrJrJr  SSKJrJr   " S S	\5      rg)
    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                     ^  \ rS rSrSrS\ S3/rSSSSS	S
SSSS.SS0S.SSSSSSSSSS.SS0S.SSSSSSS	S S!S".SS0S.S#S$SS%S	S&S'S(S)S*.SS0S.S+SS,./rS-S.SS/S	S0S1S2S3S4.SS0S.S5S6SS7S8S9S:S;S	S<.SS0S./r\U 4S= j5       r	S> r
S?rU =r$ )@
BunnyCdnIE   z|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              #   Z   >#    [         TU ]  X5       H  n[        USU05      v   M     g 7f)NReferer)super_extract_embed_urlsr   )clsr    webpage	embed_url	__class__s       F/app/mltbenv/lib/python3.13/site-packages/yt_dlp/extractor/bunnycdn.pyr,   BunnyCdnIE._extract_embed_urlsm   s-     4SBIi)S)9:: Cs   (+c                    [        U0 5      u  pU R                  U5      R                  SS5      u  p4U R                  SU SU 3USUR	                  S5      =(       d    S0[        [        U5      SSS	.5      S
9nU R                  US S9S:H  =n(       a
  [        SSS9eUS:X  a
  [        SSS9eSU0n[        U R                  XX7S9S5      =(       d    0 nUR	                  S5      =(       d    / n	UR	                  S5      =(       d    0 n
U R                  SUSS S9n[        U5      (       al  U R                  [        U5      USUSSS9nU(       aH  UR                  S:X  a8  U	R                  USSU[!        USS9[#        UR%                  S 5      5      S!.5        U R                  S"US#S S9nU R                  S$US%S S9nU R                  S&US'S S9n[        [        U5      S(5      n[        [        U5      S)5      n0 nU(       a  U(       a  U(       a|  U(       au  U(       an  U R                  XUS*S+9  U R'                  XSUS,SS-9u  nnU H  nUR)                  S.US/.5        M     U	R+                  U5        U R-                  UU
S09  S1UUUUS2.0nUU	U
S3.[        U[/        S4SS591[0        1S6[2        R4                  1S7[6        14S8[        14S9.45      EUEU R9                  XSSS:9E$ );Nr   
library_idz'https://iframe.mediadelivery.net/embed//r*   z!https://iframe.mediadelivery.net/tokenexpires)r6   r7   )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noter8   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)r8   rB   hls)r8   m3u8_idrC   bunnycdn)protocolrI   )target_bunnycdn_ping_data)r    r8   rK   
context_id)r   r?   r@   z
main-video)r   htmlzdata-plyr-configr   zdata-poster)r   r   )rC   )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_datarA   r4   r.   
html_titler8   infor?   r@   original_urlurlhsrc_urlactivation_urlping_urlrK   rS   	ping_datafmtssubsfmts                         r1   _real_extract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(;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 % 	

 

 ""7E"B

 
	
     )__name__
__module____qualname____firstlineno__
_VALID_URL_EMBED_REGEX_TESTS_WEBPAGE_TESTSclassmethodr,   ru   __static_attributes____classcell__)r0   s   @r1   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
 Q
rw   r   )rd   commonr   
networkingr   utilsr   r   r	   r
   r   r   r   r   utils.traversalr   r   r   rx   rw   r1   <module>r      s0     ! $	 	 	 9q
 q
rw   