
    VGh"                     .   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@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJ ddlKmKZK d!dZLd ZMd ZNd ZOd ZPd ZQ ej                  dd      ZSd"dZTd"dZUd"dZVddlmWZWmXZX g d ZYy)#    N)   	   zjYou are using an unsupported version of Python. Only Python versions 3.9 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traverse_objvariadicwrite_string)std_headers)_UnsafeExtensionError)	YoutubeDLc                 d    |D ]!  }t         j                  j                  |       # t        |       N)sysstderrwrite
SystemExit)statusargsmsgs      X/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/__init__.py_exitrC   G   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%   r5   reprOSErrorrC   r-   
isinstancebytesstripdecode)urls	batchfileverbose
batch_urls_encurls         rB   get_urlsrZ   M   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)rL   Tc              3   (   K   | ]
  }d | d  yw)z  rL   N ).0rY   s     rB   	<genexpr>z.print_extractor_information.<locals>.<genexpr>o   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)r`   ie	_SEARCHESs     rB   ra   z.print_extractor_information.<locals>.<genexpr>r   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_NAMEre   itemstuplefiltersuitablekeysupdatejoinlist_extractor_descriptionsap_list_msoformatr0   r   r5   r;   stdout)optsrT   rm   r]   rh   rY   matchedmatched_urlsmso_idmso_infori   s             @rB   print_extractor_informationr   a   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                 z     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
                         n7d j                   v r) j                  j                  t        j                          |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discardry   )rk   r   s    rB   _unused_compat_optz+set_compat_opts.<locals>._unused_compat_opt   sG    t'''  &1TF-rD   c                     t        |      }| j                  v r|t        ||        y|r |        y|t        ||       y )NTF)getattrr   setattr)compat_nameopt_namedefaultremove_compatattrr   r   s        rB   set_default_compatz+set_compat_opts.<locals>.set_default_compat   sU    tX&$***|hG4 &{3\D(G,rD   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-sort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_sortouttmplgetry   )r   r   _video_multistreams_set_audio_multistreams_setr   s   `   @rB   set_compat_optsr      s4    'I.0FG*,<= 0 0045"'D((( 9 9:	d..	. = =>0A_afv{|0A_afv{|%',Cu,L>*T%%%<<I&.LL,F GHz*	 &rD   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             d](fdo	}" |"dp j                  dH|q      r7|r5 j                  j                  | j                  j                  dH              |"dr j                  dsdH      rD j                  j                  ds       j                  dH<    j                  j                  dtg        dudvt        t        df (fdw	}# |#dxdydzd{        |#dxdyd|d}        |#dzd{d|d}        |#d~dddd -        |#ddddd -        |#dddd j                  j                  d              |#dddd j|                  j                  dH              |#dddd        |#ddtdKd        |#ddtdd        |#ddtdd        |#dddd j                  xr  j                           |#dd        |#dd        |#dd        |#dd        |#dd        |#dd        |#dd j                  dvdb        |#dd        |#dKdg -        |#dd        |#ddt        |#ddt               -        |#dd       d%fd	}$ |$ j                  dd        |$ j                   dd        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 j0                  sd _         j                  r j$                  d _         j
                  ( j                  t5        j4                  d       _         j                  ( j                  t5        j4                  d       _        d j6                  v r(j                  d       ddt8        _        (%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)rk   value)
ValueErrorr}   )cndnrk   r   rA   s       rB   validatez"validate_options.<locals>.validate   s*    #A!AIIt[`IabbrD   c                 *     |d u xs ||v | ||      S r:   r_   )rk   r   rt   rA   r   s       rB   validate_inz%validate_options.<locals>.validate_in   s!    7%ucJJrD   c                 L     |d u xs t        j                  ||      | |      S r:   )rematch)rk   r   regexr   s      rB   validate_regexz(validate_options.<locals>.validate_regex   s&    ?%)?uMMrD   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 0r_   )rk   r   strictr   s      rB   validate_positivez+validate_options.<locals>.validate_positive   sS    QQ6z7Peqje%HRXB%fh 	h^e%fh 	hrD   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       rB   validate_minmaxz)validate_options.<locals>.validate_minmax   sZ    ?goG1C#'z!2d8*4EhHH:Ry0[\d[eeghogppqrssrD   r   z.netrczJ{name}, netrc command and username/password are mutually exclusive options)rA   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 startrG   zplaylist endzsubtitles sleep intervalzrequests sleep intervalzsleep intervalzmax sleep intervalzmin sleep intervalz2{name} must be specified; use --min-sleep-intervalrF   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   )rk   r   	int_valuer   r   s      rB   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    rB   <lambda>z<validate_options.<locals>.parse_sleep_func.<locals>.<lambda>  s/    Sutyq1AQ1F!Gu~X]I^_ rD   r   c                 n    t        t              t        xs       | z  z   t        xs d            S )Nr   r   )r   default_stepr   r   r   s    rB   r   z<validate_options.<locals>.parse_sleep_func.<locals>.<lambda>  s3    Sud6Jl0Ka0O!OQVW\We`eQfg rD   )ru   r   	fullmatchrR   groups)expr	NUMBER_REop_r   r   r   r   s       @@@@rB   parse_sleep_funcz*validate_options.<locals>.parse_sleep_func  s    $	&1uR\\"9+VI;i	{RUVJJL. &(($ &1%)&1+/&1"E5$ ;__$&%5QLggrD   invalid z retry sleep expression c                 T    |y t        |      } |d u| |       |r
 | |d       |S )NT)r+   )rk   r   strict_positivenumeric_limitr   r   s       rB   validate_bytesz(validate_options.<locals>.validate_bytes)  s;    =#E*d*D%8dM48rD   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": )r8   validate_outtmplr   )tmplrA   errs      rB   r   z*validate_options.<locals>.validate_outtmpl:  s8    ((.xuBtfCu=>> rD   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    rB   r   z:validate_options.<locals>.parse_chapters.<locals>.<lambda>S  s    A9L4LE%L R`abRc rD   z(?x)(?:
            (?P<start_sign>-?)(?P<start>[^-]+)
        )?\s*-\s*(?:
            (?P<end_sign>-?)(?P<end>[^-]+)
        )?Fz	*from-urlTr   r   z regex "z" - r   ,rF   r   0endr   
start_signend_signz Must be of the form "*start-end"z#Negative timestamps are not allowedr   rG   z-infz"-inf" is not a valid endz time range "z". )
startswithappendr   compileerrorr   mapstrrR   splitr   groupanyr   )rk   r   advancedparse_timestampTIMESTAMP_REchaptersrangesfrom_urlr   r   range_mobjdursignss                 rB   parse_chaptersz(validate_options.<locals>.parse_chaptersR  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: rk   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)r`   r   fs     rB   ra   zCvalidate_options.<locals>.metadataparser_actions.<locals>.<genexpr>  s.     ^(0088!DaeD^s   ,/r   r   )
rP   r   r2   r   	to_action	Exceptionr   r   r   validate_action)r  cmdactionsr   actions   `    rB   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  
User-AgentReferernativezNo such z%s )rI   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 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)rk   r   key1key2wherewarningss        rB   report_args_compatz,validate_options.<locals>.report_args_compat  sM    5=T.OOtzz|n ->>C>UdVST~=VX YrD   zexternal downloader)r$  zpost-processorzdefault-compat	sponskrubz--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	          rB   report_conflictz)validate_options.<locals>.report_conflict  sZ    :4&D:4&DOOtf$6tfJGHdG$rD   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)r/  z--iduseidz--outputr   z--remux-video
remuxvideoz--recode-videorecodevideoz--sponskrubremove_chaptersz--sponsorblock-marksponsorblock_markz--sponsorblock-removesponsorblock_removez--sponskrub-cutsponskrub_cutz--split-chaptersplit_chapters)r.  z--embed-metadataaddmetadataz--embed-chaptersaddchaptersz--embed-info-jsonr   z--embed-subsembedsubtitlesz--embed-thumbnailembedthumbnailz--extract-audioextractaudioz--fixupfixup)Nr  rI   )r.  r   z--xattrsxattrsc                 R    | sy j                  |r| d| d       y | d       y )Nz; is deprecated and may be removed in a future version. Use z insteadz+ is deprecated and may not work as expected)r   )valoldnewdeprecation_warningss      rB   report_deprecationz,validate_options.<locals>.report_deprecation/  s=    ##`cseNseS[\	F5CD	FrD   z,--sponsorblock-mark or --sponsorblock-removez--prefer-avconvffmpegz%(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:   r_   )r   prepends     rB   r   z"validate_options.<locals>.<lambda>h  s    A rD   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}   rz   r   escaper   SUPPORTED_EXTSaudioformatr   	FORMAT_REr   r   r<  r   r;  r   audioqualityrR   r(   r&   retriesfragment_retriesextractor_retriesfile_access_retriesretry_sleeprt   AttributeErrorr   	ratelimitthrottledratelimitmin_filesizemax_filesize
buffersizehttp_chunk_sizer   
forceprintprint_to_filesponsorblock_chapter_titleprogress_templater   skip_downloadr=  remove_rangesr$   download_rangescookiesfrombrowserr   r   lowerr   sortedupperr   impersonater   from_strmetafromtitleparse_metadata
setdefaultr   list	itertoolschainr   playlist_itemsru   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setr>  r?  external_downloaderr	   r'   get_basenamecolorvaluesexternal_downloader_argspoppostprocessor_argsr   r8  r'  r@  rG  prefer_ffmpegr5  r   dayr4  r6  r7  r:  
overwritescontinue_dlrB  rC  rF  	keepvideogetcommentswriteinfojsonr   dumpjson
print_jsondump_single_jsonallsubtitlesrD  writeautomaticsubwritesubtitlesgetpassr   r7   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policyr&  r0  rN  rM  r   r   r%  s)   `                                    @@@@rB   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 /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M;0CEVWM;0EGZ[M;0GI^_%8IK[>D,>,>@ &6&6')9:N$45')9:%~6IwTZZ?X-Xbij$m4'):BGO\2M;/+-BCERJ)F t~~}6de4---/@(K -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)))K
  	Oxu,DTHMNN	OP  	W6t7J7J6MRPSuUVV	W  	G24??2C1EFF	GsD   A@*0AA.(AA AA: @*AAA	AA7AAA2A2AA7A:#ABc              #     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                  dur@d| j4                  | j6                  | j8                  | j:                  | j2                  d u dd | j<                  r3d| j>                  d | j>                  sd| _        d| j@                  d<   | jB                  rd| j*                  d | jD                  rd d!i | jF                  d"k7  rd#| jF                  d$k7  d%d& | jH                  j                         D ]  \  }}d'||d(  y 7 w))NMetadataParser)r  r  whenSponsorBlockafter_filter)r  
categoriesapir  FFmpegSubtitlesConvertorr9  )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_segmentsr  r|  force_keyframesFFmpegMetadata)r  add_chaptersadd_metadataadd_infojsonF	SponSkrub)r  r  r@   cutforceignoreerror	_from_cliEmbedThumbnail)r  already_have_thumbnailr\   pl_thumbnailFFmpegSplitChapters)r  r  r  XAttrMetadatar  FFmpegConcatr  playlistr  only_multi_videor  Exec)r  r8  r  )%add_postprocessorsr  rt   r>  r?  sponsorblock_apirf  rg  rF  rk  rm  r  r;  r<  rD  r   r  r  r=  r  r|  force_keyframes_at_cutsrB  rC  r   r'  sponskrub_pathsponskrub_argsr@  sponskrub_forcerE  writethumbnailr   rA  rH  concat_playlistr8  )r   r  r  sponsorblock_query	keep_subsr8  s         rB   get_postprocessorsr  m  s;    &&&&,,224 
g#
 	

 //$2J2JJ!,(("	
 	
 -++
 	

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

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

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

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

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

 {{o&&w&! $ 4 4 @
 	
 ----/ 
h 
 	

m 's   L K=K+L ParsedOptions)parseroptionsrT   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}tC        ||i djD                  djF                  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                  i d"jd                  d#jf                  d$jh                  d%jj                  d&jl                  d'jn                  d(j                  d)j0                  d*jp                  xs j                   d+j.                  d,jr                  d-jt                  
|xs |xs dnjt                  d.jv                  d/jx                  d0jz                  d1j|                  d2j~                  i d3j                  d4j                  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                  xs dCgdDj                  i dEj                  dFj                  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                  j                  nj                  dTj                  dUj                  i dVj                  dWj                  dXj                  dYj                  dZj                  d[j                  d\j                  d]j*                  j#                  dC      d^k(  d_j                  d`j                  daj                  dbj                  dcj                  ddj$                  dej(                  dfj&                  dgj                  i dhj                  du dij                  djk(  dkj                  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                  i dz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j,                  dj.                  dj0                  dj2                  dj4                  dj6                  dj8                  dj:                  dj<                  i dj>                  dj@                  djB                  djD                  dj,                  djF                  djH                  djJ                  djL                  d|d|djN                  djP                  djR                  djT                  djV                  djX                  i djZ                  dj\                  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                  djx                  djz                  j|                  j~                  j                  j                  j                  d      S # t        $ r}|j                  | d       Y d}~d}~ww xY wc c}	w )z4@returns ParsedOptions(parser, opts, urls, ydl_opts)rG   rL   Nc              3   :   K   | ]  }|j                   v  y wr:   )rz  r`   r   r   s     rB   ra   z parse_options.<locals>.<genexpr>  s     .fAq/G.fs   r   c              3   6   K   | ]  }t        |        y wr:   )r   r  s     rB   ra   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_playlistrU  netrc_locationrV  rW  rX  	twofactorvideopasswordr[  rZ  rY  client_certificateclient_certificate_keyclient_certificate_passwordquietno_warningsforceurl
forcetitleforceidforcethumbnailforcedescriptionforcedurationforcefilenameforceformatrz  r{  	forcejsonr  force_write_download_archivesimulater~  r}   r(  ignore_no_formats_errorr   format_sort_forcer   r   check_formatslistformatslistformats_tabler   outtmpl_na_placeholderpathsr]  r\  restrictfilenameswindowsfilenamesr   force_generic_extractorallowed_extractorsr   rt  ru  r  rn  rq  ro  rp  retry_sleep_functionsskip_unavailable_fragmentskeep_fragmentsr^  rx  noresizebufferry  
continuedl
noprogressprogress_with_newliner}  progress_deltar_  r`  playlistreverseplaylistrandomr3  
noplaylistlogtostderrrF   consoletitlenopart
updatetimewritedescriptionwriteannotationsr  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_namerV   dump_intermediate_pageswrite_pages
load_pagestestr  rv  rw  	min_views	max_views	daterangecachediryoutube_print_sig_coderr   r  break_on_existingbreak_on_rejectbreak_per_urlskip_playlist_after_errors
cookiefiler  legacyserverconnectnocheckcertificateprefer_insecureenable_file_urlshttp_headersproxysocket_timeoutbidi_workarounddebug_printtrafficr  include_adsdefault_searchdynamic_mpdextractor_argsyoutube_include_dash_manifestyoutube_include_hls_manifestrJ   extract_flatlive_from_startre  mark_watchedrh  	final_extpostprocessorsrG  source_addressr  	call_homerb  rc  rd  ra  r  r  r  list_thumbnailsr  xattr_set_filesizer  r  r  hls_prefer_nativehls_use_mpegtshls_split_discontinuityr  r  cn_verification_proxy)geo_verification_proxyr  r  r  	_warnings_deprecation_warningsr   )r   rZ   rU   r  rV   r   r  r   r   r  r  rT  rz  r8  r   r   r  r   r  r   r   r   rb  r  r{  r<  r   rj  r;  r   rF  rk  r   r  rU  r  rV  rW  rX  r	  r
  r[  rZ  rY  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   r$  r%  rt  ru  r  rn  rq  ro  rp  rr  r'  r(  r^  rx  r)  ry  r  r+  r,  r}  r-  r_  r`  r1  r2  r3  r0  r2  r3  r4  r5  r6  r  r  r9  r:  r;  r<  r  r  r  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  r  rv  rw  rI  rJ  r5  rL  rM  rr   r  rN  rO  rP  rQ  rR  r  legacy_server_connectno_check_certificaterU  rV  r  rX  rY  rZ  r[  r  r\  r]  r^  r_  r`  ra  rJ   rc  re  rd  rh  rG  rg  r  rh  rb  rc  rd  ra  r  r  r  ri  r  rj  r  r  r  rk  rl  rm  r  r  rn  ro  r  r  r  r   )argvr  rT   r%  rM  r   rf  
print_onlyany_gettingppplaylist_ppswrite_playlist_infojsonre  r   s                @rB   parse_optionsrz    s:   "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	  t r.DMMr.$--r. 	T^^r. 	DMM	r.
 	DMMr. 	T^^r. 	++r. 	$++r. 	t''r. 	t''r. 	d55r. 	!$"="=r. 	&t'G'Gr. 	r. 	t''r.  	DKK!r." 	dmm#r.$ 	4::%r.& 	$++'r.( 	D//)r.* 	))+r., 	))-r.. 	t~~/r.0 	doo1r.2 	++3r.4 	T]]5doo5r.6 	D117r.8 	'(I(I9r.: 	4==;PZ6;6$VZVcVc;r.< 	++=r.> 	$++?r.@ 	#D$A$AAr.B 	"4#?#?Cr.D 	t''Er.F 	T33Gr.H 	'(I(IIr.J 	'(I(IKr.L 	++Mr.N 	t''Or.P 	T33Qr.R 	4<<Sr.T 	!$"="=Ur.V 	Wr.X 	4//Yr.Z 	D11[r.\ 	T33]r.^ 	D11_r.` 	))ar.b 	"4#?#?cr.d 	d55D)er.f 	T^^gr.h 	d55ir.j 	dookr.l 	4<<mr.n 	t77or.p 	D11qr.r 	T33sr.t 	 !1!1ur.v 	%d&E&Ewr.x 	$--yr.z 	()K)K{r.| 	doo}r.~ 	$--r.@ 	4//Ar.B 	d&&Cr.D 	DOO$;djjEr.F 	 !;!;Gr.H 	T33Ir.J 	$--Kr.L 	++Mr.N 	t''Or.P 	400Qr.R 	$..Sr.T 	++Ur.V 	dooWr.X 	t||''	2c9Yr.Z 	))[r.\ 	$++]r.^ 	doo_r.` 	D11ar.b 	D11cr.d 	++er.f 	 9 9gr.h 	$--ir.j 	t''kr.l 	$--5mr.n 	 3 3u <or.p 	T^^qr.r 	))sr.t 	4//ur.v 	D11wr.x 	$--yr.z 	T33{r.| 	))}r.~ 	++r.@ 	4//Ar.B 	$--Cr.D 	dooEr.F 	t''Gr.H 	++Ir.J 	t77Kr.L 	$--Mr.N 	4<<Or.P 	"4#?#?Qr.R 	t''Sr.T 	dooUr.V 			Wr.X 	T^^Yr.Z 	))[r.\ 	))]r.^ 	T^^_r.` 	T^^ar.b 	TYYcr.d 	DMMer.f 	!$"="=gr.h 	T^^ir.j 	D11kr.l 	T33mr.n 	4//or.p 	++qr.r 	%d&E&Esr.t 	doour.v 	d55wr.x 	t99yr.z 	d77{r.| 	4//}r.~ 	D11r.@ 	Ar.B 	Cr.D 	$--Er.F 	4//Gr.H 	d55Ir.J 	++Kr.L 	t''Mr.N 	$--Or.P 	t''Qr.R 	$--Sr.T 	()K)KUr.V 	'(I(IWr.X 	DMMYr.Z 	))[r.\ 	4//]r.^ 	$--_r.` 	))ar.b 	t77cr.d 	Yer.f 	.gr.h 	ir.j 	$--kr.l 	t''mr.n 	T^^or.p 	"4#?#?qr.r 	$--sr.t 	d55ur.v 	#D$A$Awr.x 	t77yr.z 	4//{r.| 	"4#?#?}r.~ 	4//r.@ 	$--Ar.B 	d55Cr.D 	))Er.F 	Gr.H 	4//Ir.J 	T33Kr.L 	$--Mr.N 	"4#?#?Or.P 	#D$A$AQr.R 	d55Sr.T 	 !;!;Ur.V #'"="=oo"55#77!5''cr. r rE  !uBZ  ! Qs$   o! <pp!	p	*pp	c                 	   t        d       t        |       \  }}}}|j                  r?t        |j                  ddt
        d         }t        | dt        j                         y 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$                  rH|	j1                         r8|r6|	j2                  r|	j5                         cd d d        S |j7                  d       |j@                  r	tC        d	      d
