
    i]                     R    S r SSKrSSKrSSKJrJrJr  S rS
S jrS r	SS jr
S	 rg)z'Helpers for interacting with youtube-dl    N   )textutil	exceptionc                     U c   [        S5      $ [        R                  " U 5      $ ! [        [        4 a    [        S5      s $ f = f)Nyt_dlp
youtube_dl)
__import__ImportErrorSyntaxErrorr   import_file)module_names    </app/mltbenv/lib/python3.13/site-packages/gallery_dl/ytdl.pyimport_moduler      sL    	,h'' K(( [) 	,l++	,s   
& AAc                     S =pEUR                   nU" S5      (       d>  [        R                  U R                  l        [        R                  U R                  l        U" S5      =n(       aL  [        [        R                  " U5      SS9 nUR                  5       n	S S S 5        [        R                  " W	SS9nU" S5      =n
(       a8  [        U
[        5      (       a  [        R                  " U
5      n
U(       a  XZ-   OU
n U(       a  [        X5      OUnUR#                  S	5      c  U" S	5      US	'   UR#                  S
5      c  U" SS5      (       + US
'   UR#                  S5      c  U" SS5      US'   UR#                  S5      c   [$        R&                  " U" S5      S 5      US'   UR#                  S5      c   [$        R&                  " U" S5      S 5      US'   UR#                  S5      c  U" SS5      (       d  SUS'   UR#                  S5      cd  U" S5      =n(       aP  [        R(                  " US[$        R&                  5      n[+        US5      (       a  XS'   OU" 5       =(       d    S US'   OS US'   U" S5      =n(       a  UR-                  U5        U" SS5      (       a  UR.                  US'   U(       a  UR-                  U5        SUS'   U R                  U5      $ ! , (       d  f       GNH= f! [         a    [        R                   " S5      ef = f)Ndeprecationszconfig-filezutf-8)encodingT)commentszcmdline-argszInvalid command-line optionformatnopartpart
updatetimemtimemin_filesizezfilesize-minmax_filesizezfilesize-max
overwritesskip	ratelimitrater   args__gdl_ratelimit_funczraw-optionslogginglogger__gdl_initialize)configr   false	YoutubeDLdeprecated_featuredeprecation_warningopenexpand_pathreadshlexsplit
isinstancestrparse_command_line
SystemExitr   AbortExtractiongetr   parse_bytesbuild_selection_funchasattrupdatelog)moduleobj	user_optssystem_optsoptsargvr%   cfgfpcontentscmdr   funcraw_optss                 r   construct_YoutubeDLrF      s   DZZF.!!.2jj+/3zz,]##s#$""3'':bwwyH ;{{8d3^$$s$c3++c"C#
G37!&/Y xx!)Xxx!#FD11Xxx%#GT2\xx'#//~0FM^xx'#//~0FM^xx%fVT.B.B!\xx$&>!4!,,T1d6F6FGDtV$$/3+,$(FNd[! $D-((x(HiXK #D	D!!Y ;:  G''(EFFGs   K>K, 
K),!Lc                 !  ^ ^"^#^$ T R                  U5      u  nm$n[        T S5      n T R                  R                  R                  n T R                  nT$R                  b  T$R                  US'   T$R                  b  T$R                  US'   T$R                  (       af  [        T$R                  [        5      (       a  UR                  T$R                  5        O+T$R                   H  nUR                  S5      u  pn
XU'   M     T$R                  b  U" T$R                  5      T$l        [!        T$SS 5      b  U" T$R"                  5      T$l        T$R$                  b  U" T$R$                  5      T$l        T$R&                  b  U" T$R&                  5      T$l        T$R(                  c  T$R*                  T$l        [!        T$SS 5      (       a  ST$l        T$R.                  b  [1        T$R.                  5      T$l        [!        T$SS 5      b  [1        T$R2                  5      T$l        T$R4                  b  [1        T$R4                  5      T$l        [!        T$S	S 5      b  [1        T$R6                  5      T$l        T$R8                  b  U" T$R8                  5      T$l        T$R:                  b  U" T$R:                  5      T$l        T$R<                  (       a  T$R>                  RA                  5       T$l        T$RB                  (       a   T$RB                  RE                  S
5      T$l!        T$RF                  b!  T$RF                  RI                  SS5      T$l#        [!        T$SS 5      b!  T$RJ                  RI                  SS5      T$l%        [!        T$SS 5      bE  T$RL                  R                  S5      u  pnT RO                  U5      T RO                  U5      4T$l&        T$RP                  b&  T RR                  RU                  T$RP                  5      nO&T RS                  T$RV                  T$RX                  5      n[!        T S[Z        R\                  5      n[!        T$SS5      m#U#4S jm" SU"U#U$4S jjnU" SSS5        U" SS5        U" SS5        ST#;   a9  T$R^                  Ra                  T Rb                  Rd                  Rf                  5        U" SSSSS 9nU" SS!SSS 9nUSL a  USL a  T"" S5        [        T$Rh                  [        5      (       a  T$Rh                  nURk                  S"5      nOS=T$l4        =nnS#T#;   a  Uc  S$=nUS"'   OT"" S#5        T$R<                  (       a%  T$Rl                  (       d  T$Rn                  c  S%T$l7        U(       Ga-  U 4S& jn[!        T$S'S 5      n[        U[        5      (       a  T$Rp                  b,  S(U;  a  / US('   US(   Rs                  S)T$Rp                   35        URu                  5        VVs0 s H9  u  nnU[w        [x        Rz                  R}                  [        UU5      5      5      _M;     snnT$l@        OgUc  / nT$Rp                  b  URs                  S)T$Rp                   35        [w        [x        Rz                  R}                  [        UU5      5      5      T$l@        S T$l8        OST$l@        T$R                  b  T R                  T$R                  5      OT$R                  n[!        T$S*S 5      (       a  ST$lC        [!        T$S+S 5      (       a  [        5       T$lE        [        5       T$lF        OF[!        T$S,S 5      =(       d
    [        5       T$lE        [!        T$S-S 5      =(       d
    [        5       T$lF        [!        T$S.S 5      =(       d    ST$lG         [w        T R                  T$5      5      nT$R                  c  S OT R                  T$R                  5      n[!        T$S/S 5      =n(       am  [        R                  " S05      nUR                  U5      =n(       a=  UR                  5       u  nnn n!Ub  UR                  5       nURA                  5       U UU!4nOS n0 S1T$R                  _S2[!        T$S2S 5      _S3T$R                  _S4T$R                  _S5T$R                  _S6T$R                  _S7T$R                  _S8T$R                  _S9T$R                  _S:T$R                  _S;T$R                  _S<T$R                  _S=T$R                  _S>T$R                  _S?T$R                  _S@T$R                  _SAT$R                  _0 SBT$R                  _SCT$R                  _SD[!        T$SDS 5      =(       d    S_SE[!        T$SES 5      _SFT$R                  _SGT$R                  _SHT$Rn                  _SI[!        T$SIS 5      _SJ[!        T$SJS 5      _SK[!        T$SKS 5      _SL[!        T$SLS 5      _ST$R                  _S!T$R                  _SM[!        T$SMS 5      _SNT$Rh                  _SOT$R                  _SP[!        T$SPS 5      _E0 SQT$R                  _SRT$R                  _SST$R                  _ST[!        T$STS 5      _ST$R                  _SUT$R                  _SVT$R                  _S[!        T$SS 5      _S[!        T$SS 5      _SWT$R.                  _S[!        T$SS 5      _SXT$R4                  _S	[!        T$S	S 5      _SYT$R                  _SZT$R                  _S[[!        T$S[S 5      _S\T$R8                  _E0 S]T$R                  _S^T$R:                  _S_T$R,                  _S`T$R                  c  SOT$R                  _SaT$R                  _SbT$R                  _ScT$R                  _SdT$R                  _SeT$R                  _SfUS:H  _SgT$R                  _ShT$R                  _SiT$R                  _SjT$R                  _Sk[!        T$SkS 5      _SlT$R                  _ST$R                  _E0 ST$R                  _S*[!        T$S*S 5      _SmT$R                  SL _Sn[!        T$SnS 5      =(       d    T$R                  So:H  _Sp[!        T$SpS 5      _Sq[!        T$SqS 5      _Sr[!        T$SrS 5      _Ss[!        T$SsS 5      _StT$R                  _SuT$R                  _SvT$R                  _SwT$GR                   _SxT$GR                  _SyU" T$GR                  5      _SzU" T$GR                  5      _S{T$GR                  _S|T$GR
                  _E0 S}[!        T$S}S 5      _S~T$GR                  _ST$GR                  _ST$GR                  _ST$GR                  _ST$Rl                  _ST$R$                  _ST$R&                  _ST$GR                  _ST$GR                  _SU_ST$GR                  _S[!        T$SS 5      _ST$GR                  _SU_S[!        T$SS 5      _S[!        T$SS 5      _E0 S[!        T$SS 5      _S[!        T$SS 5      _ST$GR                  _S/U_ST$GR                  _ST$GR                   _ST$GR"                  _ST$GR$                  _ST$GR&                  _ST$GR(                  _S[!        T$SS 5      _S[!        T$SS 5      _ST$GR*                  _S[!        T$SS 5      _S[!        T$SS 5      _S[!        T$SS 5      _S[!        T$SS 5      _E0 ST$GR,                  _ST$GR.                  _S[!        T$SS 5      _S[!        T$SS 5      _ST$GR0                  _ST$GR2                  _SU_ST$GR4                  _ST$GR6                  _S[!        T$SS 5      _ST$R*                  _ST$R(                  _S[!        T$SS 5      _ST$GR8                  _ST$GR:                  _S[!        T$SS 5      _SU_E[!        T$SS 5      T$GR<                  T$GR>                  T$GR@                  [!        T$SS 5      T$GRB                  T$GRD                  [!        T$SS 5      T$GRF                  [!        T$SS"5      [!        T$SS 5      [!        T$SS 5      T#S.E$ ! [
         a    T R                  n GNf = f! [
         a    T R                  R                  n GNf = fs  snnf ! [
         a    [        T$T UT#5      n GNf = f)Ncookiesz
User-AgentReferer:throttledratelimitr   Ffile_access_retriesextractor_retrieskK  
remuxvideowait_for_video-decodeOptioncompat_opts c                 `   > U T;  a  gTR                  U 5        TR                  SU  3/5        g)NF*T)discardr8   )namerU   s    r   _unused_compat_opt.parse_command_line.<locals>._unused_compat_opt   s5    {"D!avJ<(    Tc                    > [        TUS 5      nU T;   a%  Uc  [        TX(       + 5        gU(       a  T" U 5        gUc  [        TX5        g )NTF)getattrsetattr)compat_nameopt_namedefaultremove_compatattrr[   rU   r>   s        r   set_default_compat.parse_command_line.<locals>.set_default_compat   sM    tXt,+%|h4 &{3\D(,r]   zabort-on-errorignoreerrorsonly_downloadzno-playlist-metafilesallow_playlist_fileszno-clean-infojsonclean_infojsonzformat-sortmultistreamsallow_multiple_video_streams)rd   allow_multiple_audio_streamsrc   filenamez%(title)s-%(id)s.%(ext)szbestaudio/bestc              3   
  >#    [        U [        5      (       a  TR                  R                  U 5      v   g TR                  R
                  R                  nU SS  nU S   R                  S5       H  nX/nXB-  nUv   M     g 7f)Nr   r   ,)r/   r0   MetadataFromFieldPP	to_actionMetadataParserPPActionsREPLACEr.   )frv   r    xactionr:   s        r   metadataparser_actions2parse_command_line.<locals>.metadataparser_actions   su     !S!!00::1== 1199AAu1CA%\FNF L )s   B Bparse_metadatapre_processztitle:getcommentsno_sponsorblocksponsorblock_marksponsorblock_removeremove_chapterscookiesfrombrowserz(?x)
            (?P<name>[^+:]+)
            (?:\s*\+\s*(?P<keyring>[^:]+))?
            (?:\s*:\s*(?!:)(?P<profile>.+?))?
            (?:\s*::\s*(?P<container>.+))?usenetrcnetrc_locationusernamepassword	twofactorvideopasswordap_msoap_usernameap_passwordquietno_warningsforceurl
forcetitleforceidforcethumbnailforcedescriptionforcedurationforcefilenameforceformat
forceprintforce_write_download_archivesimulateskip_downloadr   allow_unplayable_formatsignore_no_formats_errorformat_sortformat_sort_forcecheck_formatsouttmplouttmpl_na_placeholderpathsautonumber_sizeautonumber_startrestrictfilenameswindowsfilenamesforce_generic_extractorr   retriesfragment_retriesskip_unavailable_fragmentskeep_fragmentsconcurrent_fragment_downloads
buffersizenoresizebufferhttp_chunk_size
continuedl
noprogressplayliststartplaylistendplaylistreverseplaylistrandom
noplaylistlogtostderrconsoletitler   r   writedescriptionwriteannotationswriteinfojsonwritethumbnailwrite_all_thumbnailsall	writelinkwriteurllinkwritewebloclinkwritedesktoplinkwritesubtitleswriteautomaticsuballsubtitlessubtitlesformatsubtitleslangs
matchtitlerejecttitlemax_downloadsprefer_free_formatstrim_file_nameverbosedump_intermediate_pageswrite_pagestest	keepvideor   r   	min_views	max_views	daterangecachediryoutube_print_sig_code	age_limitdownload_archivebreak_on_existingbreak_on_rejectbreak_per_urlskip_playlist_after_errors
cookiefilenocheckcertificateprefer_insecureproxysocket_timeoutbidi_workarounddebug_printtrafficprefer_ffmpeginclude_adsdefault_searchdynamic_mpdextractor_argsyoutube_include_dash_manifestyoutube_include_hls_manifestr   extract_flatlive_from_startmark_watchedmerge_output_formatpostprocessorsfixupsource_addresssleep_interval_requestssleep_intervalmax_sleep_intervalsleep_interval_subtitlesexternal_downloaderplaylist_itemsxattr_set_filesizematch_filterno_colorhls_split_discontinuitycn_verification_proxy
geo_bypassgeo_bypass_countrygeo_bypass_ip_block)r   ffmpeg_locationhls_prefer_nativehls_use_mpegtsr   external_downloader_argspostprocessor_argsr   geo_verification_proxyr   r   r   rU   )TT)	parseOptsr7   utils
networkingstd_headersAttributeErrorr5   FileDownloader
user_agentrefererheadersr/   dictr8   	partitionr   r_   rK   r   r   r   r   continue_dlr   parse_retriesrL   r   rM   r   r   extractaudioaudioformatloweraudioqualitystriprecodevideoreplacerQ   rR   parse_durationdate	DateRangeday	dateafter
datebeforer   identityr   extendInfoExtractor
FormatSortytdl_defaultr   r4   r   r   metafromtitleappenditemslist	itertoolschainfrom_iterablemapr|   r   r+   r   setr   r   r   get_postprocessorslegacy_postprocessorsr   match_filter_funcr   re	fullmatchgroupsupperr   r   r   r   r   r   r   r   r   r   geturlgettitlegetidgetthumbnailgetdescriptiongetdurationgetfilename	getformatr   r   rm   rn   r   r   r   r   rh   r   r   r   r   r   r   r   playlist_reverseplaylist_randomr   r   r   r   r   rj   rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   no_check_certificater   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  )%r:   r?   parserr    ytdlpr	  r5   hkey_valuemin_waitmax_waitr  rT   rf   _video_multistreams_set_audio_multistreams_setr   outtmpl_defaultrz   r|   kvdownload_archive_fnr   r   r   patternmatchbrowserkeyringprofile	containerr[   rU   r>   s%   `                                 @@@r   r1   r1   Q   s   ))$/FD$FI&E)ll--998((
 "$(OOL!||!%I||dllD))t||,\\ !C 0#(C  " ~~!$T^^4t)40<"-d.E.E"F$'(9(9:$'(9(9:&"&"5"5t\4(( ||$T\\2t*D1=#01I1I#J ( -d.C.C Dt($/;!.t/E/E!F"%doo6'*4+?+?@++113 --33D9#++33C<t\4(4//11#r:t%t,8 $ 3 3 = =c BX%44X>%44X>@ yy##DII.@6>4==AL$r2K @D  'I.0FG*,<=# 4 4 ? ? L LM06U$ 16U$ %',Cu,L>*$,,%%,,!++i03555w[ "3MMOgi0z*DKK4G&		! !'7>nd++!!- 646N=1}-44T//013
 +002# 3DAq 4	55c.73 4 5 52#D %!#!!-%%t/A/A.B&CD"&y'D'DS&F8 (9 #:D "    , !,,T-B-BC262G2G  t]D))!t&--!$#&5  D-t4= 	 D/6?#% 	 "4):DAGRD.f77=> !!)%%d&7&78  %T+?FFF'' . /
 %%&8995938<<>0GWgy"!--/")--/7GY!O!%hDMMh'$(8$?h 	DMMh 	DMM	h
 	T^^h 	++h 	$++h 	t''h 	t''h 	h 	t''h 	DKKh 	dmmh 	4::h 	$++h  	D//!h" 	))#h$ 	))%h& 	t~~'h( 	gdL$7=2)h* 	'0$)8+h. 	DMM/h0 	++1h2 	$++3h4 	#G,d%45h8 	"7+T$39h< 	w-'=h@ 	W%t-AhD 	'(I(IEhF 	'(I(IGhH 	/4)IhL 	4<<MhN 	!$"="=OhP 	w-QhR 	4//ShT 	D11UhV 	T33WhX 	GD*<dCYhZ 	))[h\ 	"4#?#?]h^ 	T^^_h` 	gd,@$Gahb 	gdL$7chd 	4<<ehf 	wt-BDIghh 	D11ihj 	WT+>Ekhl 	%d&E&Emhn 	$--ohp 	(14*9qht 	doouhv 	$--whx 	4//yhz 	d&&{h| 	doo5d4??}h~ 	++h@ 	t''AhB 	400ChD 	$..EhF 	dooGhH 	#-IhJ 	))KhL 	$++MhN 	dooOhP 	D11QhR 	GD*<dCShT 	++UhV 	 9 9WhX 	$--YhZ 	wt]D9[h\ 	$--5]h^ 	.Dd K !%u$ahb 	WT;5chd 	nd;ehf 	74):DAghh 	GD*<dCihj 	$--khl 	T33mhn 	))ohp 	4//qhr 	$--sht 	l4??3uhv 	|D$4$45whx 	++yhz 	t77{h| 	'$(8$?}h~ 	4<<h@ 	"4#?#?AhB 	t''ChD 			EhF 	T^^GhH 	))IhJ 	))KhL 	T^^MhN 	T^^OhP 	TQhR 	DMMShT 	!'*D#2UhX 	T^^YhZ 	/[h\ 	WT+>E]h^ 	74):DA_h` 	=ahb 	%g.'6chf 	dooghh 	0ihj 	d77khl 	4//mhn 	ohp 	$--qhr 	4//sht 	d55uhv 	=whx 	wt]D9yhz 	$--{h| 	wt]D9}h~ 	'$(8$?h@ 	(14*9AhD 	'0$)8EhH 	DMMIhJ 	))KhL 	74):DAMhN 	'$(8$?OhP 	))QhR 	t77ShT 	.UhV 	WhX 	$--YhZ 	"7+T$3[h^ 	$--_h` 	d55ahb 	#G,d%4chf 	t77ghh 	$--ihj 	gd,@$Gkhl 	mhn D*d3//!33--#*+T$3$($A$A"55!(/F!M"&"="=,	+%&.&' /"Oh hC  )(()
  8++778F#F  ..&%..sL    A@ A@< &A AA#AA) @A@9@8A@9@< AA AAA A)ABBABc                 :    U S;   a  [        S5      $ [        U 5      $ )N)infinfiniterU  )floatint)r   rZ   s     r   r  r    s    %%U|w<r]   c           
      
   / nU R                   U R                  -  nU R                  (       a  UR                  SU R                  S.5        [	        U SS 5      (       a  U[        U R                  5      -  nU(       a   UR                  SUU R                  SS.5        U R                  (       a  UR                  SU R                  SS.5        U R                  (       a,  S	U R                  S
.nU(       a  SUS'   UR                  U5        [	        U SS 5      (       a  UR                  SU R                  SS.5        [	        U SS 5      (       a  UR                  SU R                  SS.5        U R                  (       a4  UR                  SU R                  U R                  U R                  S.5        [	        U SS 5      (       a  UR                  SU R                   S.5        U R"                  (       a  UR                  SU R"                  S.5        U R$                  (       aU  SS0nU(       a  U R&                  =(       a    SU;  US'   UR                  U5        U R(                  (       d  SU;  a  SU l        U R*                  (       a  U R(                  (       d  SU l        / / pU R,                   H  n	U	R/                  S5      (       as  [        [1        UR2                  U	SS  R5                  S 5      5      5      n
[7        U
5      S!:X  a3  [9        S" U
 5       5      (       a  UR                  [;        U
5      5        M  UR                  [<        R>                  " U	5      5        M     U R,                  (       d  U(       a6  UR                  S#UU R                  UU R@                  U RB                  S$.5        [	        U S%S 5      n[	        U S&S 5      nU RD                  (       d  U(       d  U(       a8  SS'0nU(       a  Uc  S(nU RD                  US)'   XS*'   XS+'   UR                  U5        [	        U S,S-5      S-LaM  UR                  S.U RF                  U RH                  U RJ                  U RL                  U RN                  S L SS/.5        U RP                  (       ap  U RR                  =(       d    [	        U S0S-5      nUR                  S1US2.5        U(       d5  SU l)        [U        U RV                  [X        5      (       a  S3U RV                  S4'   [	        U S5S 5      (       a  UR                  S6U RB                  S7.5        U RZ                  (       a  UR                  SS805        U R\                  (       a  UR                  SU R\                  S9S.5        U$ ):NMetadataFromTitle)rC  titleformatadd_postprocessorsSponsorBlockr}   )rC  
categoriesapiwhenMetadataParser)rC  actionsr`  FFmpegSubtitlesConvertor)rC  r   	before_dlr`  convertthumbnailsFFmpegThumbnailsConvertor)rC  r   r`  exec_before_dl_cmdExec)rC  exec_cmdr`  FFmpegExtractAudio)rC  preferredcodecpreferredqualitynopostoverwritesrQ   FFmpegVideoRemuxer)rC  preferedformatFFmpegVideoConvertorrC  FFmpegEmbedSubtitlezno-keep-subsalready_have_subtitleTrX   r   rS      c              3   (   #    U  H  oS Lv   M
     g 7fNrV   ).0ts     r   	<genexpr>(legacy_postprocessors.<locals>.<genexpr>  s     $@Cqd]Cs   ModifyChapters)rC  remove_chapters_patternsremove_sponsor_segmentsremove_rangessponsorblock_chapter_titleforce_keyframesaddchaptersembed_infojsonFFmpegMetadata	if_existsadd_metadataadd_chaptersadd_infojson	sponskrubF	SponSkrub)rC  pathr    cutforceignoreerror	_from_clir   EmbedThumbnail)rC  already_have_thumbnailrP   pl_thumbnailsplit_chaptersFFmpegSplitChapters)rC  r  XAttrMetadata
after_move)/r   r   r%  r&  r_   r(  r\  sponsorblock_apir|   convertsubtitlesre  rg  r  r  r  rm  rQ   r  embedsubtitlesr   r   r   r   
startswithr,  r  r.   lenr   tupler   r1  r~  force_keyframes_at_cutsaddmetadatasponskrub_pathsponskrub_argssponskrub_cutsponskrub_forcer  embedthumbnailr   r/   r   r  xattrsri  )r>   r:   rA  rU   r   sponsorblock_queryppr{  r}  regexdurr  r  r  s                 r   r/  r/    s   N//$2J2JJ&--
 	 t)400$t6677!,((!	
 	 #**!
 	
 /--/$BvJb!t($//.,,
 	
 t)400//
 	
 '".. $ 1 1 $ 5 5	
 	 t\4(('"oo
 	 )"..
 	 *+##Ik(I &'b!%%.*K"&D!7!7".0"m%%C  s600%)//#2FGHC3x1}$@C$@!@!@$$U3Z0 ''7 & 1#(@'+'?'?**.*I*I#;;
 	 $t4KT#3T:N;.%&%!,!%!1!1B~!,~!/~b!t[%(5''''%%))>>T1
 	 "&"5"5 #O")$0F"N 	#&<
 	 &"&D$,,--/1^,t%t,,(#;;
 	 {{uo67}} 
 	 r]   ru  )rP   )__doc__r-   r)  rP   r   r   r   r   rF   r1   r  r/  rV   r]   r   <module>r     s3    .   # #)5"podEr]   