
    uki                     2   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e      Z:y)    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                      e Zd ZdZdZdZdZg 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 dui dEdvdwddxdydzd{d|d}d~dgdddedddddddddddedddddd	ddddddde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 di dEddwddxd dzd{d|dd~dgdddedddddedddddd	deddddd	d
dddddded	dgddi dEddwddxddzd{d|dd~dgdddedddd	dddedddddeddddd	ddddddded	dgdZ	d Z
d*d!Zd" Zd# Zed$        Zed%        Zd& Zd' Zd i d(d)Zy (+  	GenericIEz+Generic downloader that works on some sitesz.*genericFz/https://media.w3.org/2010/05/sintel/trailer.mp4 67d406c2bcb6af27fa886f31aa934bbetrailermp4Ti;K20100513)idexttitledirect	timestampupload_date)urlmd5	info_dictz#http://ai-radio.org:8000/radio.opusradioopus)r6   r7   r8   zInvalid URL)r<   r>   skipz[https://ftp.nluug.nl/video/nluug/2014-11-20_nj14/zaal-2/5_Lennart_Poettering_-_Systemd.webm 4ccbebe5f36706d85221f204d7eb5913z5_Lennart_Poettering_-_SystemdwebminT20141120znhttps://stream-akamai.castr.com/5b9352dbda7b8c769937e459/live_2361c920455111ea85db6911fe397b9e/index.fmp4.m3u8z
index.fmp4is_live)r6   r7   r8   live_statusskip_downloadm3u8)r<   r>   paramsz=http://calimero.tk/muzik/FictionJunction-Parallel_Hearts.flaczFictionJunction-Parallel_Heartsflaczihttps://www.extra.cz/cauky-lidi-70-dil-babis-predstavil-pohadky-prymulanek-nebo-andrejovy-nove-saty-ac867 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b20220606)	r6   r7   r8   descriptionr9   duration	thumbnailr:   r;   extractor_argsimpersonatechrome)r<   r=   r>   rI   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g20250120)r6   r7   r8   rN   r:   r;   z\https://raw.githubusercontent.com/grafov/m3u8/refs/heads/master/sample-playlists/master.m3u8masterzxhttps://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpdig)r6   r7   r8   r:   r;   zChttps://livesim2.dashif.org/livesim2/ato_10/testpic_2s/Manifest.mpdManifest
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.xspfr6   z
22-AL0019Z   )r<   r>   playlist_countrI   z)http://phihag.de/2014/youtube-dl/rss2.xmlz*https://phihag.de/2014/youtube-dl/rss2.xmlzZero Punctuationz$md5:512ae5f840e52eb3c0d08d4bed08eb3e)r6   r8   rM      )r<   r>   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/ df02cadc719dcc63d43288366f037754zparis-d-mollzParis d-mollz$md5:319e37ea5542293db37e1e13072fe330z;re:https?://www\.filmarkivet\.se/wp-content/uploads/.+\.jpg)r6   r7   r8   rM   rO   zthttps://www.dagbladet.no/nyheter/etter-ett-ars-planlegging-klaffet-endelig-alt---jeg-matte-ta-en-liten-dans/6041303560413035uN   Etter ett års planlegging, klaffet endelig alt: - Jeg måtte ta en liten dansz$md5:bbb4e12e42e78609a74fd421b93b1239z(re:https?://www\.dagbladet\.no/images/.+)r6   r8   rM   rO   r   )r<   r>   rZ   zGhttps://www.abc.net.au/res/libraries/cinerama2/examples/single_clip.htmsingle_clipzSingle Clip player examples)r6   r8      z5https://flowplayer.com/resources/demos/standard-setupplaylist   i[20181009zkhttps://media.nationalarchives.gov.uk/index.php/webinar-using-discovery-national-archives-online-catalogue/Mrj4DVp2zeAr7   r8   u:   Using Discovery, The National Archives’ online catalogue	age_limitr   availabilityunlisted
categories	EducationchannelzThe National Archives UKchannel_follower_count
channel_idUCUuzebc1yADDJEnOLA5P9xwchannel_urlz8https://www.youtube.com/channel/UCUuzebc1yADDJEnOLA5P9xwchapterszcount:13rM   z$md5:a236581cd2449dd2df4f93412f3f01c6rN   i  
like_countrF   not_live
media_typevideoplayable_in_embedzcount:5zre:https?://i\.ytimg\.com/vi/.+i=T20150212z@TheNationalArchivesUKz.https://www.youtube.com/@TheNationalArchivesUK)tagsrO   r:   r;   uploaderuploader_iduploader_url
view_countYoutube)r<   r>   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)r6   r7   r8   rM   rO   _old_archive_ids)r<   r>   zhttps://foodschmooze.org/z00FrhnwzGrilling Beef Tenderloin g     x@z*re:https?://cdn\.jwplayer\.com/v2/media/.+iVW20160607)r6   r7   r8   rM   rN   rO   r:   r;   z#http://www.suffolk.edu/sjc/live.phpliveflvz3Massachusetts Supreme Judicial Court Oral Argumentsz1https://bogmedia.org/videos/21217/40-nochey-2016/ 94166bdb26b4cb1fb9214319a629fc5121217u#   40 ночей (2016) - BogMedia.orgz$md5:4e6d7d622636eb7948275432eb256dc3z40-nochey-2016z=re:https?://bogmedia\.org/contents/videos_screenshots/.+\.jpg)r6   r7   r8   rM   
display_idrO   z&https://youix.com/video/leningrad-zoj/ 94f96ba95706dc3880812b27b7d8a2b818485u_   Клип: Ленинград - ЗОЖ скачать, смотреть онлайн | Youix.comzleningrad-zojz:re:https?://youix\.com/contents/videos_screenshots/.+\.jpg)r6   r7   r8   r   rO   z=https://shooshtime.com/videos/346037/fresh-out-of-the-shower/ c9a97ad528607a4516d4df83a3aeb12c346037z$Fresh out of the shower - Shooshtime   z$md5:efd70fd3973f8750d285c743b910580azfresh-out-of-the-showerz=re:https?://i\.shoosh\.co/contents/videos_screenshots/.+\.jpg)r6   r7   r8   rg   rM   r   rO   zUntested major version)r<   r=   r>   expected_warningsz5https://www.kvs-demo.com/video/105/kelis-4th-of-july/105zKelis - 4th Of Julyz#https://www.kvs-demo.com/embed/105/ 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)r6   r7   r8   rM   rO   r:   r;   r   zhttps://cine.ar/ 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.htmlipy2AcGLzAHoe een bladvlo dit verwoestende Japanse onkruid moet vernietigenz$md5:6a9d644bab0dc2dc06849c2505d8383dg     [@z"re:https?://images\.nu\.nl/.+\.jpgib\^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<c20221004)r6   r7   r8   rM   r9   rO   r:   r;   zhttps://breezy.hr/
k6gl2kt2eqz6Breezy HR's ATS helps you find & hire employees soonerg      @z$md5:eee75fdd3044c538003f3be327ba01e1gN@z2re:https?://cdn\.prod\.website-files\.com/.+\.webpi X20170130)	r6   r7   r8   average_ratingrM   rN   rO   r:   r;   zhttps://gist.githubusercontent.com/bashonly/2aae0862c50f4a4b84f220c315767208/raw/e3380d413749dabbe804c9c2d8fd9a45142475c7/videojs_hls_test.htmlvideojs_hls_testi  )r6   r7   r8   rN   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=33f9b7351yygqldloqIku8   SolidWorks. Урок 6 Настройка чертежаpublicu   PROстое3DUCy91Bug3dERhbwGh2m2Ijngz8https://www.youtube.com/channel/UCy91Bug3dERhbwGh2m2Ijngcomment_countz$md5:baf95267792646afdbf030e4d06b2ab3i  heatmapz	count:100zcount:17iAQ20130314z
@PROstoe3Dz"https://www.youtube.com/@PROstoe3D)	rv   rx   rO   r:   r;   ry   rz   r{   r|   z\https://www.google.com/url?rct=j&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DcmQHVoWB5FYcmQHVoWB5FYz$First Firefox OS phones side-by-sideEntertainmentz	The VergeUCddiUEpeqJcYeBxX1IVBKvQchannel_is_verifiedz8https://www.youtube.com/channel/UCddiUEpeqJcYeBxX1IVBKvQz$md5:7a676046ad24d9ea55cdde4a6657c5b3   zcount:15iz*Q20130224z	@TheVergez!https://www.youtube.com/@TheVergec                 @    | j                   j                  d|        y)zReport information extraction.z![redirect] Following redirect to N)_downloader	to_screen)selfnew_urls     S/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/yt_dlp/extractor/generic.pyreport_following_redirectz#GenericIE.report_following_redirect:  s    ""%Fwi#PQ    Nc                     |dkD  r|dz  }n|sy d}| j                   j                  d| d| t        |d d              y )Nr   sazIdentified  z; %s)r   write_debugr   )r   namenumnotes       r   report_detectedzGenericIE.report_detected>  sN    7CKDC$${3%q|DRVX^?_>`%abr   c           	      8   | j                  dd gd      d   }|_t        j                  j                  |      j                  xs1 |xs- t        j                  j                  |      j                  xs d |d<   | j                  dd gd      d   }|_t        j                  j                  |      j                  xs1 |xs- t        j                  j                  |      j                  xs d |d<   d }t        | j                  d	d      dt        hfd|hfd
|hfd      xs d |d<   | j                  dd gd      d   }|t        j                  j                  t        j                  j                  |      j                  xs- |xs) t        j                  j                  |      j                        }| j                  j                  |      D ]  }t        |d   |      |d<    t        d | j                  j                  |      D        d       }	|	r | j                  dd g      d   }
|
|
dk(  rd|d<   y d|d<   y |	j                  d      xs |j                  d      xs i }|j                  d      }| j                  |	d   |ddi |ddid      }|du ry |j                  d      }|j                  d      sy | j!                  ||j"                  ||dd      }|sy | j%                  ||      }|sd|d<   |j                  d      xs ||d<   y y )Nfragment_queryT)	casesenser   extra_param_to_segment_url	key_queryextra_param_to_key_urlc                 T    t        j                  d| t         j                        r| S d S )Nz(0x)?[\da-f]+)re	fullmatch
IGNORECASE)values    r   hex_or_nonez3GenericIE._extra_manifest_info.<locals>.hex_or_noneU  s"    LL)95"--P5ZVZZr   hls_keyr   )urikeyivhls_aesvariant_queryr<   c              3   <   K   | ]  }t        |      d k(  r|  yw)m3u8_nativeN)r   ).0fs     r   	<genexpr>z1GenericIE._extra_manifest_info.<locals>.<genexpr>e  s&      G!1!4E  Gs   rE   falsers   rF   http_headersr6   zChecking m3u8 live statusFAccept-Encodingidentity)errnoteheadersfatal      #EXTM3U)prefixr   r   rN   )_configuration_argurllibparseurlparsequeryr    r'   parse_qsr   _get_formatsr&   nextget_request_webpageread
startswith_webpage_read_contentr<   _parse_m3u8_vod_duration)r   infomanifest_urlr   r   r   r   r   fmtm3u8_formatrE   r   r   urlhfirst_bytesm3u8_docrN   s                    r   _extra_manifest_infozGenericIE._extra_manifest_infoH  sk   001AD6UY0Z[\]%%%n5;; E~ E<<((6<<E@D -. ++K$4+PQRS	 %%i066 E) E<<((6<<E@D )*	[ 't'>'>yTX'>'Y}%q;-.@[MHZ\
   	Y //$SW/XYZ[$LL))%%m4:: =m =<<((6<<>E ''44T: A-c%j%@E
A  Gt'7'7'D'DT'J GHLN--i$@CG"4;w4Fj]# MV]#!oon5W.9QWUWG$J((E"J0KUZB7B$5zB% ) QD u}))C.K))*511dhh
;eUZ 2 \H44XzJH&/]##xx
3?xD- r   c                   	 ddig }j                  d      D ]  	t        d 	j                  d      D        t        	dd            }|s5t        	fd	      }|rt	        |d
|i      }	fd}|j                  d|t        	fd      t        	dd       t        t        	dd             t         |d            t        t        	t        d      d             |d      t         |d            t         |d            dddddj                   |d      xs dj                               d       " d|t        fd      t        fd      |d S )!Nitunesz*http://www.itunes.com/dtds/podcast-1.0.dtdz./channel/itemc              3   R   K   | ]  }|j                   j                  d        ! yw)r<   N)attribr   )r   es     r   r   z)GenericIE._extract_rss.<locals>.<genexpr>  s     He$Hs   %'z./enclosurelinkFr   c                  :     j                  d      j                  S )Nguidfindtextits   r   <lambda>z(GenericIE._extract_rss.<locals>.<lambda>  s    BGGFO$8$8 r   force_videoidc                 :    t        t        d|        d       S )Nz	./itunes:default)r,   r-   )r   NS_MAPr   s    r   r   z&GenericIE._extract_rss.<locals>.itunes  s!    !"miu4Ev&NX\]]r   url_transparentc                  :     j                  d      j                  S )Nr8   r   r   s   r   r   z(GenericIE._extract_rss.<locals>.<lambda>  s    "'''*:*?*? r   rM   r   pubDaterN   z./itunes:imagehrefr8   episodeseasonr   r   )trueyesr   noexplicitr   )_typer<   r8   rM   r:   rN   rO   r  episode_numberseason_numberrg   rc   c                  :     j                  d      j                  S )Nz./channel/titler   docs   r   r   z(GenericIE._extract_rss.<locals>.<lambda>  s    chh/@&A&F&F r   c                  :     j                  d      j                  S )Nz./channel/descriptionr   r  s   r   r   z(GenericIE._extract_rss.<locals>.<lambda>  s    CHH5L,M,R,R r   )r  r6   r8   rM   entries)findallr   r,   r!   r   appendr#   r   r'   r+   r-   r   r   lower)
r   r<   video_idr  r  next_urlr   r   r   r   s
      `    @@r   _extract_rsszGenericIE._extract_rss  s`   B
 ++./ 	BHbjj.GH2vU35H 89D&x/41HI^ NN*!"?@)"mTJ.z"iQU/VW*6*+=>(BFVX^8_ag)hi!'?"-fY.?"@!,VH-=!>&(aqIMMvV`OaOgegNnNnNpq 	:  FG#$RS
 	
r   c                 T   |j                  d      s|S t        j                  j                  |t	        d      d        }| j                  |      }|j                  j                  d      }d}|d   d | t        t        |            }d}t        t        |            D ]#  }	|||	   z  }|	|z   |z  }
||
   ||	   c||	<   ||
