a
    h                     @   s,  d dl Z d dlZd dlZd dlZd dlZddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlm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mZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 G dd deZ:dS )    N   )InfoExtractor)RtmpIE)	YoutubeIE   )compat_etree_fromstring)LenientSimpleCookie)	HTTPError)ImpersonateTarget)"KNOWN_EXTENSIONSMEDIA_EXTENSIONSExtractorErrorUnsupportedErrordetermine_extdetermine_protocoldict_getextract_basic_authfilter_dictformat_fieldint_or_noneis_html
js_to_jsonmerge_dictsmimetype2ext
orderedSetparse_durationparse_resolutionsmuggle_urlstr_or_nonetraverse_objtry_callunescapeHTMLunified_timestampunsmuggle_url
update_urlupdate_url_queryurl_or_noneurlhandle_detect_exturljoinvariadic
xpath_attr
xpath_textxpath_with_ns)_UnsafeExtensionErrorc                @   @   s  e Zd ZdZdZdZdZ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eddddid d!d"d#d"dddd$d%d&dd'd(d	d)d*d+d,d-	d.dd/d0giiid1d2d3dd3d4d5d6d7ddid d8d9dd9dddid d:d3dd3d;d6d<dd	id d=d>dedddd?id d@dAddBdddCid dDdEdFidGdd	idHdIdJdKdLdMdNdOdPdPdQdRdMdSdd	idHdTdTdUdVdMdWdOdXdXdYdZdMd[dOd\d]d^dd_d`dadbddcdddedfdgdhdidjdkdldmdndodjdpdqddqdrdsdtd7ddid dudvddwdxdydzgd{ed|d}d~ddeddd	ddddd{ddeddgddddddddgddddddddddddddid dddddddddddddddddddddddddddddddddddddgdddddddddddddddddddeedeedgdǜdddddddddgdddid1ddddddddddd.dd/d0giiid dddddd	ddddߜd.dd/d0giiid ddddddddddd	dddddddddid dddddxddzgdeddedddeddd	dddddddeddgddddd dxddgdedd	deddeddd	dddd	dd
deddgdg%Z	dd Z
d!ddZdd Zdd Zedd Zedd Zdd Zdd Zdi ddd ZdS ("  	GenericIEz+Generic downloader that works on some sitesz.*ZgenericFz/https://media.w3.org/2010/05/sintel/trailer.mp4Z 67d406c2bcb6af27fa886f31aa934bbetrailermp4Ti;KZ20100513)idexttitledirect	timestampupload_date)urlmd5	info_dictz#http://ai-radio.org:8000/radio.opusZradioZopus)r1   r2   r3   zInvalid URL)r7   r9   skipz[https://ftp.nluug.nl/video/nluug/2014-11-20_nj14/zaal-2/5_Lennart_Poettering_-_Systemd.webmZ 4ccbebe5f36706d85221f204d7eb5913z5_Lennart_Poettering_-_SystemdZwebminTZ20141120znhttps://stream-akamai.castr.com/5b9352dbda7b8c769937e459/live_2361c920455111ea85db6911fe397b9e/index.fmp4.m3u8z
index.fmp4is_live)r1   r2   r3   live_statusZskip_downloadm3u8)r7   r9   paramsz=http://calimero.tk/muzik/FictionJunction-Parallel_Hearts.flaczFictionJunction-Parallel_HeartsZflaczihttps://www.extra.cz/cauky-lidi-70-dil-babis-predstavil-pohadky-prymulanek-nebo-andrejovy-nove-saty-ac867Z a9a2cad3e54f78e4680c6deef82417e9zTcauky-lidi-70-dil-babis-predstavil-pohadky-prymulanek-nebo-andrejovy-nove-saty-ac867u   čauky lidi 70 finallz$md5:47b2673a5b76780d9d329783e1fbf5aag     s@z/re:https?://media\.extra\.cz/static/img/.+\.jpgibZ20220606)	r1   r2   r3   descriptionr4   duration	thumbnailr5   r6   Zextractor_argsimpersonateZchrome)r7   r8   r9   r>   zzhttps://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8z$f08e80da-bf1d-4e3d-8899-f0f6155f6efa   igZ20250120)r1   r2   r3   r@   r5   r6   z\https://raw.githubusercontent.com/grafov/m3u8/refs/heads/master/sample-playlists/master.m3u8Zmasterzxhttps://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpdig)r1   r2   r3   r5   r6   zChttps://livesim2.dashif.org/livesim2/ato_10/testpic_2s/Manifest.mpdZManifestZ
livestreamzVhttps://api.new.livestream.com/accounts/21/events/7954027/videos/166558123.secure.smilz166558123.securez$73fb2379-a624-4b6c-bce4-e46086007f2csmilz:https://shellac-archive.ch/repository/xspf/22-AL0019Z.xspfr1   z
22-AL0019Z   )r7   r9   playlist_countr>   z)http://phihag.de/2014/youtube-dl/rss2.xmlz*https://phihag.de/2014/youtube-dl/rss2.xmlzZero Punctuationz$md5:512ae5f840e52eb3c0d08d4bed08eb3e)r1   r3   r?      )r7   r9   Zplaylist_mincountz'https://anchor.fm/s/dd00e14/podcast/rssz100% Hydrogen z$md5:7ec96327f8b91a2549a2e74f064022a1r   zhttps://www.omnycontent.com/d/playlist/a7b4f8fe-59d9-4afc-a79a-a90101378abf/bf2c1d80-3656-4449-9d00-a903004e8f84/efbff746-e7c1-463a-9d80-a903004e8f8f/podcast.rsszThe Little Red Podcastz$md5:be809a44b63b0c56fb485caf68685520L   zhttps://www.interfax.ru/rss.aspu   Интерфаксz$md5:49b6b8905772efba21923942bbc0444c   z/https://www.filmarkivet.se/movies/paris-d-moll/Z df02cadc719dcc63d43288366f037754zparis-d-mollzParis d-mollz$md5:319e37ea5542293db37e1e13072fe330z;re:https?://www\.filmarkivet\.se/wp-content/uploads/.+\.jpg)r1   r2   r3   r?   rA   zthttps://www.dagbladet.no/nyheter/etter-ett-ars-planlegging-klaffet-endelig-alt---jeg-matte-ta-en-liten-dans/60413035Z60413035uN   Etter ett års planlegging, klaffet endelig alt: - Jeg måtte ta en liten dansz$md5:bbb4e12e42e78609a74fd421b93b1239z(re:https?://www\.dagbladet\.no/images/.+)r1   r3   r?   rA   r   )r7   r9   rF   zGhttps://www.abc.net.au/res/libraries/cinerama2/examples/single_clip.htmZsingle_clipzSingle Clip player examples)r1   r3      z5https://flowplayer.com/resources/demos/standard-setupplaylist   i[Z20181009zkhttps://media.nationalarchives.gov.uk/index.php/webinar-using-discovery-national-archives-online-catalogue/ZMrj4DVp2zeAu:   Using Discovery, The National Archives’ online cataloguer   ZunlistedZ	EducationzThe National Archives UKZUCUuzebc1yADDJEnOLA5P9xwz8https://www.youtube.com/channel/UCUuzebc1yADDJEnOLA5P9xwzcount:13z$md5:a236581cd2449dd2df4f93412f3f01c6i  not_livevideozcount:5zre:https?://i\.ytimg\.com/vi/.+i=TZ20150212z@TheNationalArchivesUKz.https://www.youtube.com/@TheNationalArchivesUK)r1   r2   r3   	age_limitavailability
categorieschannelchannel_follower_count
channel_idchannel_urlZchaptersr?   r@   
like_countr<   
media_typeplayable_in_embedtagsrA   r5   r6   uploaderuploader_iduploader_url
view_countYoutube)r7   r9   Zadd_iez1https://www.indiedb.com/games/king-machine/videoszvideos-1z!Videos & Audio - King Machine (1)zMBrowse King Machine videos & audio for sweet media. Your eyes will thank you.z4re:https?://media\.indiedb\.com/cache/images/.+\.jpgzgeneric videos)r1   r2   r3   r?   rA   _old_archive_ids)r7   r9   zhttps://foodschmooze.org/Zz00FrhnwzGrilling Beef Tenderloin g     x@z*re:https?://cdn\.jwplayer\.com/v2/media/.+iVWZ20160607)r1   r2   r3   r?   r@   rA   r5   r6   z#http://www.suffolk.edu/sjc/live.phpZliveZflvz3Massachusetts Supreme Judicial Court Oral Argumentsz1https://bogmedia.org/videos/21217/40-nochey-2016/Z 94166bdb26b4cb1fb9214319a629fc51Z21217u#   40 ночей (2016) - BogMedia.orgz$md5:4e6d7d622636eb7948275432eb256dc3z40-nochey-2016z=re:https?://bogmedia\.org/contents/videos_screenshots/.+\.jpg)r1   r2   r3   r?   
display_idrA   z&https://youix.com/video/leningrad-zoj/Z 94f96ba95706dc3880812b27b7d8a2b8Z18485u_   Клип: Ленинград - ЗОЖ скачать, смотреть онлайн | Youix.comzleningrad-zojz:re:https?://youix\.com/contents/videos_screenshots/.+\.jpg)r1   r2   r3   ra   rA   z=https://shooshtime.com/videos/346037/fresh-out-of-the-shower/Z c9a97ad528607a4516d4df83a3aeb12cZ346037z$Fresh out of the shower - Shooshtime   z$md5:efd70fd3973f8750d285c743b910580azfresh-out-of-the-showerz=re:https?://i\.shoosh\.co/contents/videos_screenshots/.+\.jpg)r1   r2   r3   rO   r?   ra   rA   zUntested major version)r7   r8   r9   Zexpected_warningsz5https://www.kvs-demo.com/video/105/kelis-4th-of-july/Z105zKelis - 4th Of Julyz#https://www.kvs-demo.com/embed/105/Z 1ff84c70acaddbb03288c6cc5ee1879fz"Kelis - 4th Of July / Embed Playerzkelis-4th-of-julyzBre:https?://www\.kvs-demo\.com/contents/videos_screenshots/.+\.jpgzhttps://beltzlaw.com/z
beltzlaw-1z4re:https?://beltzlaw\.com/wp-content/uploads/.+\.jpgzgeneric beltzlaw)r1   r2   r3   r?   rA   r5   r6   r_   zhttps://cine.ar/Z d3e33335e339f04008690118698dfd08zcine-1zCINE.AR (1)z$md5:a4e58f9e2291c940e485f34251898c4az re:https?://cine\.ar/img/.+\.pngzgeneric cineformatzehttps://www.nu.nl/280161/video/hoe-een-bladvlo-dit-verwoestende-japanse-onkruid-moet-vernietigen.htmlZipy2AcGLzAHoe een bladvlo dit verwoestende Japanse onkruid moet vernietigenz$md5:6a9d644bab0dc2dc06849c2505d8383dg     [@z"re:https?://images\.nu\.nl/.+\.jpgib\^Z20200411zMhttps://www.autoweek.nl/autotests/artikel/porsche-911-gt3-rs-rij-impressie-2/z"porsche-911-gt3-rs-rij-impressie-2z#Test: Porsche 911 GT3 RS - AutoWeekz$md5:a17b5bd84288448d8f11b838505718fcz#re:https?://images\.autoweek\.nl/.+iF<cZ20221004)r1   r2   r3   r?   r4   rA   r5   r6   zhttps://breezy.hr/Z
k6gl2kt2eqz6Breezy HR's ATS helps you find & hire employees soonerg      @z$md5:eee75fdd3044c538003f3be327ba01e1gN@z2re:https?://cdn\.prod\.website-files\.com/.+\.webpi XZ20170130)	r1   r2   r3   Zaverage_ratingr?   r@   rA   r5   r6   zhttps://gist.githubusercontent.com/bashonly/2aae0862c50f4a4b84f220c315767208/raw/e3380d413749dabbe804c9c2d8fd9a45142475c7/videojs_hls_test.htmlZvideojs_hls_testi  )r1   r2   r3   r@   zhttps://ortcam.com/solidworks-%d1%83%d1%80%d0%be%d0%ba-6-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%87%d0%b5%d1%80%d1%82%d0%b5%d0%b6%d0%b0_33f9b7351.html?vid=33f9b7351ZyygqldloqIku8   SolidWorks. Урок 6 Настройка чертежаpublicu   PROстое3DZUCy91Bug3dERhbwGh2m2Ijngz8https://www.youtube.com/channel/UCy91Bug3dERhbwGh2m2Ijngz$md5:baf95267792646afdbf030e4d06b2ab3i  z	count:100zcount:17iAQZ20130314z
@PROstoe3Dz"https://www.youtube.com/@PROstoe3D)r1   r2   r3   rO   rP   rQ   rR   rS   rT   rU   comment_countr?   r@   ZheatmaprV   r<   rW   rX   rY   rA   r5   r6   rZ   r[   r\   r]   z\https://www.google.com/url?rct=j&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DcmQHVoWB5FYZcmQHVoWB5FYz$First Firefox OS phones side-by-sideZEntertainmentz	The VergeZUCddiUEpeqJcYeBxX1IVBKvQz8https://www.youtube.com/channel/UCddiUEpeqJcYeBxX1IVBKvQz$md5:7a676046ad24d9ea55cdde4a6657c5b3   zcount:15iz*QZ20130224z	@TheVergez!https://www.youtube.com/@TheVerge)r1   r2   r3   rO   rP   rQ   rR   rS   rT   Zchannel_is_verifiedrU   re   r?   r@   rV   r<   rW   rX   rY   rA   r5   r6   rZ   r[   r\   r]   c                 C   s   | j d|  dS )zReport information extraction.z![redirect] Following redirect to N)_downloaderZ	to_screen)selfnew_url rj   M/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/generic.pyreport_following_redirect:  s    z#GenericIE.report_following_redirectNc              
   C   sF   |dkr|d7 }n|sd S d}| j d| d| t|d d  d S )Nr   sazIdentified  z; %s)rg   write_debugr   )rh   namenumZnoterj   rj   rk   report_detected>  s    
