
    uki                     *   d dl Z e j                  dk  r ed      dZd dlZd dlZ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mZ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 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( ddl)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZG ddlHmIZJmKZLmMZNmOZP ddlQmQZQ d(dZRd ZSd ZTd ZUd ZVd ZW ej                  dd      ZYd)dZZd)dZ[d)dZ\ddlm]Z]m^Z^ dd lm_Z_m`Z` eLe_j                  d!<   eNe_j                  d"<   eJe_j                  d#<   ePe_j                  d$<   e`j                  j                  d%       e`j                  j                  d&       g d'Zcy)*    N)   
   zkYou are using an unsupported version of Python. Only Python versions 3.10 and above are supported by yt-dlpzThe Unlicense   )SUPPORTED_BROWSERSSUPPORTED_KEYRINGSCookieLoadError)get_external_downloader)list_extractor_classes)MSO_INFO)ImpersonateTarget)IN_CLIplugin_dirs)	parseOpts)load_all_plugins)	FFmpegExtractAudioPPFFmpegMergerPPFFmpegPostProcessorFFmpegSubtitlesConvertorPPFFmpegThumbnailsConvertorPPFFmpegVideoConvertorPPFFmpegVideoRemuxerPPMetadataFromFieldPPMetadataParserPP)Updater)
NO_DEFAULTPOSTPROCESS_WHEN	DateRangeDownloadCancelledDownloadErrorFormatSorterGeoUtilsPlaylistEntriesSameFileErrordownload_range_funcexpand_pathfloat_or_noneformat_fieldint_or_nonejoin_nonemptymatch_filter_funcparse_bytesparse_durationpreferredencodingread_batch_urls
read_stdinrender_tablesetproctitleshell_quotevariadicwrite_string)_UnsafeExtensionError)BunJsRuntimeDenoJsRuntimeNodeJsRuntimeQuickJsRuntime)	YoutubeDLc                 d    |D ]!  }t         j                  j                  |       # t        |       N)sysstderrwrite
SystemExit)statusargsmsgs      J/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/yt_dlp/__init__.py_exitrE   L   s.     


V
    c                    g }|W	 t        |dk(  rt        |dk(  rdnd      nt        t        |      dd            }|dk(  rt	        d	t        |      z   d
z          t               }|| z   D cg c]B  }t        |t              r |j                         j                  |d      n|j                         D c}S # t        $ r t        d| d       Y uw xY wc c}w )z>
    @param verbose      -1: quiet, 0: normal, 1: verbose
    N-URLszutf-8ignore)encodingerrorsr   z[debug] Batch file urls: 
zERROR: batch file z could not be read)r.   r/   openr%   r4   reprOSErrorrE   r-   
isinstancebytesstripdecode)urls	batchfileverbose
batch_urls_encurls         rD   get_urlsr\   R   s     J	F(AJcAQ
7b=4f=+i078TVJ !|84
;KKdRS D $& /9e.D		4*#))+U& &  	F&yk1CDE	F&s   AB7 -AC7CCc                 ~  
 d}| j                   rddlm} t        j	                  |d      }t        | j                        D ]  }||j                  |j                         sdndz   dz   z  }||k(  r&|j                         D cg c]
  \  }}|r	| }}}nRt        t        |j                  |j                                     }|j                  t        j	                  |d             |dj                  d |D              z  } n| j                   r0d	
dj                  
fd
t        | j                        D              }nU| j"                  rHdj%                  t'        ddgt)        j                         D 	cg c]  \  }}	||	d   g c}	}            }nyt+        |t,        j.                         yc c}}w c c}	}w )N r   )	GenericIEFz (CURRENTLY BROKEN)rN   Tc              3   (   K   | ]
  }d | d  yw)z  rN   N ).0r[   s     rD   	<genexpr>z.print_extractor_information.<locals>.<genexpr>t   s     @CRuB<@s   )zcute kittenszslithering pythonszfalling catzangry poodlezpurple fishzrunning tortoisezsleeping bunnyzburping cowc              3      K   | ]5  }|j                         r#|j                  d ur|j                  d        7 yw)F)markdownsearch_examplesN)workingIE_DESCdescription)rb   ie	_SEARCHESs     rD   rc   z.print_extractor_information.<locals>.<genexpr>w   s?      j

QSQ[Q[chQh NNE9NEjs   ;>zSupported TV Providers:
{}
msozmso namename)out)list_extractorsextractor.genericr_   dictfromkeysr
   	age_limitIE_NAMErg   itemstuplefiltersuitablekeysupdatejoinlist_extractor_descriptionsap_list_msoformatr0   r   r4   r=   stdout)optsrV   rn   r_   rj   r[   matchedmatched_urlsmso_idmso_infork   s             @rD   print_extractor_informationr   f   s   
C0}}T5)(8 	AB2::bjjl!6PRSVZZZCY8<

TWGTT$VBKK%EFDMM,=>277@<@@@C	A 
	)	) ^	ii j,T^^<j j 
		-44\J@H@PQ,<FHfhv&'Q6S T #**%#  U Rs   
F3F38F9c                      fdd fd	} |ddd        |dd        |d	d
       d j                   v r j                  r	 d       nd _        d j                   v r* j                  j                  t        j
                         n'd j                   v rt        j                  t        _        d j                   v r j                  d _        n d        |dddd      } |dddd      }|du r|du r d       d j                   v rB j                  j                  d       j                  j                  ddi       y  d       y y )Nc                     | j                   vryj                   j                  |        j                   j                  d|  g       y)NF*T)compat_optsdiscardrz   )rm   r   s    rD   _unused_compat_optz+set_compat_opts.<locals>._unused_compat_opt   sG    t'''  &1TF-rF   Tc                     t        |      }| j                  v r|t        ||        y|r |        y|t        ||       y )NTF)getattrr   setattr)compat_nameopt_namedefaultremove_compatattrr   r   s        rD   set_default_compatz+set_compat_opts.<locals>.set_default_compat   sU    tX&$***|hG4 &{3\D(G,rF   zabort-on-errorignoreerrorsonly_downloadzno-playlist-metafilesallow_playlist_fileszno-clean-infojsonclean_infojsonzno-attach-info-jsonFzformat-sortzprefer-vp9-sortzmtime-by-defaultmultistreamsallow_multiple_video_streams)r   allow_multiple_audio_streamsfilenamer   z%(title)s-%(id)s.%(ext)s)TT)r   embed_infojsonformat_sortextendr    ytdl_default_prefer_vp9_sortr   