<   % dj                  fd|D              |d   |d  z   |d<   t        j                  j                  |j                  dj                  |                  S )	Nzfunction/0//    rb   r   r   c              3   (   K   | ]	  }|     y wN )r   indexhash_s     r   r   z.GenericIE._kvs_get_real_url.<locals>.<genexpr>  s     @ueEl@s   )path)r   r   r   r   len_kvs_get_license_tokenr!  splitlistrangereversedjoin
urlunparse_replace)cls	video_urllicense_codeparsedlicense_tokenurlpartsHASH_LENGTHindicesaccumsrcdestr   s              @r   _kvs_get_real_urlzGenericIE._kvs_get_real_url  s.   ##M2&&y]1C1D'EF22<@;;$$S)L[)u[)* E+./ 	FC]3''E%K;.D*1$-'GCL'$-	F
 gg@@@8A;{|C\\||&&vCHHX<N'OPPr   c           	         | j                  dd      } | D cg c]  }t        |       }}| j                  dd      }t        |      dz  }t        |d |dz          }t        ||d        }t        dt	        ||z
        z        d |dz    }t        t        t        |            D 	cg c]#  \  }}t        d      D ]  }	|||	z      |z   dz   % c}	}}S c c}w c c}	}}w )	N$r   01r   r      
   )replaceintr"  strabs	enumeratemapr&  )