zGenericIE.report_detectedc                 C   s\  | j dd gddd }|d urFtj|jp@|p@tj|jp@d |d< | j dd gddd }|d urtj|jp|ptj|jpd |d< dd	 }t| j d
dddthfd|hfd|hfdpd |d< | j dd gddd }|d ur<tjtj|jp|ptj|j}| j	|D ]}t
|d ||d< q"tdd | j	|D d }	|	rX|  dd gd }
|
d ur|
dkrdnd|d< d S |	dp|dpi }|d}| j|	d |ddi |ddidd}|du rd S |d}|dsd S | j||j||ddd}|s*d S | ||}|sDd|d< |d pR||d < d S )!Nfragment_queryT)Z	casesenser   Zextra_param_to_segment_url	key_queryZextra_param_to_key_urlc                 S   s   t d| t jr| S d S )Nz(0x)?[\da-f]+)re	fullmatch
IGNORECASE)valuerj   rj   rk   hex_or_noneU  s    z3GenericIE._extra_manifest_info.<locals>.hex_or_noneZhls_keyr   )urikeyZivZhls_aesvariant_queryr7   c                 s   s   | ]}t |d kr|V  qdS )m3u8_nativeN)r   ).0frj   rj   rk   	<genexpr>e  s   z1GenericIE._extra_manifest_info.<locals>.<genexpr>r;   falserM   r<   http_headersr1   zChecking m3u8 live statusFAccept-Encodingidentity)errnoteheadersfatal      #EXTM3U)prefixr   r   r@   )_configuration_argurllibparseurlparsequeryr   r&   parse_qsrg   Z_get_formatsr%   nextget_request_webpageread
startswith_webpage_read_contentr7   Z_parse_m3u8_vod_duration)rh   infoZmanifest_urlrt   ru   rz   r}   r   fmtZm3u8_formatr;   r   ra   urlhfirst_bytesZm3u8_docr@   rj   rj   rk   _extra_manifest_infoH  sp    