updatetimeouttmplgetrz   )r   r   _video_multistreams_set_audio_multistreams_setr   s   `   @rD   set_compat_optsr      sP    'I.0FG*,<= 0 0045"'D((( 9 9:	d..	.+<<T---??""DO120A_afv{|0A_afv{|%',Cu,L>*T%%%<<I&.LL,F GHz*	 &rF   c                     %&' d]d%d%fd	}%fd}d%fd	&dd} %t        t        t         j                   j                   j
                  f            dk  dd	
        % j                  d u xs  j
                  d udd
        % j                  d u xs  j                  d udd
        |d j                  t        d        &d j                          &d j                  d        &d j                  d        &d j                  d        j                  dk7  r | j                   j                  dd        &d j                           &d j"                          &d j$                          &d j&                          j$                   % j&                  d u dd
       n< j&                   j$                   _        n | j$                   j&                  d        j(                  qt        t*        g  j(                  j-                  dd      d       ^}}} %|d uxr |d u xr d j(                  v  d j(                          |||d       ||f _         j.                  D ]  } |d|t0        j2                           j4                  d k(  rd  _         j6                  d k(  rd  _         |d! j8                  d"j;                  d#j=                  t        t>        j@                  tB        jD                                            |d$ jF                  tH        jJ                          |d% j4                  tL        jD                          |d& j6                  tN        jJ                          |d' jP                  tR        jJ                          |d( jT                  tV        jJ                          jX                  rV jX                  j[                  d)      j[                  d*       _,         &d+t]        t_         jX                        d,-             %&fd.} |d/ j`                         _0         |d0 jb                         _1         |d1 jd                         _2         |d2 jf                         _3        d3 }	 jh                  jk                         D ]+  \  }
}|s jh                  |
= 	  |	|       jh                  |
<   - d%&fd6	} |d7 jp                  d       _8         |d8 jr                         _9         |d9 jt                         _:         |d: jv                         _;         |d; jx                  d       _<         |d< jz                         _=        d= } j|                  jk                         D ]  \  }} ||| d>         j~                  jk                         D ]  \  }}|D ]  } ||| d?          j                  jk                         D ]'  \  }}|D ]  \  }} ||| d@        ||| dA        )  | j                  dB        j                  jk                         D ]"  \  }}dC|v r|d dD  dEn| dF} ||| dG       $  j|                  j                  dH      }|dIk(  rd  _D         j|                  dH= ddJ} |dK j                        \   _E         _F        }t         |dL j                  d        _H         j                  rd }t?        j                  dM j                        }|to        dN j                         |j                  dOdPdQdR      \  }}}}|j                         }|t        vr-to        dS| dTdUj=                  t        t                           |E|j                         }|t        vr-to        dV| dWdUj=                  t        t                           ||||f _I         j                  2t        j                   j                  j                                _Q        dX } j                  8 j                  j                  dYg       j                  dZ j                           j                  jk                         D ci c]+  \  }}|t        t        j                  t        ||             - c}} _U         j                   _[         j                  dHg _[         j                  )	 t        t        j                   j                               d]\   _a         _b         j                  j                         d^vr[	 t        j                   j                         t         j                        dak(  r j                   _a        n j                   _b         j                  j                         dbk7   _c        t         j                   j                         _h         j                  t         j                         _j         j                  t         j                         _l         j                  & j                  j                  dc j                          j                  & j                  j                  dd j                          j                  rt               x _r         _s        d } j                  jk                         D ]P  \  }}|dek(  rt        |      } | to        dft        |d dgdHh       di| d`      | s;|dHk(  sA| j                         }R  j                  j                         D ]  }!|!djvsto        d`|! dk       g g c'}" j:                  dlk(  r 'j                  dmj=                  dn              j:                  dok(  r 'j                  dmj=                  dp             d]'fdq	}# |#dr j                  dH|s      r7|r5 j                  j                  | j                  j                  dH              |#dt j                  dudH      r( j                  j                  du       j                  dH<   dvdwt        t        df 'fdx	}$ |$dydzd{d|        |$dydzd}d~        |$d{d|d}d~        |$ddddd -        |$ddddd -        |$dddd j                  j                  d              |$dddd j|                  j                  dH              |$dddd        |$dd        |$dd        |$dd        |$dd        |$dd        |$dd        |$dd j                  dvdb        |$dd        |$dKdg -        |$dd        |$ddt               -        |$dd       t         d      r1|"j                  ddUj=                   j                         d        ` j                  r"t        j                   j                        n"t         j
                   j                         _         j                  r j                   j                  d<    j                  rd j|                  dH<    j                  rd _         j                  s j                  r j                  d _         j                  r  j                  s j:                  d _         j                  rH j                   ; j"                  s. j$                  r j&                  s j(                  rd _         j*                  r! j,                  s j.                  sd _         j                  r j"                  d _         j
                  ( j                  t3        j2                  d       _         j                  ( j                  t3        j2                  d       _        d j4                  v r'j                  d       ddt6        _        '|"fS # tl        $ r to        d4|
 d5|      w xY wc c}}w # t        $ r }to        d[ j                  d\|       d }~ww xY w# t        $ r to        d_ j                   d`      w xY w)Nc                 H    | ryt        |xs dj                  ||            )NTzinvalid {name} "{value}" given)rm   value)
ValueErrorr~   )cndnrm   r   rC   s       rD   validatez"validate_options.<locals>.validate   s*    #A!AIIt[`IabbrF   c                 *     |d u xs ||v | ||      S r<   ra   )rm   r   ru   rC   r   s       rD   validate_inz%validate_options.<locals>.validate_in   s!    7%ucJJrF   c                 L     |d u xs t        j                  ||      | |      S r<   )rematch)rm   r   regexr   s      rD   validate_regexz(validate_options.<locals>.validate_regex   s&    ?%)?uMMrF   Fc                 ^     |d u xs |dkD  xs
 | xr |dk(  | |d|rdz         S dz         S )Nr   z!{name} "{value}" must be positiver^   z or 0ra   )rm   r   strictr   s      rD   validate_positivez+validate_options.<locals>.validate_positive   sS    QQ6z7Peqje%HRXB%fh 	h^e%fh 	hrF   c           
      \    || || k\  ry |s
