
    VGh*                     t    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mZ ddlmZ  G d d      Zy)    N   )expand_pathtraverse_objversion_tuplewrite_json_file)__version__c                   P    e Zd Zd Zd Zd Zed        ZddZd Z	dddd	Z
d
 Zy)Cachec                     || _         y N)_ydl)selfydls     U/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/cache.py__init__zCache.__init__   s	    	    c                     | j                   j                  j                  d      }|6t        j                  dd      }t        j
                  j                  |d      }t        |      S )NcachedirXDG_CACHE_HOMEz~/.cachezyt-dlp)r   paramsgetosgetenvpathjoinr   )r   res
cache_roots      r   _get_root_dirzCache._get_root_dir   sQ    ii"":.;#3Z@J'',,z84C3r   c                    t        j                  d|      s
J d|       t        j                  j	                  |d      j                  dd      }t        j                  j                  | j                         || d|       S )Nz	^[\w.-]+$zinvalid section  )safe%,.)
rematchurllibparsequotereplacer   r   r   r   )r   sectionkeydtypes       r   _get_cache_fnzCache._get_cache_fn   st    xxg.N2B7+0NN.ll  2 .66sC@ww||D..0'cU!E7;KLLr   c                 P    | j                   j                  j                  d      duS )Nr   F)r   r   r   )r   s    r   enabledzCache.enabled   s"    yy##J/u<<r   c                    |dv sJ | j                   sy | j                  |||      }	 t        j                  t        j                  j                  |      d       | j                  j                  d| d| d       t        t        |d|       y # t        $ r8 t        j                         }| j                  j                  d|d	|        Y y w xY w)
NjsonT)exist_okzSaving r$   z	 to cache)yt-dlp_versiondatazWriting cache to z	 failed: )r0   r.   r   makedirsr   dirnamer   write_debugr   r   	Exception	traceback
format_excreport_warning)r   r+   r,   r6   r-   fntbs          r   storezCache.store!   s    	!!!||e4	NKK+d;II!!GG9AcU)"DE{DI2N 	N%%'BII$$'8it%LM	Ns   A)B >CCc                     t        |d      }|sd|id}}|rt        |      t        |      k\  r|d   S | j                  j                  d| d| d       y )Nr5   r6   z
2022.08.19z"Discarding old cache from version z (needs ))r   r   r   r9   )r   r6   min_verversions       r   	_validatezCache._validate0   sb    t%56#TNL'D-0M'4JJ<		 B7)8T[S\\]^_r   N)rC   c          	         |dv sJ | j                   s|S | j                  |||      }t        j                  t              5  	 t        |d      5 }| j                  j                  d| d| d       | j                  t        j                  |      |      cd d d        cd d d        S # 1 sw Y   nxY wny# t        t        f$ rg 	 t        j                  j                  |      }n!# t        $ r}	t!        |	      }Y d }	~	nd }	~	ww xY w| j                  j#                  d| d| d	       Y nw xY wd d d        |S # 1 sw Y   |S xY w)
Nr2   zutf-8)encodingzLoading r$   z from cachezCache retrieval from z	 failed (rB   )r0   r.   
contextlibsuppressOSErroropenr   r9   rE   r3   load
ValueErrorKeyErrorr   r   getsizestrr=   )
r   r+   r,   r-   defaultrC   cache_fncachef	file_sizeoes
             r   rL   z
Cache.load8   sG   	!!!||N%%gsE:  ) 
	b	b(W5 FII))HWIQse;*OP>>$))F*;WEF F
	b 
	bF F F ) b( " 9I ( #BI(		((+@
)T]S^^_)`ab
	b 
	b ss   D:B7AB*	B7*B3	/B76D:7D-C'&D-'	D0D ;D- D%D-*D:,D--D::Ec                    | j                   s| j                  j                  d       y | j                         t	        fddD              st        d d      | j                  j                  d dd	       t        j                  j                        r2| j                  j                  d
d	       t        j                         | j                  j                  d
       y )NzFCache is disabled (Did you combine --no-cache-dir and --rm-cache-dir?)c              3   &   K   | ]  }|v  
 y wr    ).0termr   s     r   	<genexpr>zCache.remove.<locals>.<genexpr>S   s     C$DH$Cs   )cachetmpzNot removing directory z& - this does not look like a cache dirzRemoving cache dir z .T)skip_eolr$   )r0   r   	to_screenr   anyr:   r   r   existsshutilrmtree)r   r   s    @r   removezCache.removeM   s    ||II hi%%'C2BCC5hZ?efgg		!(2. 	 	?77>>(#IId3MM(#		C r   r2   )r3   N)__name__
__module____qualname__r   r   r.   propertyr0   r@   rE   rL   rd   rX   r   r   r
   r
      sC     M
 = =N` *!r   r
   )rH   r3   r   r%   rb   r;   urllib.parser'   utilsr   r   r   r   rD   r   r
   rX   r   r   <module>rk      s/      	 	    L L  N! N!r   