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   úAC:\Users\Broad\Desktop\BeinConnetFix\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|||ƒ}y”y&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   