d| d| }}t        | d| d| d|  d      )Nzmin zmax  "z+" must be must be greater than or equal to ")r   )min_valmax_valmin_namemax_names       rD   validate_minmaxz)validate_options.<locals>.validate_minmax   sZ    ?goG1C#'z!2d8*4EhHH:Ry0[\d[eeghogppqrssrF   r   z.netrczJ{name}, netrc command and username/password are mutually exclusive options)rC   zaccount usernamez{name} missingzTV Provider account usernamezTV ProviderzWUnsupported {name} "{value}", use --ap-list-mso to get a list of supported TV Providerszautonumber startzautonumber sizeTzconcurrent fragmentszplaylist startrI   zplaylist endzsubtitles sleep intervalzrequests sleep intervalzsleep intervalzmax sleep intervalzmin sleep intervalz2{name} must be specified; use --min-sleep-intervalrH   ztime range to wait for videozformat sortingnonezmerge output formatz({0})(/({0}))*|zaudio formatzsubtitle formatzthumbnail formatzrecode video formatzremux video formatkKzaudio qualityr   )r   c                     |y |dv rt        d      S 	 t        |      } |  d       |S # t        t        f$ r  d|  d|       Y ,w xY w)Ninfinfiniter   Fz retry count)floatint	TypeErrorr   )rm   r   	int_valuer   r   s      rD   parse_retriesz'validate_options.<locals>.parse_retries  sn    =))<	:E
I 	TF,/; :& 	:UtfL159	:s   . AAdownloadfragment	extractorzfile accessc                     d}g t        t        j                  d| d| d| d| j                               j	                               d d ^}}|dk(  rfdS |srndfd	S )
Nz\d+(?:\.\d+)?z(?:(linear|exp)=)?(z)(?::(z	)?)?(?::(z))?expc                 n    t        t              t        xs d      | z  z  t        xs d            S )N   r   minr   )nlimitstartsteps    rD   <lambda>z<validate_options.<locals>.parse_sleep_func.<locals>.<lambda>%  s/    Sutyq1AQ1F!Gu~X]I^_ rF   r   c                 n    t        t              t        xs       | z  z   t        xs d            S )Nr   r   )r   default_stepr   r   r   s    rD   r   z<validate_options.<locals>.parse_sleep_func.<locals>.<lambda>(  s3    Sud6Jl0Ka0O!OQVW\We`eQfg rF   )rv   r   	fullmatchrT   groups)expr	NUMBER_REop_r   r   r   r   s       @@@@rD   parse_sleep_funcz*validate_options.<locals>.parse_sleep_func  s    $	&1uR\\"9+VI;i	{RUVJJL. &(($ &1%)&1+/&1"E5$ ;__$&%5QLggrF   invalid z retry sleep expression c                 T    |y t        |      } |d u| |       |r
 | |d       |S )NT)r+   )rm   r   strict_positivenumeric_limitr   r   s       rD   validate_bytesz(validate_options.<locals>.validate_bytes4  s;    =#E*d*D%8dM48rF   z
rate limitzthrottled rate limitzmin filesizezmax filesizezbuffer sizezhttp chunk sizec                 Z    t        j                  |       }|rt        d| d|  d|       y )Nr   r   z": )r:   validate_outtmplr   )tmplrC   errs      rD   r   z*validate_options.<locals>.validate_outtmplE  s8    ((.xuBtfCu=>> rF   z output templatez print templatez print to file templatez print to file filenamezSponsorBlock chapter titlez-titleiz console titlez	 progressz	 templater   r^   c           
      |   d }d}g g d}}}|xs g D ]t  }|r|dk(  rd}|j                  d      s&	 |j                  t        j                  |             Et        t        j                  |d
d  j                  d            D ]   }
|
dk7  xr t        j                  ||
      }|xr6  ||j                  d      xs d       ||j                  d      xs d      g}|xr" |j                  d      |j                  d      f}d }	d |xs d gv rd}	nK|st        |      rd}	n;|dxx   |d   rdnd
z  cc<   |d
xx   |d
   rdnd
z  cc<   |d
   t        d      k(  rd}	|	rt        d|  d| d|	       |j                  |        w |||fS # t        j                  $ r}	t        d|  d| d	|	       d }	~	ww xY w)Nc                 6    | dv rt        d      S t        |       S )Nr   r   )r   r,   )xs    rD   r   z:validate_options.<locals>.parse_chapters.<locals>.<lambda>^  s    A9L4LE%L R`abRc rF   z(?x)(?:
            (?P<start_sign>-?)(?P<start>[^-]+)
        )?\s*-\s*(?:
            (?P<end_sign>-?)(?P<end>[^-]+)
        )?Fz	*from-urlTr   r   z regex "z" - r   ,rH   r   0endr   
start_signend_signz Must be of the form "*start-end"z#Negative timestamps are not allowedr   rI   z-infz"-inf" is not a valid endz time range "z". )
startswithappendr   compileerrorr   mapstrrT   splitr   groupanyr   )rm   r   advancedparse_timestampTIMESTAMP_REchaptersrangesfrom_urlr   r   range_mobjdursignss                 rD   parse_chaptersz(validate_options.<locals>.parse_chapters]  s   c &(U(&[b 	#EE[0%%c*POOBJJu$56 ciiqr)=> #}KlF)Ky

70C0Js K_]a]g]ghm]n]wrwMxyS$**\":DJJz<R!SCMD6*<C!c%j?CFE!Hb!3FFE!Hb!3F1vv.9$xv]5'SE%RSSc"##	#< ))/ xx P$xvXeWD%NOOPs   $FF;"F66F;z--remove-chaptersz--download-sectionsz(?x)
            (?P<name>[^+:]+)
            (?:\s*\+\s*(?P<keyring>[^:]+))?
            (?:\s*:\s*(?!:)(?P<profile>.+?))?
            (?:\s*::\s*(?P<container>.+))?
        z(invalid cookies from browser arguments: rm   keyringprofile	containerz,unsupported browser specified for cookies: "z". Supported browsers are: z, z,unsupported keyring specified for cookies: "z". Supported keyrings are: c              3      K   t         t              r&dt                }	 t        j                         g}n+dt                } fd d   j                  d      D        }|D ]  }	 t        j                  |  |  y # t
        $ r}t        | d|       d }~ww xY w# t
        $ r}t        | d|       d }~ww xY ww)Nz--parse-metadata z is invalid; z--replace-in-metadata c              3   b   K   | ]&  }t         j                  j                  |gd d  ( yw)r   N)r   ActionsREPLACE)rb   r   fs     rD   rc   zCvalidate_options.<locals>.metadataparser_actions.<locals>.<genexpr>  s.     ^(0088!DaeD^s   ,/r   r   )