zGenericIE._extra_manifest_infoc                    s.  ddi g } dD ]tdd  dD tddd	}|sDqtfd
d}|rft|d|i} fdd}|d|tfddtdd dttdd dt|dtt	t
d d|dt|dt|dddddd|dpd d qd |tfd!dtfd"d|d#S )$Nitunesz*http://www.itunes.com/dtds/podcast-1.0.dtdz./channel/itemc                 s   s   | ]}|j d V  qdS )r7   N)attribr   )r   erj   rj   rk   r         z)GenericIE._extract_rss.<locals>.<genexpr>z./enclosurelinkFr   c                      s     djS )Nguidfindtextrj   itrj   rk   <lambda>  r   z(GenericIE._extract_rss.<locals>.<lambda>force_videoidc                    s   t td|   d dS )Nz	./itunes:default)r+   r,   )r|   )NS_MAPr   rj   rk   r     s    z&GenericIE._extract_rss.<locals>.itunesurl_transparentc                      s     djS )Nr3   r   rj   r   rj   rk   r     r   r?   r   ZpubDater@   z./itunes:imagehrefr3   episodeZseasonrb   r   )trueyesr   noexplicitr`   )_typer7   r3   r?   r5   r@   rA   r   Zepisode_numberZseason_numberrO   rK   c                      s     djS )Nz./channel/titler   rj   docrj   rk   r     r   c                      s     djS )Nz./channel/descriptionr   rj   r   rj   rk   r     r   )r   r1   r3   r?   entries)findallr   r+   r    r   appendr"   r   r&   r*   r,   r   r   lower)rh   r7   video_idr   r   Znext_urlr   r   rj   )r   r   r   rk   _extract_rss  sB    