r-  charlicense_values
modlicensecenter	fronthalfbackhalfr  currentoffsets
             r   r#  z GenericIE._kvs_get_license_token  s    #++C40<=#d)==!))#s3
ZA%
;FQJ/0	z&'*+SX!5667!D
 #,CZ,@"A
 
w(
  EFN+g5;
;
 	
 >
s   C'(Cc                    | j                  d|d|t              }| j                  d|dd      }| j                  d|d	      }|d
   }|j	                  d      r|j                  d      \  }}	}	||z   }t        t        t        j                  d      j                  |j                                     }
g }|
D ]  }d||   vr|j                  | d|      }|j                  t        || j                  ||   |d               |ddt!        |      xs t!        ||         dd|ii       |d   j                  d      rd|d   d<    |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*/?>)r   Fr   z.<(?:h1|title)>(?:Video: )?(.+?)</(?:h1|title)>r8   preview_url//r  z^video_(?:url|alt_url\d*)$z
/get_file/_textr-  r4   )r<   	format_idr7   r   Refererheightr   qualityr  )r6   r   r8   rO   formats)_search_jsonr   _search_regex_html_search_regexr   	partitionr%  filterr   compilematchkeysr   r  r)   r6  r   )r   r<   webpager  rL  r   r8   rO   protocol_url_keysrW  r   rR  s                 r   _extract_kvszGenericIE._extract_kvs  s   %%9[(Z & I	 ''K\ ( 0
 ''(Y[bdklm,	% ]]3/NHa 9,Irzz*GHNNPYP^P^P`ab 	+C9S>1!UmS9INNsD$:$:9S>9UcKd$ef& $I.R2B9S>2R	
 C 0  2;??8,)*I&	+ J'$ i0
 	
r   c           
      l   |j                  d      r"| j                  | j                         |z         S t        j                  j                  |      }|j                  s| j                  d      }|d}|dv rt        j                  d|      r%| j                  d       | j                  d|z         S |dk7  rU|dk(  r<t        j                  d	|      rt        d
|dd      | j                  d| d       | j                  d|z         S |dv rt        |dd      d|vr|dz  }| j                  ||z         S |}t        |i       \  }}d }|j                  d      }d|v r|d   }|}n| j                  |      }| j                  ddg      }	d|	v rd }		 | j!                  ||t#        d|j                  d      d      |	      }
|
jB                  }|tE        |      d(   k7  r2| jG                  |       |rtI        |d|i      }| j                  |      S || jK                  |      tM        |
jN                  j                  d)            d*}|
jN                  j                  d+d,      jQ                         }t        j                  d-|      }|r| jS                  d.       t#        d/|j                  d      i      }tU        |jW                  d0            }tY        |d 1      xs t[        |
      }i }|j]                  d2      s|d3k(  r| j_                  ||d4|5      \  }}nB|d6k(  s|d6k(  r| ja                  |||5      }n#||||jW                  d7      d8k(  rd9nd d:g}d|d;<   |jc                  |||xs d d<       | je                  ||       |S | j                  d=d>      s,|s*| j                  d?d>      }| j                  d@|rdAndBz         |
jg                  dC      }|j                  dD      rA| jS                  dE       | j_                  ||d4      \  |dF<   |dG<   | je                  ||       |S ti        |      sG| j                  dH       tY        |      }|tj        jl                  vrdI}|jc                  d||dJ       |S | jo                  |
|||K      }dL|v r| jq                  ||      }| js                  |       	 	 tu        |      }|j                  dMk(  r$| jS                  dN       | j                  |||      S |j                  dOk(  r.| j                  ||      \  |dF<   |dG<   | jS                  dP       |S t        j                  dQ|j                        r&| j                  |||      }| jS                  dR       |S |j                  dSk(  r6| jS                  dT       | j                  | j                  ||||U      |      S t        j                  dV|j                        r{| j                  |t        |d d W      j                  d"      d(   |X      \  |dF<   |dG<   |j                  d7      dYk(  rdZnd |d[<   | je                  ||       | jS                  d\       |S t        j                  d]|j                        r)| j                  |||      |dF<   | jS                  d^       |S 	 |jc                  | jK                  d,|d_`      | j                  |d `      | j                  |d `      | j                  |      da       | j<                  j7                  db       t        | j                  |||
|c            }t        |      ddk(  rt        |d(   |      S |r | j                  |fi |S t        |      # t        $ r6}t%        |j&                  t(              rp|j&                  j*                  dk(  rW|j&                  j,                  j/                  d      dk(  r/|j&                  j,                  j0                  j                  d       t3        t5        |j&                  j,                  j/                  d            d       }|r2| j7                  d!|        | j8                  j;                  |d"d#$       d%}| j<                  j?                  tA                     s|d&z  }t        | d'd      d }~ww xY w# tv        jx                  jz                  j|                  $ r tu        |j                               }Y 5w xY w# tv        jx                  jz                  j|                  $ r Y w xY w)eNrP  default_searchfixup_error)autoauto_warningrg  z[^\s/]+\.[^\s/]+/z7The url doesn't specify the protocol, trying with httpszhttps://ri  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:)errorrg  z is not a valid URL:
to_genericr   rQ   r   r   referer)r   rS  )r   rQ   i  zcf-mitigated	challengez
set-cookie)__cf_bmdomainzClearing __cf_bm cookie for r  rp  )rq  r!  r   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)r6   r8   r:   zContent-Typer   za(?P<type>audio|video|application(?=/(?:ogg$|(?:vnd\.apple\.|x-)?mpegurl)))/(?P<format_id>[^;\s]+)zdirect video linkrS  rR  )default_extmpegurlrH   r4   r   f4mtypeaudionone)rR  r<   r7   vcodecr9   )rW  	subtitlesr   testFforce_generic_extractorz %s generic information extractorForcingzFalling back onr   r   zM3U playlistrW  rz  z7URL could be a direct video link, returning it as such.unknown_video)r9   r<   r7   )r   z%<title>DPG Media Privacy Gate</title>rsszRSS feedSmoothStreamingMediazISM manifestz^(?:{[^}]+})?smil$z	SMIL filez{http://xspf.org/ns/0/}playlistzXSPF playlist)xspf_urlxspf_base_urlz(?i)^(?:{[^}]+})?MPD$)r   fragment)mpd_base_urlmpd_urldynamicrE   rF   zDASH manifestz-^{http://ns\.adobe\.com/f4m/[12]\.0}manifest$zF4M manifestru   r   )r8   rM   rO   rg   zLooking for embedsr   r>   r   )Rr   
url_resulthttp_schemer   r   r   scheme	get_paramr   r^  report_warningr   r$   r   _generic_idr   r   r   
isinstancecauser
   statusresponse
get_header
extensionsr    r	   r   	cookiejarclearr   _impersonate_target_availabler   r<   r   r   r   _generic_titler#   r   r  r   r?  groupr   r(   endswith#_extract_m3u8_formats_and_subtitles_extract_f4m_formatsupdater   r   r   r.   ALLOWED_EXTENSIONSr   _download_webpagereport_extractionr   xmletreeElementTree
ParseErrorencodetagr   _parse_ism_formats_and_subtitles_parse_smilplaylist_result_parse_xspf _parse_mpd_formats_and_subtitlesr%   
rpartition_parse_f4m_formats_og_search_description_og_search_thumbnail_rta_searchr%  _extract_embedsr"  r   r   )r   r<   
parsed_urlrf  original_urlsmuggled_datar   is_intentionalr  rQ   full_responser   cf_cookie_domainmsgr   r>   content_typemr   rR  r7   rz  rW  forcer   r`  r  rX   embedss                                r   _real_extractzGenericIE._real_extract  s	   >>$??4#3#3#5#;<<\\**3/
  !^^,<=N%!.!HH880#6''(bc??:+;<<#}4%788$4c:"0"0  8L  !M)-#/ / !//"Fse  LD  !EF??;+<==!99$w.A%BTRRn,"c)N~';<<*33]&**<8m+)/:M$H'',H --mgYGk!K	_ 11#x#-(,,Y7V J ( 2 )M,  ##(-a00**73%g/OP??7++ ((-*=+@+@+D+D_+UV
	 %,,00DJJLHHy  |H  I  !45!9m.?.?	.J"KLGAGGK01I6]:N}:]CI!!),v%)%M%McS[]bls%M%t"e#se|33C73S "+()7(Bf	  '+	(#"& '4 
 %%i5~~fe,^NN#<eDE BSXi^o pq#((- !!*-  0;?;c;cdgiqsx;y8Ii )K"8%%i5 {#IK$C/BBB% 
 ,,3 - > 3g=,,S(;Gx(&	@-g6 ww%$$Z0((h<<22?C?d?dehjm?n<	)$i&<$$^4  /9''S(;$$[1==$$_5++$$X&- % / 	 
 2CGG<?C?d?d!+G4$!O!Z!Z[^!_`a!b	 @e @!<	)$i&<
 9<98T9Z^	-()))S9$$_5  JCGGT'+'>'>sC'R	)$$$^4   U 	 ((Wg(F66w6M227D2I))'2
 	 	$$%9:d**<}`i*jkv;!vay)44'4''<)<<s##{  	_qww	2qww~~7L((33NC{R((3377FN+#AGG$4$4$?$?$MN% '    #?@P?Q!RS$$,<3Y$WPC##AABSBUV U V %MNY]_ _	_J 99((33 @-gnn.>?@D yy$$// 		sl   0]> c 2d <d ?Ad Ad 
Bd %Ad >
b>D1b99b>A dd dd 'd32d3r  c          
        , t        j                  |      }t        |dd      xs | j                  |      }t	        |i       \  }}|r|j
                  n|}g }| j                  j                  j                         D ]`  }	|	j                         |j                  dg       v r&|	j                  | j                  ||      }