rR   r   r2   r   	to_action	Exceptionr   r   r   validate_action)r  cmdactionsr   actions   `    rD   metadataparser_actionsz0validate_options.<locals>.metadataparser_actions  s     a%k!n%56C=.88;< +;q>*:;C^aPQdjjY\o^G 	F= 00&9 L	  = C5cU!;<<=  = C5cU!;<<=sK   CB 1C+B%=C	B"BB""C%	C.B>>CCpre_processztitle:zInvalid playlist-items z: )NN)r   neverzUnsupported --xff "r   r   r  z
User-AgentReferernativezNo such z%s )rK   zexternal downloader ")alwaysautozauto-ttyno_colorzno_color-ttyr  z" is not a valid color policybestz.
         )zO"-f best" selects the best pre-merged format which is often not the best optionzdTo let yt-dlp download and merge the best available formats, simply do not pass any format selectionztIf you know what you are doing and want only the best pre-merged format, use "-f b" instead to suppress this warningmp4)zR"-f mp4" selects the best pre-merged mp4 format which is often not what's intendedzbPre-merged mp4 formats are not available from all sites, or may only be available in lower qualityzYTo prioritize the best h264 video and aac audio in an mp4 container, use "-t mp4" insteadzuIf you know what you are doing and want a pre-merged mp4 format, use "-f b[ext=mp4]" instead to suppress this warningc                 p    ||v r1||vr-j                  | j                          d|xs d|  d        yy)NzI arguments given without specifying name. The arguments will be given to zall sTF)r   title)rm   r   key1key2wherewarningss        rD   report_args_compatz,validate_options.<locals>.report_args_compat  sM    5=T.OOtzz|n ->>C>UdVST~=VX YrF   zexternal downloader)r&  zpost-processorzdefault-compatz--allow-unplayable-formatsallow_unplayable_formatsc                     |t         u rt        |      }|sy |t         u rt        |      }|rj                  |  d| d       t        ||       y )Nz is ignored since z
 was given)r   r   r   r   )	arg1opt1arg2opt2val1val2r   r   r'  s	          rD   report_conflictz)validate_options.<locals>.report_conflict  sZ    :4&D:4&DOOtf$6tfJGHdG$rF   z--playlist-reverseplaylist_reversez--playlist-randomplaylist_randomz--lazy-playlistlazy_playlistz--dateafter	dateafterz--datedatez--datebefore
datebeforez--exec-before-downloadexec_before_dl_cmdz"--exec before_dl:"exec_cmd	before_dl)r0  z--iduseidz--outputr   z--remux-video
remuxvideoz--recode-videorecodevideoz--embed-metadataaddmetadataz--embed-chaptersaddchaptersz--embed-info-jsonr   z--embed-subsembedsubtitlesz--embed-thumbnailembedthumbnailz--extract-audioextractaudioz--fixupfixup)Nr  rK   )r/  r   remove_chaptersz--sponsorblock-removesponsorblock_removez--xattrsxattrs_deprecated_optionsz,The following options have been deprecated: z
Please remove them from your command/configuration to avoid future errors.
See  https://github.com/yt-dlp/yt-dlp/issues/14198  for more detailsz%(id)s.%(ext)szbestaudio/best	if_existsz*Type account password and press [Return]: z6Type TV provider account password and press [Return]: zallow-unsafe-extzNUsing allow-unsafe-ext opens you up to potential attacks. Use with great care!c                     | S r<   ra   )r   prepends     rD   r   z"validate_options.<locals>.<lambda>m  s    A rF   r<   )F)sumr   boolusenetrc	netrc_cmdusernamepasswordap_passwordap_usernameap_msor   autonumber_startautonumber_sizeconcurrent_fragment_downloadsplayliststartplaylistendsleep_interval_subtitlessleep_interval_requestssleep_intervalmax_sleep_intervalwait_for_videor,   r   r   r    r   convertsubtitlesconvertthumbnailsmerge_output_formatr~   r{   r   escaper   SUPPORTED_EXTSaudioformatr   	FORMAT_REr   r   r=  r   r<  r   audioqualityrT   r(   r&   retriesfragment_retriesextractor_retriesfile_access_retriesretry_sleepru   AttributeErrorr   	ratelimitthrottledratelimitmin_filesizemax_filesize
buffersizehttp_chunk_sizer   
forceprintprint_to_filesponsorblock_chapter_titleprogress_templater   skip_downloadrD  remove_rangesr$   download_rangescookiesfrombrowserr   r   lowerr   sortedupperr   impersonater   from_strmetafromtitleparse_metadata
setdefaultr   list	itertoolschainr   playlist_itemsrv   r"   parse_playlist_itemsr  geo_bypass_countrygeo_bypass_ip_block
geo_bypassr!   random_ipv4lenr*   match_filterbreaking_match_filterdownload_archiver%   ffmpeg_location
user_agentheadersrefererno_sponsorblocksetsponsorblock_markrE  external_downloaderr	   r'   get_basenamecolorvaluesexternal_downloader_argspoppostprocessor_argsr   r9  rC  hasattrrG  r6  r   dayr5  r7  r8  r;  
overwritescontinue_dlr>  r?  rB  	keepvideogetcommentswriteinfojsonr   dumpjson
print_jsondump_single_jsonallsubtitlesr@  writeautomaticsubwritesubtitlesgetpassr   r5   sanitize_extension)(r   r   r   r   min_waitmax_waitr   r  r   r   keyr   r   r   r   r   type_	tmpl_listfileouttmpl_defaultr  r  r  browser_namer	  r
  r  vr   default_downloaderprotopathedpolicydeprecation_warningsr(  r1  r   r   r'  s(   `                                    @@@rD   validate_optionsr     s   c
