Ë
    š„j,!  ã                   ó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Ú iYøìdzOre:^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-4cf0235ccd75iX›Õez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.jpgi‡bAe)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       €úP/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/bunnycdn.pyr+   zBunnyCdnIE._extract_embed_urlsm   s4   øè ø€ ä™Ñ4°S¸'Ó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Ñ4°SÓ9×?Ñ?ÀÀlÓSÑˆ�*Ø×(Ñ(Ø5°j°\ÀÀ8À*ÐMÈxØ × 1Ñ 1°)Ó <Ò cÐ@cÐdÜœx¨›}¸ÈIÑ.VÓWð )ó Yˆð
 ×1Ñ1°'À4Ð1ÓHÈEÑQÐQˆ:ÐQÜ ð8ØBFôHð Hð ˜5Ò Ü Ð!<ÀtÔLÐLà˜cÐ"ˆä˜D×;Ñ;¸CÀÈ(Ð]dÐ;ÓeÐghÓiÒoÐmoˆØ—(‘(˜9Ó%Ò+¨ˆØ—H‘H˜[Ó)Ò/¨Rˆ	à×)Ñ)ØHÈ'ÐSaÐkoð *ó qˆä�|Ô$Ø×(Ñ(Ü˜LÓ)°HÐCVØ u¸jð )ó JˆDñ ˜Ÿ™ sÒ*Ø—‘Ø'Ø!)Ø Ø$+Ü/°¸eÔDÜ +¨D¯O©OÐ<LÓ,MÓ Nñ ô ð ×$Ñ$ØEÀwÐPYÐcgð %ó iˆà×+Ñ+Ø4°gÐ?OÐY]ð ,ó _ˆà×%Ñ%Ø0°'¸:Ètð &ó Uˆäœh wÓ/°Ó?ˆÜ!¤(¨7Ó"3Ð5EÓFˆ
Øˆ	Ù‘~©(±vÁ*Ø×"Ñ"Ø °'Ð@]ð #ô _ð ×AÑAØ˜ 5°'À5ÐPUð Bó W‰JˆD�$àò �Ø—
‘
Ø *Ø$+ñõ ðð
 �N‰N˜4Ô Ø×!Ñ! $¨yÐ!Ô9ð &Ø#Ø&Ø$Ø",ñ	(ðˆIð ØØ"ñ

ô ˜7¤l°lÈÔ&NÐ%OÔRdÐQeØ,¬t¯z©z¨l¸GÄcÀUÐKØ+¬k¨]Ð;ñhð %ó ð	

ð ð

ð ×"Ñ" 7¨H¸EÐ"ÓBð

ð 
	
ó    )Ú__name__Ú
__module__Ú__qualname__Ú
_VALID_URLÚ_EMBED_REGEXÚ_TESTSÚ_WEBPAGE_TESTSÚclassmethodr+   rs   Ú__classcell__)r/   s   @r0   r   r      s|  ø„ ð Q€JØ4°Z°LÀÐNÐO€Làcà8ØØ/ØØ#ØkØØ%ñ	
ð # DÐ)ñð cà8ØØ#ØtØØAØ%Ø=ñ	
ð # DÐ)ñð dà8ØØ#Ø%ØØØ%Økñ	
ð # DÐ)ñð  dà8ØØGØØØ#Ø%Økñ	
ð # DÐ)ñð dØñðm9€Fðx %à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   