g }	 	 |j                  t        |
              |r|S | j)                  ||t*              }|r~t-        |j                  d	      t.              r'| j                  d
       | j1                  |d	   d      gS 	 | j3                  ||d|      }t        |dd      r| j                  d       |gS 	 t7        j8                  d|      }||j;                  d      }t=        | j?                  |j;                  d      |t*        d      xs g       }g i d}}}|D ]~  }|j                  d      }|rt-        |t.              s(t@        jB                  jE                  ||      }|j                  d      }t-        |t.              r|jG                         }tI        |      jG                         }|dk(  r'| j1                  |tK        j                               gc S |dk(  s|dk(  r=| jM                  ||dd      \  }}|j'                  |       | jO                  ||       nH|dk(  s|dk(  r>| jQ                  ||d d!d"d#      \  }}|j'                  |       | jO                  ||       |rQ|j                  ||tR        v rtU        |      xs |nd d$|id%        t7        jV                  d&t7        jX                  |       d'z   |      D ]  }| j?                  |j;                  d      |t*        d      xs i }t[        |j                  d            }|sL|j]                  t_        |d(      xs d)g       j                  t@        jB                  jE                  ||      |j                  d*      d$|id+        |s|r-| j                  d,       ||d-}|r| ja                  ||       |gS | jc                  d.|d/d0d1      }|rP| j                  d2       |je                  d3      d4   d5vr| jg                  d6| d7       | ji                  |||      gS | jk                  ||i 8      }|j                  d9      |dfvr[| j                  d:       |j                  d;      dgtl        jn                  v}tq        |rd<nd=ts        |d9   |d|d>      d?|      gS d@ ,,fdA} |t7        jt                  dB|            }|r| j                  dC       n/ |t7        jt                  dD|            }|r| j                  dE       |s/ |t7        jt                  dF|            }|r| j                  dG       |s/ |t7        jt                  dH|            }|r| j                  dI       |s/ |t7        jt                  dJ|            }|r| j                  dK       |s)t7        jt                  dL|      }|r| j                  dM       |s/ |t7        jt                  dN|            }|r| j                  dO       |sGt7        jt                  dP|      } | / |t7        jt                  dQ|            }|r| j                  dR       |sdS}!t7        j8                  dT|! |      }|s7|xr |jv                  j                  dU      }"|"rt7        j8                  |!|"      }|rbt@        jB                  jE                  |ty        |j;                  d                  }#|#|k7  r#| j{                  |#       | j1                  |#      gS d}|s>| j}                  dV|d8      }$|$r(|$|k7  r#| j                  dW       | j1                  |$      gS |sg S | jc                  dX|dYd8      }%g }&t        |      D ]  }'|'j                         j                  dZ      }'ty        |'      }'|'j                  d[d\      }'t@        jB                  jE                  ||'      }'t@        jB                  j                  t        j                  j                  |'            }tK        j                  |'      r"|&j                  | j1                  |'d]             t        j                  j                  |      d4   }d^|i}(||%|d_   |d`   |(da})t        j                  |'      r:|)j                  d=t        j                         |'db       |&j                  |)       VtI        |'      }|dck(  ri | j                  |'|      |)})n|ddk(  r| j                  |'|      gc S |dk(  r1| jQ                  |'|d |(e      \  |)d<   |)df<   | ja                  |)|'       n|dk(  r0| jM                  |'||(g      \  |)d<   |)df<   | ja                  |)|'       nn|dhk(  r| j                  |'||(g      |)d<   nQt7        j8                  di|'      r6|'|k7  r1| j1                  ts        |'djdi      t        j                               })n|'|)d9<   |&j                  |)        t#        |&      dkD  r?t        |&dk      D ]/  \  }*}+|+j                  d_      dlj                  |+d_   |*      |+d_<   1 |&S # | j                  $ r4 | j                  |	j                    dt#        |      |xr d       |cY c S t$        $ r= | j                  |	j                    dt#        |             |j'                  |       Y 
w xY w# t4        $ r Y 
w xY w)mz$Returns an iterator of video entriesr   r6   	block_iesTz exclusive embedzdiscarding other embedsz embedrM  rc   zJW Player playlist
JWPlatformF)require_titlebase_urlrW  )r  .rW  zJW Player datazN(?s)\bvideojs\s*\(.+?([a-zA-Z0-9_$]+)\.src\s*\(\s*((?:\[.+?\]|{.+?}))\s*\)\s*;Nr   r   )rN  r   r4  rv  zvideo/youtubezapplication/dash+xmlmpddash)mpd_idr   )targetzapplication/x-mpegurlrH   r4   r   hls)entry_protocolm3u8_idr   rS  )r<   r7   r   z(?s)z4\.addRemoteTextTrack\(({.+?})\s*,\s*(?:true|false)\))languagesrclangundlabel)r<   r   r   zvideo.js embed)rW  rz  )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   r<   zJSON LDr7   ru   r  )r   rm  rn  )r  r<   c                     t        j                  |       ryt        j                  |       ryt        j                  j                  |       j                  }t        |d       }|dvS )NT)Nswfpngjpgsrtsbvsubvttttmljsr  )r   suitabler   r   r   r   r!  r   )vurlvpathvexts      r   check_videoz.GenericIE._extract_embeds.<locals>.check_video`  sT    !!$'t$LL))$/44E -Dkkkr   c                 .    t        t        |             S r  )r%  r\  )urlsr  s    r   filter_videoz/GenericIE._extract_embeds.<locals>.filter_videoi  s    {D122r   z+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="Refreshztwitter:playerztwitter:player iframez^(?:https?://)?([^/]*)/.*zvideo uploaderzunicode-escapez\/r  r}   rn  r8   rg   )r6   ry   r8   rg   r   )r  ie_keyr<   rX   xspf)r7   r   rz  rt  ru  z(?i)\.(?:ism|smil)/manifestrm  )startz{} ({}))QtypesMappingProxyTyper    r  r$   r<   r   _iesvaluesr  r   extract_from_webpager  r   StopExtractionr   IE_NAMEr"  StopIterationextend_find_jwplayer_datar   r  r?  r  _parse_jwplayer_datar   r   searchr  r*   _parse_jsonr   r   r)   r  r   r   "_extract_mpd_formats_and_subtitles_merge_subtitlesr  r   r   finditerescaper   
setdefaultr   r   rY  r$  r  rd  _search_json_ldr   	manifestsr   r   r  r   r"   r   _html_search_metar   r  decoder=  unquoteosr!  basenamer  splitextr   r  _extract_smil_info_extract_xspf_playlistr  r0   rA  r   )-r   r<   r`  r   r>   r  r  
actual_urlr  iegencurrent_embedsjwplayer_datar   mobjvarnamesourcesrW  rz  r4  sourcesrc_typer7   fmtssubs	sub_matchr  sub_srcfoundjson_ld	is_directr  m_video_typeREDIRECT_REGEXrefresh_headerr   	embed_urldomain_namer  r,  r   entry_info_dictr   r   r  s-                                               @r   r  zGenericIE._extract_embeds  s
   **95		<>W$BRBRSVBW*33]!%TXX3
 ""''..0 	.Byy{m//R@@))$*:*:CICN	."))$s)4 	.  M00X
 1 <-++J7=$$%9:j(A<PQQ00!853 1 Pi1LM(()9: 6M N yy] jjmGt//

1x*E  0  S  YVXZG&("dYG! jj'*S#"6ll**34!::f-h,'~~/H#C(..0. OOC1A1A1CDEE55!%!H!HXfE "I "CJD$NN4())$y)A!88C6M!%!I!IXu] %U "J "4JD$ NN4())$y)ANN"*-1A*A !-X 6 !'#&u%z)	$ 1D  [[D71C0D)EH)  BI  J 	&&OOA&:UZ ' \ b_a %cggen5$$Xc3J%K%TuVXY``!<<//W=GGG,!:%b  )$$%56(/iH	--i=!{" "" $
 Lu # >   .{{3"/9##&>ugEl$mn%%c7H=>> &&w"&E;;uc4[0  +E*42U:J:T:T2UUI$-3D"75>%-"&"4 !   	l	3 RZZ(VX_`a  !9: ! -8 :A"B CE $$%67 ,Z\c!deE$$\2 kmt"v wE$$%:;  -
 " E $$]3JJCWNE$$%67
 !\^e"g hE$$^4 ::&acjkL'$RZZ0jls%tu(()@AENII55C4DFE !%!E$,,*:*:9*E!IInnEE ,,..sLQ4PQc>227; OOG455 E ../?RV.WIY#-$$%<=	233I(()EsL\fj(k#E* A	,I!((*112BCI$Y/I!))%5I,,S)<I||++BGG,<,<Y,GHH !!),ty)DEww''1!4H:G
 '"7+&{3 'O y)&&.$mmo$( 
 /	*Cf}"eT%<%<Y%Q"eUd"e33IxHIIKOKsKst}  @H  NS  ]dKs  LeH	*OK,H))/9EKOKrKrs|  G  QXKr  LYH	*OK,H))/9E-1-F-FyRZdk-F-l	*99E)WZJZ #'//	L$+?@$$&#( *3&NN?+CA	,F w<!#G15 CQ55>-!*!1!1!G*c!BAgJC M	 && &$$

|3C%Dc.FY%+%I0IK%%  .$$

|6%:C<OPn-.& " s+   k25m< 2>m94Am98m9<	n	n	)r   N)__name__
__module____qualname__IE_DESC
_VALID_URLr  _NETRC_MACHINEr?  r>  _TESTSr   r   r   r  classmethodr6  staticmethodr#  rd  r  r  r  r   r   r0   r0   5   s	   ;GJGN~ A1#%
 ~  5

 
~4 m125#%
/~N @$	
 #F+I~d O36

 
_~x {1h,AK#%

 $i-(1L%MN!s~Z L8;#%
 #F+U~t n

 #F+
o~H J8;#%
 #D)C~` U$	
 #L1[~v h$;

 #F+
q~J L,
 "D)	E~\ ;>'A

  
W~p 9;%A

 "D)k~D s v-A

  	A~X 13)A

  
S~l A1 #AW
g~D FeAD	
 ~Z Y2
 	U~n G#%
 #F+g~H }
-
5
 Q
 	

 J
 ;-
 1
 %c
 4
 U
 

 A
 
 #
 :
  '!
"  #
$ ;#%23L3
6 +? C~H C8jP!1 2
	C~` +/F#%	
 #F+[~~ 5J

 
y~R	 C1:A*Y
M	~n	 81v)V
g	~H
 O1;A3Y
 77A
~j
 G*
a
~~
 519-^
w
~V 'P!3 4	
	Q~r "1"A<!/ 0
 V$m~N wXA>#%	
 $i-(1L%MNI~l _6:A?#%	
 $i-(1L%MNg~J $N!AN#%

	E~h a$	
 #F+c~~ I
-
5
 O
 	

 H
 ;-
 
 %c
 4
 U
 S
 A
 
 {
 #
  :!
" '#
$ "&;#%''@5
8 +A!y~@ n
-
5
 ;
 	

 H
 ?+
 {
 %c
 4
 "4
 U
 S
 A
 
 #
  :!
" '#
$ "&;#%#&?5
8 +A!{~F@Rc5@n(
T Q Q, 
 
 (
TY$v 59B } }r   r0   );r  r   r  urllib.parser   xml.etree.ElementTreer  commonr   commonprotocolsr   youtuber   compatr   cookiesr	   networking.exceptionsr
   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-   utils._utilsr.   r0   r  r   r   <module>r/     sj    	 	    ! #  , ) - 6# # # # # # # # #H 1^ ^r   