zGenericIE._extract_rssc                    s   | ds|S tj|tdd  }| |}|jd}d}|d d |  tt	|}d}t
t	|D ]6}	|||	 7 }|	| | }
||
 ||	  ||	< ||
< qld fdd|D |d |d   |d< tj|jd|d	S )
Nzfunction/0//    rJ   r   r`   c                 3   s   | ]} | V  qd S Nrj   )r   indexhash_rj   rk   r     r   z.GenericIE._kvs_get_real_url.<locals>.<genexpr>)path)r   r   r   r   len_kvs_get_license_tokenr   splitlistrangereversedjoin
urlunparse_replace)cls	video_urllicense_codeparsedZlicense_tokenurlpartsZHASH_LENGTHindicesaccumsrcdestrj   r   rk   _kvs_get_real_url  s    

,zGenericIE._kvs_get_real_urlc                    s   |  dd} dd | D  |  dd}t|d }t|d |d  }t||d  }td	t||  d |d  } fd
dttt|D S )N$r`   c                 S   s   g | ]}t |qS rj   )int)r   charrj   rj   rk   
<listcomp>  r   z4GenericIE._kvs_get_license_token.<locals>.<listcomp>01r   r      c                    s2   g | ]*\}}t d D ]} ||  | d qqS )r   
   )r   )r   r   currentoffsetZlicense_valuesrj   rk   r     s   )replacer   r   strabs	enumeratemap)r   Z
modlicensecenterZ	fronthalfZbackhalfrj   r   rk   r     s     
z GenericIE._kvs_get_license_tokenc              
   C   s"  | j d|d|td}| jd|ddd}| d|d	}|d
 }|dr^|d\}}	}	|| }ttt	dj
| }
g }|
D ]}d|| vrq|| d|}|t|| || |d |ddt|pt|| dd|ii |d dsd|d d< q|d ||t|||dS )Nz*(?s:<script\b[^>]*>.*?var\s+flashvars\s*=)	flashvarstransform_sourcezw(?:<link href="https?://[^"]+/(.+?)/?" rel="canonical"\s*/?>|<link rel="canonical" href="https?://[^"]+/(.+?)/?"\s*/?>)ra   Fr   z.<(?:h1|title)>(?:Video: )?(.+?)</(?:h1|title)>r3   Zpreview_url//r   z^video_(?:url|alt_url\d*)$z
/get_file/Z_textr   r0   )r7   	format_idr2   r   Refererheightr   Zqualityr   )r1   ra   r3   rA   formats)Z_search_jsonr   _search_regexZ_html_search_regexr   	partitionr   filterrv   compilematchkeysr   r   r(   r   r   )rh   r7   webpager   r   ra   r3   rA   protocol_Zurl_keysr   r|   r   rj   rj   rk   _extract_kvs  sH    
zGenericIE._extract_kvsc              
   C   s  | dr| |  | S tj|}|js| d}|d u rDd}|dv rt	d|rp| 
d | d| S |dkr|dkrt	d	|rtd
|dddn| 
d| d | d| S |dv rt|dddnd|vr|d7 }| || S |}t|i \}}d }|d}d|v r4|d }|}n
| |}| ddg}	d|	v rZd }	z&| j||td|dd|	d}
W n ty\ } zt|jtr|jjdkr|jjddkr|jjjdd u sڂ tt|jjdd }|r| d!|  | jj|d"d#d$ d%}| jt  s6|d&7 }t| d'ddW Y d }~n
d }~0 0 |
j!}|t"|d( kr| #| |rt$|d|i}| |S || %|t&|
j'd)d*}|
j'd+d,( }t	d-|}|r| )d. td/|di}t*|+d0}t,|d d1pt-|
}i }|.d2s:|d3krR| j/||d4|d5\}}nR|d6ksf|d6krx| j0|||d5}n,||||+d7d8krd9nd d:g}d|d;< |1|||pd d< | 2|| |S | d=d>s|s| d?d>}| 
d@|rdAndB  |
3dC}| dDrN| )dE | /||d4\|dF< |dG< | 2|| |S t4|s| 
dH t,|}|t5j6vrzdI}|1d||dJ |S | j7|
|||dK}dL|v r| 8||}| 9| zzt:|}W n& t;j<j=j>y   t:|? }Y n0 |j@dMkr | )dN | A|||W S |j@dOkrT| B||\|dF< |dG< | )dP |W S t	dQ|j@r| C|||}| )dR |W S |j@dSkr| )dT | D| jE||||dU|W S t	dV|j@r,| jF|tG|d d dWHd"d( |dX\|dF< |dG< |d7dYkrdZnd |d[< | 2|| | )d\ |W S t	d]|j@r^| I||||dF< | )d^ |W S W n t;j<j=j>yz   Y n0 |1| j%d,|d_d`| jJ|d d`| jK|d d`| L|da | jdb tM| jN|||
|dc}tO|ddkrtP|d( |S |r| jD|fi |S tQ|d S )eNr   default_searchfixup_error)autoauto_warningr   z[^\s/]+\.[^\s/]+/z7The url doesn't specify the protocol, trying with httpszhttps://r   z^(?:url|URL)$zInvalid URL:  zT . Call yt-dlp like this:  yt-dlp -v "https://www.youtube.com/watch?v=BaW_jenozKc"  T)expectedz$Falling back to youtube search for  z8 . Set --default-search "auto" to suppress this warning.z	ytsearch:)errorr   z is not a valid URL:
to_genericr   rB   r   r   referer)r   r   )r   rB   i  zcf-mitigated	challengez
set-cookie)__cf_bmdomainzClearing __cf_bm cookie for r   r  )r  r   rq   z<Got HTTP Error 403 caused by Cloudflare anti-bot challenge; zssee  https://github.com/yt-dlp/yt-dlp#impersonation  for how to install the required impersonation dependency, and z6try again with  --extractor-args "generic:impersonate"r   zLast-Modified)r1   r3   r5   zContent-Typer`   za(?P<type>audio|video|application(?=/(?:ogg$|(?:vnd\.apple\.|x-)?mpegurl)))/(?P<format_id>[^;\s]+)zdirect video linkr   r   )Zdefault_extZmpegurlr=   r0   r   f4mtypeaudionone)r   r7   r2   Zvcodecr4   )r   	subtitlesr   testFZforce_generic_extractorz %s generic information extractorZForcingzFalling back onr   r   zM3U playlistr   r  z7URL could be a direct video link, returning it as such.Zunknown_video)r4   r7   r2   )r   z%<title>DPG Media Privacy Gate</title>ZrsszRSS feedZSmoothStreamingMediazISM manifestz^(?:{[^}]+})?smil$z	SMIL filez{http://xspf.org/ns/0/}playlistzXSPF playlist)Zxspf_urlZxspf_base_urlz(?i)^(?:{[^}]+})?MPD$)r   fragment)Zmpd_base_urlZmpd_urlZdynamicr;   r<   zDASH manifestz-^{http://ns\.adobe\.com/f4m/[12]\.0}manifest$zF4M manifestrN   r   )r3   r?   rA   rO   zLooking for embedsr   r9   r   )Rr   
url_resultZhttp_schemer   r   r   scheme	get_paramrv   r   report_warningr   r#   r   _generic_idr   r   r   
isinstancecauser	   statusresponse
get_header
extensionsr   r   rp   	cookiejarclearrg   Z_impersonate_target_availabler
   r7   r   rl   r   Z_generic_titler"   r   r   rs   r   groupr   r'   endswith#_extract_m3u8_formats_and_subtitles_extract_f4m_formatsupdater   r   r   r-   ZALLOWED_EXTENSIONSr   Z_download_webpageZreport_extractionr   xmletreeElementTree
