
    yfj                        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 ddl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 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+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmEZE daFd dZGd ZHd ZId ZJd ZKd ZL ej                  dd      ZNd!dZOd!dZPd!dZQddlmRZRmSZS g dZTy)"    N)      zjYou are using an unsupported version of Python. Only Python versions 3.8 and above are supported by yt-dlpzThe Unlicense   )compat_os_namecompat_shlex_quote)SUPPORTED_BROWSERSSUPPORTED_KEYRINGS)get_external_downloader)list_extractor_classes)MSO_INFO)ImpersonateTarget)	parseOpts)	FFmpegExtractAudioPPFFmpegMergerPPFFmpegPostProcessorFFmpegSubtitlesConvertorPPFFmpegThumbnailsConvertorPPFFmpegVideoConvertorPPFFmpegVideoRemuxerPPMetadataFromFieldPPMetadataParserPP)Updater)
NO_DEFAULTPOSTPROCESS_WHEN	DateRangeDownloadCancelledDownloadErrorFormatSorterGeoUtilsPlaylistEntriesSameFileErrordecodeOption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traverse_objvariadicwrite_string)std_headers)	YoutubeDLFc                 d    |D ]!  }t         j                  j                  |       # t        |       N)sysstderrwrite
SystemExit)statusargsmsgs      1/usr/lib/python3/dist-packages/yt_dlp/__init__.py_exitr@   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$   r3   reprOSErrorr@   r,   
isinstancebytesstripdecode)urls	batchfileverbose
batch_urls_encurls         r?   get_urlsrW   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                 f  
 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              }nI| j"                  r<dt%        ddgt'        j                         D 	cg c]  \  }}	||	d   g c}	}      z  }nyt)        |t*        j,                         yc c}}w c c}	}w )N r   )	GenericIEFz (CURRENTLY BROKEN)rI   Tc              3   (   K   | ]
  }d | d  yw)z  rI   N ).0rV   s     r?   	<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     r?   r^   z.print_extractor_information.<locals>.<genexpr>r   s?      j

QSQ[Q[chQh NNE9NEjs   ;>zSupported TV Providers:
%s
msozmso namenameout)list_extractorsextractor.genericrZ   dictfromkeysr   	age_limitIE_NAMErb   itemstuplefiltersuitablekeysupdatejoinlist_extractor_descriptionsap_list_msor/   r   r3   r8   stdout)optsrQ   rj   rZ   re   rV   matchedmatched_urlsmso_idmso_inforf   s             @r?   print_extractor_informationr   a   sz   
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 
		-J@H@PQ,<FHfhv&'Q1S S #**%#  U Rs   