KNht STDMM4>>4==IJKqPRZ]_T]]d"?dmm4&?ASYijT%E)9)9)E+1ACt{{Hik ($*?*?@')=)=tD,d.P.PRVW&(:(:DA2**D,<,<>NP^_ 0$2O2OP/1M1MN&(;(;<*D,C,CD"##t+-AD	F 
	 	 	("&"5"5++T-D-DFVW&!$^5_t7J7J7P7PQTVW7X5_Z^5_!`(Q%_x4/?/^C4K^K^D^*_/1D1D	F(,JK'2  @'L,>,>?@ & $'!%($*B*B$++CHHSNDaDa5b,cdf>4#3#35I5S5ST!4#8#8:T:c:cd%t'='=?Z?d?de($*:*:<R<\<\]':N:X:XY --33C8>>sC/;}TEVEV7Wab+cd
 !T\\:DL)*d6K6KLD*;8N8NOD,]D<T<TUD
h %%++- O	T  %	O$4T$:DS!O $L$..$GDN,-CTE\E\]D&~t7H7HID&~t7H7HID$]DOOTJDO)*;T=Q=QRD?
 <<%%' 74!$4567 OO113 >y 	>DTeWO#<=	>> !..446 Fy# 	FJD$TeW,C#DETeW,C#DE	FF T446RS))//1 04)1Qq"vhn%qcO!I/0 ll&&y1O"!LL#'*R 3AATVZVjVj2k/D$,a.?TVZVjVjlp0qrD 	|| 
 $$& <GH_H_G`abb48JJvyR[]h4i1gw	#))+11KL> Z88<		&I[B\8]7^` a ammoG00 #OPWy Y<<@IIfM_F`<a;b"d e e#/'9"M#,55d6F6F6L6L6NO$ %&&}b9@@6$J\J\I]A^_ ''--/Aq 	
4	%;Q!?@AAD ''D%;&	W/66t7J7JKL 9C5DT5&::	G  1 t1$&*ooD#'+D$oo++-8DO)$*;*;T=W=WXD( +D,A,A B'*4+?+?@"doo>||	4<<8<?EA!9//557 3t8$T*:<tU9MNNcdhciijkm mEY&!#!23 **##% H\\q(EFGGH &("H" {{f++ -D E 	F {{e++ -E F 	G /1N1N#+=?CU%%001CTEbEbEfEfgpEqr*D,C,CEUW`a-1-D-D-H-HIY-Z	*)ELf'j%% (*<>QSde(*<>OQ`a'):<M_M;&$ONL(FDQ,.B):DMM<M<Mk<Z\FGZAQAQR[A\]O\3C]S &6&6')9:N$45')9:%~6IwTZZ?X-Xbij$m4'):BGO\2+-BCERJ)t*+##:499TE]E];^:_ `S S	T $ -1II	dii(9T^^UYUdUd;eDI%)%<%<k"zz"2Y D228H8H8PDKK4G&D..6t?R?R}}43H3H!%D$"5"59O9O"D//7) }} T]]%:(TU#(8(8(@"??+cd T---#	$ 4N0)))	  	Oxu,DTHMNN	OP  	W6t7J7J6MRPSuUVV	W  	G24??2C1EFF	GsB   90A@-(A@ AA	 9A@@	AA@&AAAAAA	#AA,c              #   h  K   | j                   E d {    | j                  j                         D ]  \  }}d||d  | j                  | j                  z  }|rd|| j
                  dd | j                  rd| j                  dd | j                  rd	| j                  dd | j                  r'd