ParseErrorencodetagr   Z _parse_ism_formats_and_subtitlesZ_parse_smilZplaylist_resultZ_parse_xspfZ _parse_mpd_formats_and_subtitlesr$   
rpartitionZ_parse_f4m_formatsZ_og_search_descriptionZ_og_search_thumbnailZ_rta_searchr   _extract_embedsr   r   r   )rh   r7   
parsed_urlr   original_urlsmuggled_datar   Zis_intentionalr   rB   Zfull_responser   Zcf_cookie_domainmsgri   r9   content_typemr   r   r2   r  r   forcer   r   r   rD   embedsrj   rj   rk   _real_extract  sl   



























zGenericIE._real_extractr  c          ,   	      s2	  t |}t|ddp| |}t|i \}}|r8|jn|}g }| jj D ]}	|		 |
dg v rfqL|	| j||}
g }z|t|
 q|W qL | jy   | |	j dt||od | Y   S  ty   | |	j dt| || Y qL0 qL|r|S | j||td}|rt|
dtrL| d	 | |d d
gS z6| j||d|d}t|ddr| d |gW S W n ty   Y n0 td|}|dur|d}t| j|d|tddpg }g i d  }}}|D ]<}|
d}|rt|tsqt j!"||}|
d}t|tr@|# }t$|# }|dkrl| |t%	 g  S |dks|dkr| j&||ddd\}}|| | j'||d nF|dks|dkr| j(||dd d!dd"\}}|| | j'||d |s|||t)v rt*|p|ndd#|id$ qt+d%t,| d& |D ]v}| j|d|tddpji }t-|
d}|sqJ|.t/|d'pd(g t j!"|||
d)d#|id* qJ|s|r| d+ ||d,}|r| 0|| |gS | j1d-|d.d/dd0}|rT| d1 |2d2d3 d4vrD| 3d5| d6 | 4|||gS | j5||i d7}|
d8|dfvr| d9 |
d:dgt6j7R v}t8|rd;nd<t9|d8 |d=|d>d?|gS d@dA   fdBdC}|t:dD|}|r| dE n |t:dF|}|r| dG |sD|t:dH|}|rD| dI |sj|t:dJ|}|rj| dK |s|t:dL|}|r| dM |st:dN|}|r| dO |s|t:dP|}|r| dQ |st:dR|} | dur|t:dS|}|r| dT |sdU}!tdV|! |}|sZ|oF|j;
dW}"|"rZt|!|"}|rt j!"|t<|d}#|#|kr| =|# | |#gS d}|s| j>dX|dd7}$|$r|$|kr| dY | |$gS |sg S | j1dZ|d[dd7}%g }&t?|D ]}'|'@ Ad\}'t<|'}'|'Bd]d^}'t j!"||'}'t j!CtDjEF|'}t%G|'rl|&| |'d_ q tDjEH|d3 }d`|i}(||%|da |db |(dc})tIG|'r|)Jd<tI	 |'dd |&|) q t$|'}|dekri | K|'||)})n|dfkr| L|'|g  S |dkrF| j(|'|d|(dg\|)d< |)dh< | 0|)|' n|dkrz| j&|'||(di\|)d< |)dh< | 0|)|' n\|djkr| jM|'||(di|)d< n<tdk|'r|'|kr| t9|'dld=itN	 })n|'|)d8< |&|) q t|&dk	r.tO|&ddmD ].\}*}+|+
dadurdnP|+da |*|+da< q|&S )oz$Returns an iterator of video entriesra   r1   Z	block_iesz exclusive embedzdiscarding other embedsz embedr   rK   zJW Player playlistZ
JWPlatformF)Zrequire_titlebase_urlr   )r   .r   zJW Player datazN(?s)\bvideojs\s*\(.+?([a-zA-Z0-9_$]+)\.src\s*\(\s*((?:\[.+?\]|{.+?}))\s*\)\s*;Nr   r   )r   r   r   r
  zvideo/youtubezapplication/dash+xmlZmpdZdash)Zmpd_idr   )targetzapplication/x-mpegurlr=   r0   r~   Zhls)Zentry_protocolZm3u8_idr   r   )r7   r2   r   z(?s)z4\.addRemoteTextTrack\(({.+?})\s*,\s*(?:true|false)\))languageZsrclangZundlabel)r7   rq   r   zvideo.js embed)r   r  )zk<script\b[^>]+?\bsrc\s*=\s*(["\'])https?://(?:(?!\1)[^?#])+/kt_player\.js\?v=(?P<ver>\d+(?:\.\d+)+)\1[^>]*>zkt_player\s*\(\s*(["\'])(?:(?!\1)[\w\W])+\1\s*,\s*(["\'])https?://(?:(?!\2)[^?#])+/kt_player\.swf\?v=(?P<ver>\d+(?:\.\d+)+)\2\s*,z
KVS playerver)r  r   z
KVS Player.r   )456zUntested major version (z') in player engine - download may fail.r   r7   zJSON LDr2   rN   r   T)r   r  r  )r   r7   c                 S   s<   t | rdS t| rdS tj| j}t|d }|dvS )NT)NZswfZpngZjpgZsrtZsbvsubZvttZttmlZjsr#  )r   suitabler   r   r   r   r   r   )ZvurlZvpathZvextrj   rj   rk   check_video`  s    


z.GenericIE._extract_embeds.<locals>.check_videoc                    s   t t | S r   )r   r   )urlsr?  rj   rk   filter_videoi  s    z/GenericIE._extract_embeds.<locals>.filter_videoz+flashvars: [\'"](?:.*&)?file=(http[^\'"&]*)zJW Player in SFWObjectz(?sx)
                (?:
                    jw_plugins|
                    JWPlayerOptions|
                    jwplayer\s*\(\s*["'][^'"]+["']\s*\)\s*\.setup
                )
                .*?
                ['"]?file['"]?\s*:\s*["\'](.*?)["\']zJW Player embedz+[^A-Za-z0-9]?(?:file|source)=(http[^\'"&]*)z
video filezX[^A-Za-z0-9]?(?:file|video_url)["\']?:\s*["\'](http(?![^\'"]+\.[0-9]+[\'"])[^\'"]+)["\']zJW Player JS loaderz(?xs)
                flowplayer\("[^"]+",\s*
                    \{[^}]+?\}\s*,
                    \s*\{[^}]+? ["']?clip["']?\s*:\s*\{\s*
                        ["']?url["']?\s*:\s*["']([^"']+)["']
            zFlow Playerz0cinerama\.embedPlayer\(\s*\'[^']+\',\s*'([^']+)'zCinerama playerzI<meta (?:property|name)="twitter:player:stream" (?:content|value)="(.+?)"zTwitter cardz8<meta.*?property="og:video:type".*?content="video/(.*?)"z7<meta.*?property="og:(?:video|audio)".*?content="(.*?)"zOpen Graph video infoz%[0-9]{,2};\s*(?:URL|url)=\'?([^\'"]+)z\(?i)<meta\s+(?=(?:[a-z-]+="[^"]+"\s+)*http-equiv="refresh")(?:[a-z-]+="[^"]+"\s+)*?content="ZRefreshztwitter:playerztwitter:player iframez^(?:https?://)?([^/]*)/.*zvideo uploaderzunicode-escapez\/r   r^   r  r3   rO   )r1   rZ   r3   rO   r   )r   ie_keyr7   rD   Zxspf)r2   r   r  r  r	  z(?i)\.(?:ism|smil)/manifestr  )startz{} ({}))QtypesMappingProxyTyper   r  r#   r7   rg   Z_iesvaluesrC  r   Zextract_from_webpager   r   ZStopExtractionrs   IE_NAMEr   StopIterationextendZ_find_jwplayer_datar   r  r   r  Z_parse_jwplayer_datar   rv   searchr  r)   Z_parse_jsonr   r   r(   r   r   r   Z"_extract_mpd_formats_and_subtitlesZ_merge_subtitlesr   r   r   finditerescaper   
setdefaultr   r   r   r   r  r   Z_search_json_ldr   Z	manifestsr   r   r   r   r!   rl   Z_html_search_metar   r'  decoder   unquoteosr   basenamer>  splitextr   r"  Z_extract_smil_infoZ_extract_xspf_playlistr!  r.   r   rc   ),rh   r7   r   r   r9   r   r-  Z
actual_urlr2  ZiegenZcurrent_embedsZjwplayer_datar   Zmobjvarnamesourcesr   r  r   sourceZsrc_typer2   ZfmtssubsZ	sub_matchr=  Zsub_srcfoundZjson_ldZ	is_directrB  Zm_video_typeZREDIRECT_REGEXZrefresh_headerri   Z	embed_urlZdomain_namer   r   r   Zentry_info_dictrr   r   rj   rA  rk   r*    s   
	












 



		
















zGenericIE._extract_embeds)r   N)__name__
__module____qualname__ZIE_DESCZ
_VALID_URLrH  Z_NETRC_MACHINEr   r   Z_TESTSrl   rs   r   r   classmethodr   staticmethodr   r   r3  r*  rj   rj   rj   rk   r.   5   sD  #
	

$       
7** \r.   );rQ  rv   rE  urllib.parser   xml.etree.ElementTreer#  commonr   Zcommonprotocolsr   Zyoutuber   compatr   cookiesr   Znetworking.exceptionsr	   Znetworking.impersonater
   utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Zutils._utilsr-   r.   rj   rj   rj   rk   <module>   s   $