F'F'.F-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
                          |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| z  g       y)NFz*%sT)compat_optsdiscardrv   )rh   r{   s    r?   _unused_compat_optz+set_compat_opts.<locals>._unused_compat_opt   sE    t'''  &/rA   c                     t        |      }| j                  v r|t        ||        y|r |        y|t        ||       y )NTF)getattrr   setattr)compat_nameopt_namedefaultremove_compatattrr   r{   s        r?   set_default_compatz+set_compat_opts.<locals>.set_default_compat   sU    tX&$***|hG4 &{3\D(G,rA   zabort-on-errorignoreerrorsonly_downloadzno-playlist-metafilesallow_playlist_fileszno-clean-infojsonclean_infojsonzno-attach-info-jsonFzformat-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outtmplgetrv   )r{   r   _video_multistreams_set_audio_multistreams_setr   s   `   @r?   set_compat_optsr      s    'I.0FG*,<= 0 0045"'D((( 9 9:0A_afv{|0A_afv{|%',Cu,L>*T%%%<<I&.LL,F GHz*	 &rA   c                 4    &'( 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*         j(                  j-                  dd      d gz         ^}}} '|d uxr |d u xr d j(                  v  d j(                          |||d       ||f _         j.                  D ]  } |d|t0        j2                           |d  j4                  d!j7                  d"j9                  t        t:        j<                  t>        j@                                            |d# jB                  tD        jF                          |d$ jH                  tJ        j@                          |d% jL                  tN        jF                          |d& jP                  tR        jF                          |d' jT                  tV        jF                          jX                  rV jX                  j[                  d(      j[                  d)       _,         |d*t]        t_         jX                        d+,             'fd-}	 |	d. j`                         _0         |	d/ jb                         _1         |	d0 jd                         _2         |	d1 jf                         _3        d2 }
 jh                  jk                         D ]+  \  }}|s jh                  |= 	  |
|       jh                  |<   - 'fd5} |d6 jp                         _8         |d7 jr                         _9         |d8 jt                         _:         |d9 jv                         _;         |d: jx                         _<         |d; jz                         _=        d< } j|                  jk                         D ]  \  }} ||| d=         j~                  jk                         D ]  \  }}|D ]  } ||| d>          j                  jk                         D ]'  \  }}|D ]  \  }} ||| d?        ||| d@        )  | j                  dA        j                  jk                         D ]"  \  }}dB|v r|d dC  dDn| dE} ||| dF       $  j|                  j                  dG      }|dHk(  rd  _D         j|                  dG= ddI} |dJ j                        \   _E         _F        }t         |dK j                  d        _H         j                  rd }t;        j                  dL j                        }|to        dM j                         |j                  dNdOdPdQ      \  }}}}|j                         }|t        vr-to        dR| dSdTj9                  t        t                           |E|j                         }|t        vr-to        dU| dVdTj9                  t        t                           ||||f _I         j                  2t        j                   j                  j                                _Q        dW } j                  8 j                  j                  dXg       j                  dY j                  z          j                  jk                         D ci c]+  \  }}|t        t        j                  t        ||             - c}} _U         j                  )	 t        t        j                   j                               d\\   _`         _a         j                  j                         d]vr[	 t        j                   j                         t         j                        d`k(  r j                   _`        n j                   _a         j                  j                         dak7   _b        t         j                   j                         _g         j                  t         j                         _i         j                  t         j                         _k         j                  & j                  j                  db j                          j                  & j                  j                  dc j                          j                  rt               x _q         _r        d } j                  jk                         D ]P  \  }} | ddk(  rt        |       }!|!to        det        |d dfdGg       dh|  d_      |!s;|dGk(  sA|!j                         }R  j                  j                         D ]  }"|"divsto        d_|" dj       g g c(& j6                  dkk(  r (j                  dlj9                  dm             d\(fdn	}# |#do j                  dG|p      r7|r5 j                  j                  | j                  j                  dG              |#dq j                  drdG      rD j                  j                  dr       j                  dG<    j                  j                  dsg        dtdut        t        df (fdv	}$ |$dwdxdydz        |$dwdxd{d|        |$dydzd{d|        |$d}d~ddd ,        |$ddddd ,        |$dddd j                  j                  d              |$dddd j|                  j                  dG              |$dddd        |$ddsdJd        |$ddsdd        |$ddsdd        |$dddd j                  xr  j                          |$dd        |$dd        |$dd        |$dd        |$dd        |$dd        |$dd j                   dvda        |$dd        |$dJdg ,        |$dd        |$dds        |$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|                  dG<    j                  rd _         j                  s j                  r j                  d _         j                  r  j                  s j6                  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       _        (&fS # tl        $ r to        d3| d4|      w xY wc c}}w # t        $ r }to        dZ 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)rh   value)
ValueErrorformat)cndnrh   r   r>   s       r?   validatez"validate_options.<locals>.validate   s*    #A!AIIt[`IabbrA   c                 *     |d u xs ||v | ||      S r7   r\   )rh   r   rq   r>   r   s       r?   validate_inz%validate_options.<locals>.validate_in   s!    7%ucJJrA   c                 L     |d u xs t        j                  ||      | |      S r7   )rematch)rh   r   regexr   s      r?   validate_regexz(validate_options.<locals>.validate_regex   s&    ?%)?uMMrA   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 positiverY   z or 0r\   )rh   r   strictr   s      r?   validate_positivez+validate_options.<locals>.validate_positive   sS    QQ6z7Peqje%HRXB%fh 	h^e%fh 	hrA   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       r?   validate_minmaxz)validate_options.<locals>.validate_minmax   sZ    ?goG1C#'z!2d8*4EhHH:Ry0[\d[eeghogppqrssrA   r   z.netrczJ{name}, netrc command and username/password are mutually exclusive options)r>   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 startrD   zplaylist endzsubtitles sleep intervalzrequests sleep intervalzsleep intervalzmax sleep intervalzmin sleep intervalz2{name} must be specified; use --min-sleep-intervalrC   ztime range to wait for videozformat sortingz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        |      S # t        t        f$ r  d|  d|       Y y w xY w)Ninfinfiniter   Fz retry count)floatint	TypeErrorr   )rh   r   r   s     r?   parse_retriesz'validate_options.<locals>.parse_retries   sT    =))<	:u::& 	:UtfL159	:s   
  ??downloadfragment	extractorzfile accessc                     d}t        t        j                  d| d| d| d| j                               j	                               dz   ^}}|dk(  rfdS |srnd	fd
S )Nz\d+(?:\.\d+)?z(?:(linear|exp)=)?(z)(?::(z	)?)?(?::(z))?NNexpc                 n    t        t              t        xs d      | z  z  t        xs d            S )N   r   minr   )nlimitstartsteps    r?   <lambda>z<validate_options.<locals>.parse_sleep_func.<locals>.<lambda>  s/    Sutyq1AQ1F!Gu~X]I^_ rA   r   c                 n    t        t              t        xs       | z  z   t        xs d            S )Nr   r   )r   default_stepr   r   r   s    r?   r   z<validate_options.<locals>.parse_sleep_func.<locals>.<lambda>  s3    Sud6Jl0Ka0O!OQVW\We`eQfg rA   )rr   r   	fullmatchrO   groups)expr	NUMBER_REop_r   r   r   r   s       @@@@r?   parse_sleep_funcz*validate_options.<locals>.parse_sleep_func	  sy    $	%*2<<"9+VI;i	{RUVJJL, &(&$&2&3"E5$ ;__$&%5QLggrA   invalid z retry sleep expression c                 <    |y t        |      } |d ud|       |S )N
rate limit)r*   )rh   r   numeric_limitr   s      r?   validate_bytesz(validate_options.<locals>.validate_bytes  s,    =#E*d*L%@rA   r   zthrottled rate limitzmin filesizezmax filesizezbuffer sizezhttp chunk sizec                 Z    t        j                  |       }|rt        d| d|  d|       y )Nr   r   z": )r5   validate_outtmplr   )tmplr>   errs      r?   r   z*validate_options.<locals>.validate_outtmpl.  s8    ((.xuBtfCu=>> rA   z output templatez print templatez print to file templatez print to file filenamezSponsorBlock chapter titlez-titleiz console titlez	 progressz	 templater   rY   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    r?   r   z:validate_options.<locals>.parse_chapters.<locals>.<lambda>G  s    A9L4LE%L R`abRc rA   z(?x)(?:
            (?P<start_sign>-?)(?P<start>[^-]+)
        )?\s*-\s*(?:
            (?P<end_sign>-?)(?P<end>[^-]+)
        )?Fz	*from-urlT*r   z regex "z" - r   ,rC   r   0endr   
start_signend_signz Must be of the form "*start-end"z#Negative timestamps are not allowedr   rD   z-infz"-inf" is not a valid endz time range "z". )
startswithappendr   compileerrorr   mapstrrO   splitr   groupanyr   )rh   r   advancedparse_timestampTIMESTAMP_REchaptersrangesfrom_urlr   r   range_mobjdursignss                 r?   parse_chaptersz(validate_options.<locals>.parse_chaptersF  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: rh   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               z  }	 t        j                         g}n?ddj                  t        t                     z  } 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 %sz is invalid; z--replace-in-metadata %s c              3   b   K   | ]&  }t         j                  j                  |gd d  ( yw)r   N)r   ActionsREPLACE)r]   r   fs     r?   r^   zCvalidate_options.<locals>.metadataparser_actions.<locals>.<genexpr>  s.     ^(0088!DaeD^s   ,/r   r   )rM   r   r   r   	to_action	Exceptionr   rw   r   r   r   validate_action)r
  cmdactionsr   actions   `    r?   metadataparser_actionsz0validate_options.<locals>.metadataparser_actions  s     a'*<Q*??C=.88;< -sxx<NPQ8R/SSC^aPQdjjY\o^G 	F= 00&9 L	  = C5cU!;<<=  = C5cU!;<<=sL   CB AC?B9C	B6!B11B66C9	CCCCpre_processztitle:%szInvalid playlist-items z: r   )r   neverzUnsupported --xff "r   r   r  
User-AgentReferernativezNo such z%s )rF   zexternal downloader ")alwaysautono_colorr  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)rh   r   key1key2wherewarningss        r?   report_args_compatz,validate_options.<locals>.report_args_compat  sM    5=T.OOtzz|n ->>C>UdVST~=VX YrA   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	          r?   report_conflictz)validate_options.<locals>.report_conflict  sZ    :4&D:4&DOOtf$6tfJGHdG$rA   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  rF   )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      r?   report_deprecationz,validate_options.<locals>.report_deprecation  s=    ##`cseNseS[\	F5CD	FrA   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]: r7   )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   merge_output_formatr   rw   r   escaper   SUPPORTED_EXTSaudioformatr   	FORMAT_REconvertsubtitlesr   convertthumbnailsr   r8  r   r7  r   audioqualityrO   r'   r%   retriesfragment_retriesextractor_retriesfile_access_retriesretry_sleeprq   AttributeErrorr   	ratelimitthrottledratelimitmin_filesizemax_filesize
buffersizehttp_chunk_sizer   
forceprintprint_to_filesponsorblock_chapter_titleprogress_templater   skip_downloadr9  remove_rangesr#   download_rangescookiesfrombrowserr   r   lowerr   sortedupperr	   impersonater   from_strmetafromtitleparse_metadata
setdefaultr   list	itertoolschainplaylist_itemsrr   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   r4  r#  r<  rC  prefer_ffmpegr1  r   dayr0  r2  r3  r6  
overwritescontinue_dlr>  r?  rB  	keepvideogetcommentswriteinfojsonr   dumpjson
print_jsondump_single_jsonallsubtitlesr@  writeautomaticsubwritesubtitlesgetpass))r{   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"  r,  rJ  rI  r   r!  s)   `                                     @@@r?   validate_optionsr     sk   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&!$^T5H5H5N5NsTU5VZ^Y_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$..ADN,-CTE\E\]D&~t7H7HID&~t7H7HID$]DOODDO)*;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@@dN`N`A`a ''--/Aq 	
4	%;Q!?@AA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)))q	  	Oxu,DTHMNN	OL  	W6t7J7J6MRPSuUVV	W  	G24??2C1EFF	Gs7   ~$0( +4 $~?	1,,14#A@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  FFmpegSubtitlesConvertorr5  )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_segmentsry  rv  force_keyframesFFmpegMetadata)r  add_chaptersadd_metadataadd_infojsonF	SponSkrub)r  r  r=   cutforceignoreerror	_from_cliEmbedThumbnail)r  already_have_thumbnailrY   pl_thumbnailFFmpegSplitChapters)r  r  r  XAttrMetadatar  FFmpegConcatr  playlistr  only_multi_videor  Exec)r  r4  r  )%add_postprocessorsr  rq   r:  r;  sponsorblock_apire  rf  rB  rc  rg  r  r7  r8  r@  r   r  r  r9  ry  rv  force_keyframes_at_cutsr>  r?  r   r#  sponskrub_pathsponskrub_argsr<  sponskrub_forcerA  writethumbnailr   r=  rD  concat_playlistr4  )r{   r  r  sponsorblock_query	keep_subsr4  s         r?   get_postprocessorsr  V  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optionsrQ   ydl_optsc                 H   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                  dut        j                        dvt        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j0                  dj2                  dj4                  dj6                  dj8                  dj:                  dj<                  dj>                  i dj@                  djB                  djD                  djF                  dj,                  djH                  djJ                  djL                  djN                  d|d|djP                  djR                  djT                  djV                  djX                  djZ                  i 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                  dj|                  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)rD   rI   Nc              3   :   K   | ]  }|j                   v  y wr7   )rt  r]   r   r{   s     r?   r^   z parse_options.<locals>.<genexpr>  s     .fAq/G.f   r   c              3   6   K   | ]  }t        |        y wr7   )r   r  s     r?   r^   z parse_options.<locals>.<genexpr>  s      1gdA& s   )
r  r  getdescriptiongetdurationgetfilename	getformatgetidgetthumbnailgettitlegeturlr  r  pl_infojsonrY   r   r  Tr  discard_in_playlistrO  netrc_locationrP  rQ  rR  	twofactorvideopasswordrU  rT  rS  client_certificateclient_certificate_keyclient_certificate_passwordquietno_warningsforceurl
forcetitleforceidforcethumbnailforcedescriptionforcedurationforcefilenameforceformatrt  ru  	forcejsonr  force_write_download_archivesimulaterx  r   r$  ignore_no_formats_errorr   format_sort_forcer   r   check_formatslistformatslistformats_tabler   outtmpl_na_placeholderpathsrW  rV  restrictfilenameswindowsfilenamesr   force_generic_extractorallowed_extractorsr   rn  ro  r  rh  rk  ri  rj  retry_sleep_functionsskip_unavailable_fragmentskeep_fragmentsrX  rr  noresizebufferrs  
continuedl
noprogressprogress_with_newlinerw  progress_deltarY  rZ  playlistreverseplaylistrandomr/  
noplaylistlogtostderrrC   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_namerS   dump_intermediate_pageswrite_pages
load_pagestestr  rp  rq  	min_views	max_views	daterangecachediryoutube_print_sig_codero   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_manifestrG   extract_flatlive_from_startr_  mark_watchedr`  	final_extpostprocessorsrC  source_addressr  	call_homer\  r]  r^  r[  r  rz  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   rW   rR   r  rS   r   r  r   r   r  r  rN  rt  r2  r   r   r  r   r  r   r   r   r\  r  ru  r8  r   rb  r7  r   rB  rc  r   r  rO  r  rP  rQ  rR  r  r  rU  rT  rS  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  rx  r   r$  r  r   r  r   r   r  r  r  r  r  rW  rV  r  r  r   r  r  rn  ro  r  rh  rk  ri  rj  rl  r!  r"  rX  rr  r#  rs  r  r%  r&  rw  r'  rY  rZ  r-  r.  r/  r*  r,  r-  r.  r/  r0  r  r  r3  r4  r5  r6  r  r  r  r7  r8  r9  r"   r:  r;  r<  r=  r>  r?  r@  rA  rB  r  rp  rq  rC  rD  r1  rF  rG  ro   r  rH  rI  rJ  rK  rL  r{  legacy_server_connectno_check_certificaterO  rP  r  rR  rS  rT  rU  r  rV  rW  rX  rY  rZ  r[  rG   r]  r_  r^  r`  rC  ra  r  rb  r\  r]  r^  r[  r  rz  r  rc  r  rd  r  r  r  re  rf  rg  r  r  rh  ri  r  r  r  r   )argvr  rQ   r!  rI  r   r`  
print_onlyany_gettingppplaylist_ppswrite_playlist_infojsonr_  r{   s                @r?   parse_optionsrt    sD   "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 	l4??3Er.F 	|D$4$45G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$   o4 <pp4	p=ppc                 D	   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                         t        |      5 }|j                  xs |j                   }|xs |j"                  }|j                   r|j$                  j'                          	 t)        ||j                        }	|j                  rH|	j+                         r8|r6|	j,                  r|	j/                         cd d d        S |j1                  d       |j:                  rt=        d	      d
ft=        d      d
ft=        d      d
fg}
|j?                         }d }|D cg c]  \  }} |||       }}}|
D ]h  \  tA        fd|D              r|jC                   | d      D cg c](  }|jE                  ||jF                  jH                        * c}       j |jK                  d       |jM                  tO        g d|dd             	 d d d        y |sD|r|j8                  cd d d        S | t        jP                  dd  n| }|jS                  |       |stT        dk(  rtW        t        dd      rdd l,}dd l-}|j]                  d      } d|j^                  j`                  z         }|jc                  |d      }te        t        d      xr< tf        jh                  jk                  t        jl                        jo                  d      }|dk(  s|r:|dk(  r5tq        |js                  d             |ju                          tw        d       |jy                  d       |j{                          	 |j"                  @|r|j1                  d       |j}                  t        |j"                              cd d d        S |j                  |      cd d d        S # t2        $ r t5        j6                          d|_        Y w xY wc c}}w c c}w # t        $ r |jK                  d       Y d d d        y w xY w# 1 sw Y   y xY w)!Nzyt-dlpr  F)	casesenser   rI   ri   z)Restart yt-dlp to use the updated versiond   chrome	curl_cffiedgesafaric                     t        | j                  j                         | j                  d      xs dt        | j                  xs dj                         | j
                  d      xs d|gS )NrC   )delimrY   )r(   clientr  versionos
os_version)targethandlers     r?   make_rowz_real_main.<locals>.make_row  s\    !&--"5"5"7sSZWZ!699?"9"9";V=N=NVYZa^a rA   c              3   :   K   | ]  \  }}|v xr |k(    y wr7   r\   )r]   r  r  known_handlerknown_targets      r?   r^   z_real_main.<locals>.<genexpr>  s/      ' !F*Gw-/GGr  z (not available)z$[info] Available impersonate targets)ClientOSSourcer   rC   )	extra_gapr}  r   ntfrozenr   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   )Br0   rt  dump_user_agentr1   r  r4   r3   r8   rz   r   r  r   _ffmpeg_locationr  r5   update_selfrm_cachedirload_info_filenamecacheremover   rv   r  restartreport_warningr  	traceback	print_exc_download_retcodelist_impersonate_targetsr   "_get_available_impersonate_targetsr   r   _format_outStylesSUPPRESS	to_screen	to_stdoutr/   rn  warn_if_short_idr   r   ctypes.wintypesmsvcrtWinDLLwintypesDWORDGetConsoleProcessListhasattrr  r  basenamer  r   print_generate_error_messagegetchr@   r   destroydownload_with_info_filer$   r   r   )rn  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                           @@r?   
_real_mainr    sR   '4T':$FD(H $,,{[gOhit2YCJJ/"42 ,,001E1EF	8	 _&&:$*:*:8!8!8
II	(c4#3#34GGNN$4;;"??,_ _ ""#NO ((
 #8,k:"6*K8"8,k:M !$ F F H FWW/&'HVW-WDW/< +m +<  KK$,\m_L\;]$^!  cjj.A.AB!  MM@AMM,'A4ST\_`ak_ _n ,,s_ _v $(<388AB<TD  & Nd2wsHe7T&!==43!foo3336%-%C%CFA%N" %S*5k"'':J:J3<<:X:c:cdj:k
%*j=OST=T&88BC D LLN!HLLCD 			&&2&&'QR22;t?V?V3WXu_ _x ||H-y_ _   	(!$'C!	(. X!^ ! 	MM89_ _z	{_ _s   6ARAP8!P82A
R<Q# R0R	-Q)6;R:RD=RAQ.Q.8$Q RQ  R.RRRRRc                 4   da 	 t        t        t        |               y # t        $ 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   rI   )_IN_CLIr@   r2   r  r   r!   KeyboardInterruptBrokenPipeErrorr  rJ   devnullO_WRONLYdup2r8   rz   filenooptparseOptParseError)rn  er  s      r?   mainr  ,  s    Gx
4()* a sm .,- ''"**bkk2
**,-	!o!! a2aSs8    DDAD)D1A2C((D>DD)gen_extractorsrk   )r  r5   rt  r  rk   )r   r7   )Ur8   version_infoImportError__license__collectionsr  r  r  r  r   r  compatr   r   cookiesr   r	   downloader.externalr
   r   r   extractor.adobepassr   networking.impersonater   r  r   postprocessorr   r   r   r   r   r   r   r   r   rv   r   utilsr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   utils.networkingr4   r5   r  r@   rW   r   r   r  r  
namedtupler  rt  r  r  r  rk   __all__r\   rA   r?   <module>r     s    
f

tw w      	 	  6 ; 8 - ) 5 
 
 
        : *  
&(<(+Vi*X|
~ '&&8ab\~rj( 7rA   