ftC        d      d
ftC        d      dftC        d      d
fg}
|jE                         }d }|D cg c]  \  }} |||       }}}|
D ]i  \  tG        fd|D              r|jI                  d | d      D cg c](  }|jK                  ||jL                  jN                        * c}       k |jQ                  d       |jS                  tU        g d|dd             	 d d d        y |sN|r|j>                  cd d d        S | t        jV                  dd  n| }|jY                  |       |stZ        j\                  dk(  rt_        t        dd      rdd l0}dd l1}|je                  d      } d|jf                  jh                  z         }|jk                  |d      }tm        t        d      xr< tZ        jn                  jq                  t        jr                        ju                  d      }|dk(  s|r:|dk(  r5tw        |jy                  d             |j{                          t}        d       |j                  d       |j                          	 |j(                  @|r|j7                  d        |j                  t        |j(                              cd d d        S |j                  |      cd d d        S # t8        $ r t;        j<                          d|_        Y w xY wc c}}w c c}w # t        $ r |jQ                  d!       Y d d d        y"w xY w# 1 sw Y   y xY w)#Nzyt-dlpr  F)	casesenser   rL   rl   z)Restart yt-dlp to use the updated versiond   chrome	curl_cffisafarifirefoxzcurl_cffi>=0.10edgec                     t        | j                  j                         | j                  d      xs dt        | j                  xs dj                         | j
                  d      xs d|gS )NrF   )delimr\   )r)   clientr!  versionos