| j                  | j                  | j                  d | j                  rd| j                  d | j                  rd| j                  d | j                  r8d| j                  v}d| j                   xr |d | j"                  s	|rd| _        | j$                  s|r=d| j$                  | j                  | j&                  | j(                  | j*                  d | j,                  s| j.                  s| j0                  r'd| j.                  | j,                  | j0                  d | j2                  r3d| j4                  d | j4                  sd| _        d| j6                  d<   | j8                  rd| j*                  d | j:                  rddi | j<                  dk7  rd | j<                  d!k7  d"d# | j>                  j                         D ]  \  }}d$||d%  y 7 w)&NMetadataParser)r  r  whenSponsorBlockafter_filter)r  
categoriesapir  FFmpegSubtitlesConvertorr:  )r  r~   r  FFmpegThumbnailsConvertorFFmpegExtractAudio)r  preferredcodecpreferredqualitynopostoverwritesFFmpegVideoRemuxer)r  preferedformatFFmpegVideoConvertorzno-keep-subsFFmpegEmbedSubtitle)r  already_have_subtitleTModifyChapters)r  remove_chapters_patternsremove_sponsor_segmentsrw  rt  force_keyframesFFmpegMetadata)r  add_chaptersadd_metadataadd_infojsonEmbedThumbnail)r  already_have_thumbnailr^   pl_thumbnailFFmpegSplitChapters)r  r  r  XAttrMetadatar  FFmpegConcatr  playlistr  only_multi_videor  Exec)r  r9  r  ) add_postprocessorsr  ru   r  rE  sponsorblock_apir^  r_  rB  rc  re  r  r<  r=  r@  r   r  r  rD  rw  rt  force_keyframes_at_cutsr>  r?  r   rA  writethumbnailr   split_chaptersrF  concat_playlistr9  )r   r  r  sponsorblock_query	keep_subsr9  s         rD   get_postprocessorsr  r  s    &&&&,,224 
g#
 	

 //$2J2JJ!,(("	
 	
 -++
 	

 .,,
 	

 '".. $ 1 1 $ 5 5	
 	
 '"oo
 	
 )"..
 	

 "$*:*::	(%)%8%8%FY
 	

 %%)"&D 1#(,(<(<'+'?'?!//*.*I*I#;;
 	
 4++t/B/B# ,, ,, //	
 	
 #&*&9&9
 	

 """&D+-DLL((#;;
 	

 {{o&&w&! $ 4 4 @
 	
 ----/ 
h 
 	

O 's   J2J/JJ2ParsedOptions)parseroptionsrV   ydl_optsc                    t        |       \  }}t        |j                  j                  rj                  sdnj                        }t               	 t              \  }}t        t                    }t        j                        xr t        fdt        dd D              }t        fddD              }j                  ,|xs# j                   xs t        j                        _        |D 	cg c]  }	|	j#                  d      d	k(  s|	 }
}	j$                  xr; j&                   xr, j(                  xr j*                  j#                  d
      dk7  }t        j,                  j.                  j                  j#                  d	      j0                  j#                  d	      |f      s|
sd_        n|
ddd	dgk(  rd_        j2                  t4        j6                  v rj2                  n]j8                  t:        j6                  v rj8                  n5j<                  r(j>                  t@        j6                  v rj>                  nd}d jB                  D        D ci c]  \  }}|jE                         d|i }}}tG        ||i djH                  djJ                  djL                  djN                  djP                  djR                  djT                  djV                  djX                  djZ                  dj\                  dj^                  dj`                  d j                  d!jb                  d"jd                  d#jf                  i d$jh                  d%jj                  d&jl                  d'jn                  d(jp                  d)jr                  d*j                  d+j0                  d,jt                  xs j                   d-j.                  d.jv                  d/jx                  
|xs |xs dnjx                  d0jz                  d1j|                  d2j~                  d3j                  d4j                  i d5j                  d6j                  d7j                  d8j                  d9j                  d:j                  d;j*                  d<j                  d=j                  d>j                  d?j                  d@j                  dAj                  dBj                  dCj                  dDj                  xs dEgdFj                  i dGj                  dHj                  dIj                  dJj                  dKj                  dLj                  dMj                  dNj                  dOj                  dPj                  dQj                  dRj                  dSj                  dTj                  dUj                  j                  nj                  dVj                  dWj                  i dXj                  dYj                  dZj                  d[j                  d\j                  d]j                  d^j                  d_j*                  j#                  dE      d`k(  daj                  dbj                  dcj                  ddj                  dej$                  dfj(                  dgj&                  dhj                  dij                  du i djj                  dkk(  dlj                  dmj                  dnj                  doj                  dpj                  dqj                  drj                  dsj                  dtj                  duj                  dvj                  dwj                  dxj                  dyj                  dzj                  d{j                  i d|j                  d}j                   d~j                  dj                  dj                  dj                  dj
                  dj                  dj                  dj                  dj                  dj                  dj                  dj                  dj                  dj                  dj                  i dj                   dj"                  dj$                  dj&                  dj(                  dj*                  dj,                  dj.                  dj0                  dj2                  dj4                  dj6                  dj8                  dj:                  dj<                  dj,                  dj>                  i dj@                  djB                  djD                  d|d|djF                  djH                  djJ                  djL                  djN                  djP                  djR                  djT                  djV                  djX                  djZ                  dj\                  i dj^                  dj`                  djb                  djd                  djf                  djh                  djj                  djl                  djn                  djp                  djr                  djt                  djv                  xs dd|djx                  djz                  du dj|                  d      S # t        $ r}|j                  | d       Y d}~d}~ww xY wc c}	w c c}}w )z4@returns ParsedOptions(parser, opts, urls, ydl_opts)rI   rN   Nc              3   :   K   | ]  }|j                   v  y wr<   )rr  rb   r   r   s     rD   rc   z parse_options.<locals>.<genexpr>  s     .fAq/G.fs   r   c              3   6   K   | ]  }t        |        y wr<   )r   r  s     rD   rc   z parse_options.<locals>.<genexpr>  s      1gdA& s   )
r  r  getdescriptiongetdurationgetfilename	getformatgetidgetthumbnailgettitlegeturlr  r  pl_infojsonr^   r   r  Tr  discard_in_playlistc              3   N   K   | ]  }g |j                  d d      ddd   yw):r   Nr   )r   )rb   args     rD   rc   z parse_options.<locals>.<genexpr>  s4      >H/2&ciiQ&&r*>Hs   #%r  rM  netrc_locationrN  rO  rP  	twofactorvideopasswordrS  rR  rQ  client_certificateclient_certificate_keyclient_certificate_passwordquietno_warningsforceurl
forcetitleforceidforcethumbnailforcedescriptionforcedurationforcefilenameforceformatrr  rs  	forcejsonr  force_write_download_archivesimulaterv  r~   r)  ignore_no_formats_errorr   format_sort_forcer   r   check_formatslistformatslistformats_tabler   outtmpl_na_placeholderpathsrU  rT  restrictfilenameswindowsfilenamesr   force_generic_extractorallowed_extractorsr   rl  rm  r  rf  ri  rg  rh  retry_sleep_functionsskip_unavailable_fragmentskeep_fragmentsrV  rp  noresizebufferrq  
continuedl
noprogressprogress_with_newlineru  progress_deltarW  rX  playlistreverseplaylistrandomr4  
noplaylistlogtostderrrH   consoletitlenopartr   writedescriptionr  r   r   r  r  write_all_thumbnailsall	writelinkwriteurllinkwritewebloclinkwritedesktoplinkr  r  r  listsubtitlessubtitlesformatsubtitleslangs
matchtitlerejecttitlemax_downloadsprefer_free_formatstrim_file_namerX   dump_intermediate_pageswrite_pages
load_pagestestr  rn  ro  	min_views	max_views	daterangecachedirrs   r  break_on_existingbreak_on_rejectbreak_per_urlskip_playlist_after_errors
cookiefilery  legacyserverconnectnocheckcertificateprefer_insecureenable_file_urlshttp_headersproxysocket_timeoutbidi_workarounddebug_printtrafficdefault_searchdynamic_mpdextractor_argsrL   extract_flatlive_from_startr]  mark_watchedr`  	final_extpostprocessorsrC  source_addressr}  rZ  r[  r\  rY  r  rx  r  list_thumbnailsr  r  r  r  hls_prefer_nativehls_use_mpegtshls_split_discontinuityr  r  geo_verification_proxyr  r  r  r;  js_runtimesremote_componentswarn_when_outdated	_warnings)_deprecation_warningsr   )r   r\   rW   r  rX   r   r  r   r   r  r  rL  rr  r,  r   r   r  r   r  r   r   r   rR  r  rs  r=  r   rb  r<  r   rB  rc  r   r]  rz  r  rM  r  rN  rO  rP  r  r   rS  rR  rQ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rv  r~   r)  r  r   r  r   r   r  r  r  r  r  rU  rT  r  r  r   r  r  rl  rm  r  rf  ri  rg  rh  rj  r  r  rV  rp  r  rq  r  r!  r"  ru  r#  rW  rX  r2  r3  r4  r&  r(  r)  r   r*  r  r  r-  r.  r/  r0  r  r  r  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r  rn  ro  r=  r>  r6  r@  rs   r  rA  rB  rC  rD  rE  ry  legacy_server_connectno_check_certificaterH  rI  r  rK  rL  rM  rN  rO  rP  rQ  rL   rS  r]  rT  r`  rC  rW  r}  rZ  r[  r\  rY  r  rx  r  rX  r  r  r  r  rY  rZ  r[  r  r  r\  r  r  r  r;  r^  update_selfr   )argvr  rV   r'  r  r   rV  
print_onlyany_gettingppplaylist_ppswrite_playlist_infojsonrU  runtimer  r]  r   s                   @rD   parse_optionsrl    sY   "4FD$D$..

4<<"UYUaUabDD!)9$)?&& ,T23Ndoo&f3.fQabcbdQe.f+fJ  1  K zz LDOOLtDOO7L
!/P2266&>Z3OBPLP#11  g$:M:M6M  g#'#<#< gAEAQAQR_A`dfAf J'z*   )Dn$Xbcdd 5D !,,0F0U0UU $3G3V3V VT__"&"3"38H8HL`LoLo8oT	 >H6:6F6F>HI,9GT&$'IK I t m.DMMm.$--m. 	T^^m. 	DMM	m.
 	DMMm. 	T^^m. 	++m. 	$++m. 	t''m. 	t''m. 	d55m. 	!$"="=m. 	&t'G'Gm. 	m. 	t''m.  	DKK!m." 	dmm#m.$ 	4::%m.& 	$++'m.( 	D//)m.* 	))+m., 	))-m.. 	t~~/m.0 	doo1m.2 	++3m.4 	T]]5doo5m.6 	D117m.8 	'(I(I9m.: 	4==;PZ6;6$VZVcVc;m.< 	++=m.> 	$++?m.@ 	#D$A$AAm.B 	"4#?#?Cm.D 	t''Em.F 	T33Gm.H 	'(I(IIm.J 	'(I(IKm.L 	++Mm.N 	t''Om.P 	T33Qm.R 	4<<Sm.T 	!$"="=Um.V 	Wm.X 	4//Ym.Z 	D11[m.\ 	T33]m.^ 	D11_m.` 	))am.b 	"4#?#?cm.d 	d55D)em.f 	T^^gm.h 	d55im.j 	dookm.l 	4<<mm.n 	t77om.p 	D11qm.r 	T33sm.t 	 !1!1um.v 	%d&E&Ewm.x 	$--ym.z 	()K)K{m.| 	doo}m.~ 	$--m.@ 	4//Am.B 	d&&Cm.D 	DOO$;djjEm.F 	 !;!;Gm.H 	T33Im.J 	$--Km.L 	++Mm.N 	t''Om.P 	400Qm.R 	$..Sm.T 	++Um.V 	dooWm.X 	t||''	2c9Ym.Z 	))[m.\ 	$++]m.^ 	doo_m.` 	D11am.b 	++cm.d 	 9 9em.f 	$--gm.h 	t''im.j 	$--5km.l 	 3 3u <mm.n 	T^^om.p 	))qm.r 	4//sm.t 	D11um.v 	$--wm.x 	T33ym.z 	)){m.| 	++}m.~ 	4//m.@ 	$--Am.B 	dooCm.D 	t''Em.F 	++Gm.H 	t77Im.J 	$--Km.L 	4<<Mm.N 	"4#?#?Om.P 	t''Qm.R 	dooSm.T 			Um.V 	T^^Wm.X 	))Ym.Z 	))[m.\ 	T^^]m.^ 	T^^_m.` 	TYYam.b 	DMMcm.d 	T^^em.f 	D11gm.h 	T33im.j 	4//km.l 	++mm.n 	%d&E&Eom.p 	dooqm.r 	d55sm.t 	t99um.v 	d77wm.x 	4//ym.z 	D11{m.| 	}m.~ 	m.@ 	$--Am.B 	4//Cm.D 	d55Em.F 	$--Gm.H 	t''Im.J 	$--Km.L 	DMMMm.N 	))Om.P 	4//Qm.R 	$--Sm.T 	))Um.V 	t77Wm.X 	YYm.Z 	.[m.\ 	]m.^ 	$--_m.` 	t''am.b 	"4#?#?cm.d 	$--em.f 	d55gm.h 	#D$A$Aim.j 	t77km.l 	4//mm.n 	"4#?#?om.p 	4//qm.r 	$--sm.t 	))um.v 	wm.x 	4//ym.z 	T33{m.| 	$--}m.~ 	"4#?#?m.@ 	#D$A$AAm.B 	d55Cm.D 	!$"="=Em.F 	dooGm.H 	d55Im.J 	t77Km.L 	#tMm.N 	{Om.P 	T33Qm.R 	d..$6Sm.T 	XUm.V "6''Ym. m mM  !uBZ  ! Q*Is*   o <pp2p	p !o;;p c                 2	   t        d       t        |       \  }}}}t        ||      ry |j                  r)t        j
                  j                  |j                         |j                  t        _        t        j                  r
t                t        |      5 }|j                  xs |j                  }|xs |j                  }|j                  r|j                  j                          	 t!        ||j                        }|j                  r7|j#                         r'|r%|j$                  r|j'                         cd d d        S |j0                  rt3        d      dft3        d      dft3        d      dft3        d      dft3        d	      d
fg}	|j5                         }
d }|
D cg c]  \  }} |||       }}}|	D ]i  \  t7        fd|
D              r|j9                  d | d      D cg c](  }|j;                  ||j<                  j>                        * c}       k |jA                  d       |jC                  tE        g d|dd             	 d d d        y |sN|r|j.                  cd d d        S | tF        jH                  dd  n| }|jK                  |       |stL        jN                  dk(  rtQ        tF        dd      rdd l)}dd l*}|jW                  d      } d|jX                  jZ                  z         }|j]                  |d      }t_        tF        d      xr< tL        j`                  jc                  tF        jd                        jg                  d      }|dk(  s|r:|dk(  r5ti        |jk                  d             |jm                          to        d       |jq                  d       |js                          	 |j                  @|r|ju                  d       |jw                  ty        |j                              cd d d        S |j{                  |      cd d d        S # t(        $ r t+        j,                          d|_        Y w xY wc c}}w c c}w # t|        $ r |jA                  d       Y d d d        yw xY w# 1 sw Y   y xY w) Nzyt-dlpd   chrome	curl_cffisafarifirefoxzcurl_cffi>=0.10edgetorzcurl_cffi>=0.11c                     t        | j                  j                         | j                  d      xs dt        | j                  xs dj                         | j
                  d      xs d|gS )NrH   )delimr^   )r)   clientr#  versionos
os_version)targethandlers     rD   make_rowz_real_main.<locals>.make_row  s\    !&--"5"5"7sSZWZ!699?"9"9";V=N=NVYZa^a rF   c              3   R   K   | ]  \  }}|v xr j                  |         y wr<   )r   )rb   r{  r|  known_handlerknown_targets      rD   rc   z_real_main.<locals>.<genexpr>  s5      ' !F*P}/G/G/PPs   $'r   z (unavailable)z$[info] Available impersonate targets)ClientOSSourcer   rH   )	extra_gaprv  r   ntfrozenFKernel32_MEIPASS_MEIzDo not double-click the executable, instead call it from a command line.
Please read the README for further information on how to use yt-dlp: https://github.com/yt-dlp/yt-dlp#readmezSYou must provide at least one URL.
Type yt-dlp --help to see a list of all options.z(URLs are ignored due to --load-info-jsonzAborting remaining downloadse   )?r1   rl  r   r  r   _ffmpeg_locationr  r   r   _load_all_pluginsr:   rd  rm_cachedirload_info_filenamecacheremover   rz   r  restartr  	traceback	print_exc_download_retcodelist_impersonate_targetsr   "_get_available_impersonate_targetsr   insert_format_outStylesSUPPRESS	to_screen	to_stdoutr0   r=   re  warn_if_short_idry  rm   r   ctypes.wintypesmsvcrtWinDLLwintypesDWORDGetConsoleProcessListr  r  basenamer  r   print_generate_error_messagegetchrE   r   destroyreport_warningdownload_with_info_filer%   r   r   )re  r  r   all_urlsr  ydlr  
actual_useupdaterknown_targetsavailable_targetsr}  r{  r|  rowstextrB   ctypesr  kernel32bufferattached_processes
is_onefiler  r  s                          @@rD   
_real_mainr    sC   '4T':$FD(H"42 ,,001E1EF ((K	8	 \&&:$*:*:8!8!8
II	(c4#3#34GGNN$4(\ \ ((
 #8,k:"8,k:"9-/@A"6*K8"5)+<=M !$ F F H FWW/&'HVW-WDW/< +m +<  KK$,\m_N;[$\$  cjj.A.AB$  MM@AMM,'A4ST\_`ae\ \h ,,m\ \p $(<388AB<TD  & BGGtOXu0M&!==43!foo3336%-%C%CFA%N" %S*5k"'':J:J3<<:X:c:cdj:k
%*z>PTU>U&88BC D LLN!HLLCD 			&&2&&'QR22;t?V?V3WXo\ \r ||H-s\ \  	(!$'C!	(2 X$^ ! 	MM89y\ \t	u\ \s   AR,AP/A#R(Q; RR6-Q #;R'RER	AQ%Q%/$QRQR%R
?R	R

RRc                 R   dt         _        	 t        t        t	        |               y # t
        t        f$ r t        d       Y y t        $ r}t        d|        Y d }~y d }~wt        $ r t        d       Y y t        $ r|}t        j                  t        j                  t        j                        }t        j                  |t        j                   j#                                t        d|        Y d }~y d }~wt$        j&                  $ r}t        dd|        Y d }~y d }~ww xY w)NTr   zERROR: z
ERROR: Interrupted by userz
ERROR: r   rN   )r   r   rE   r3   r  r   r   r#   KeyboardInterruptBrokenPipeErrorry  rO   devnullO_WRONLYdup2r=   r   filenooptparseOptParseError)re  er  s      rD   mainr  4  s    FLx
4()*]+ a sm .,- ''"**bkk2
**,-	!o!! a2aSs:   ( D&D&AD&8D& A2C77D&D!!D&)gen_extractorsro   )supported_js_runtimessupported_remote_componentsdenonodebunquickjsz
ejs:githubzejs:npm)r:   r  ro   r  rl  )r   r<   )dr=   version_infoImportError__license__collectionsr  r  r  ry  r   r  cookiesr   r   r   downloader.externalr	   r   r
   extractor.adobepassr   networking.impersonater   globalsr   r   r  r   pluginsr   r  postprocessorr   r   r   r   r   r   r   r   r   rz   r   utilsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   utils._utilsr5   utils._jsruntimer6   _BunJsRuntimer7   _DenoJsRuntimer8   _NodeJsRuntimer9   _QuickJsRuntimer:   rE   r\   r   r   r  r  
namedtupler  rl  r  r  r  ro   r  r  r   r   __all__ra   rF   rD   <module>r     su   
g

ux x      	 	  L L 8 - ) 5 (  :
 
 
       : 0  !&(<1+hw*tm
` '&&8ab[|nb& 7 H&4   F #&4   F #%2   E ")8   I &  ! ! ( ( 6  ! ! ( ( 3rF   