3
b`                 @   st   d dl m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
 ddlmZmZ G dd deZdS )    )unicode_literalsN   )compat_getenv)expand_pathwrite_json_filec               @   sL   e Zd Zdd Zdd Zdd Zedd Zdd
dZdddZ	dd Z
dS )Cachec             C   s
   || _ d S )N)_ydl)selfydl r   <C:\Users\Broad\Desktop\All-Down\binaries\youtube_dl\cache.py__init__   s    zCache.__init__c             C   s6   | j jjd}|d kr.tdd}tjj|d}t|S )NcachedirZXDG_CACHE_HOMEz~/.cachez
youtube-dl)r   paramsgetr   ospathjoinr   )r	   resZ
cache_rootr   r   r   _get_root_dir   s
    
zCache._get_root_dirc             C   sL   t jd|std| t jd|s0td| tjj| j |d||f S )Nz^[a-zA-Z0-9_.-]+$zinvalid section %rzinvalid key %rz%s.%s)rematchAssertionErrorr   r   r   r   )r	   sectionkeydtyper   r   r   _get_cache_fn   s
    
zCache._get_cache_fnc             C   s   | j jjddk	S )Nr   F)r   r   r   )r	   r   r   r   enabled$   s    zCache.enabledjsonc             C   s   |dkst | jsd S | j|||}yVytjtjj| W n0 tk
rl } z|jtj	kr\ W Y d d }~X nX t
|| W n0 tk
r   tj }| jjd||f  Y nX d S )Nr   zWriting cache to %r failed: %s)r   )r   r   r   r   makedirsr   dirnameOSErrorerrnoEEXISTr   	Exception	traceback
format_excr   report_warning)r	   r   r   datar   fnosetbr   r   r   store(   s    zCache.storeNc       	      C   s   |dkst | js|S | j|||}yy&tj|ddd}tj|S Q R X W nh tk
r   ytj	j
|}W n. ttfk
r } zt|}W Y d d }~X nX | jjd||f  Y nX W n tk
r   Y nX |S )Nr   rzutf-8)encodingz#Cache retrieval from %s failed (%s))r   )r   r   r   ioopenr   load
ValueErrorr   r   getsizer!   IOErrorstrr   r'   )	r	   r   r   r   defaultZcache_fnZcachef	file_sizeoer   r   r   r1   ;   s$    z
Cache.loadc                s   | j s| jjd d S | j  t fdddD s@td  | jjd  dd	 tjj rz| jjd
dd	 t	j
  | jjd
 d S )NzFCache is disabled (Did you combine --no-cache-dir and --rm-cache-dir?)c             3   s   | ]}| kV  qd S )Nr   ).0term)r   r   r   	<genexpr>X   s    zCache.remove.<locals>.<genexpr>cachetmpz?Not removing directory %s - this does not look like a cache dirzRemoving cache dir %s .T)skip_eol.)r<   r=   )r   r   	to_screenr   anyr$   r   r   existsshutilrmtree)r	   r   )r   r   removeR   s    
zCache.remove)r   )r   N)__name__
__module____qualname__r   r   r   propertyr   r,   r1   rE   r   r   r   r   r      s   

r   )
__future__r   r"   r/   r   r   r   rC   r%   compatr   utilsr   r   objectr   r   r   r   r   <module>   s   