os_version)targethandlers     rB   make_rowz_real_main.<locals>.make_row  s\    !&--"5"5"7sSZWZ!699?"9"9";V=N=NVYZa^a rD   c              3   R   K   | ]  \  }}|v xr j                  |         y wr:   )r   )r`   r  r  known_handlerknown_targets      rB   ra   z_real_main.<locals>.<genexpr>  s5      ' !F*P}/G/G/PPs   $'r   z (unavailable)z$[info] Available impersonate targets)ClientOSSourcer   rF   )	extra_gapr  r   ntfrozen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   )Er1   rz  dump_user_agentr3   r  r6   r5   r;   r~   r   r  r   _ffmpeg_locationr  r   r   _load_all_pluginsr8   update_selfrm_cachedirload_info_filenamecacheremover   ry   r  restartreport_warningr  	traceback	print_exc_download_retcodelist_impersonate_targetsr   "_get_available_impersonate_targetsr   insert_format_outStylesSUPPRESS	to_screen	to_stdoutr0   rt  warn_if_short_idr  rk   r   ctypes.wintypesmsvcrtWinDLLwintypesDWORDGetConsoleProcessListhasattrr  basenamer  r   print_generate_error_messagegetchrC   r   destroydownload_with_info_filer%   r   r   )rt  r  r   all_urlsr  uaydlr  
actual_useupdaterknown_targetsavailable_targetsr  r  r  rowstextr@   ctypesr  kernel32bufferattached_processes
is_onefiler  r  s                           @@rB   
_real_mainr    s   '4T':$FD(H $,,{[gOhit2YCJJ/"42 ,,001E1EF ((K	8	 `&&:$*:*:8!8!8
II	(c4#3#34GGNN$4;;"??,` ` ""#NO ((
 #8,k:"8,k:"9-/@A"6*K8M !$ F F H FWW/&'HVW-WDW/< +m +<  KK$,\m_N;[$\$  cjj.A.AB$  MM@AMM,'A4ST\_`am` `p ,,u` `x $(<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Xw` `z ||H-{` `   	(!$'C!	(0 X$^ ! 	MM89A` `|	}` `s   %AS7AQ?Q?!AS8R* S,S-R03;S7SESAR5%R5?$R'#S&R''S5SSSSS&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   rL   )r   r   rC   r4   r  r   r   r#   KeyboardInterruptBrokenPipeErrorr  rM   devnullO_WRONLYdup2r;   r~   filenooptparseOptParseError)rt  er  s      rB   mainr  I  s    FLx
4()*]+ a sm .,- ''"**bkk2
**,-	!o!! a2aSs:   ( D&D&AD&8D& A2C77D&D!!D&)gen_extractorsrn   )r8   r  rn   r  rz  )r   r:   )Zr;   version_infoImportError__license__collectionsr  r  r  r  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   ry   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   r5   utils.networkingr6   utils._utilsr7   r8   rC   rZ   r   r   r  r  
namedtupler  rz  r  r  r  rn   __all__r_   rD   rB   <module>r     s    
f

tw w      	 	  L L 8 - ) 5 (  :
 
 
        : * /  &(<++\}*@|
~ '&&8ab\~xv& 7rD   