3
b`                 @   s   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 ddlmZ ddlmZ dd	 Zd
d Zdd ZefddZdS )    )unicode_literalsN)zipimporter   )compat_realpath)encode_compat_str)__version__c             C   s   ddl m} t| tsttt|d d d d d }dtt|d|d |d  j	 }|d t| d | }d	}||| j
 j	 7 }|t|d d
 k rdS d|t|d  d d  d | }||kS )Nr   )sha256      r   z%x      0s&   3031300d060960864801650304020105000420   Fs   0001   s   ffs   00)hashlibr   
isinstancebytesAssertionErrorlenbinpowintencode	hexdigest)message	signaturekeyr   Z	byte_sizeasn1expected r   BC:\Users\Broad\Desktop\BeinConnetFix\binaries\youtube_dl\update.py
rsa_verify   s     "$r    c          7   C   s  d}|d }|d }d*}t t jdt rDttd rD| d d	S y|j|j jd
j	 }W n0 t
k
r   |r| ttj  | d d	S X |tkr| dt d  d	S y"|j|j jd
}tj|}W n2 t
k
r   |r| ttj  | d d	S X d|kr| d d	S |d }	|d= ttj|ddjd
|	|sR| d d	S |d }
dd }|t||
kr| dt  d	S | d|
 d  |d |
 }t| |d  tttdrtjntjd }tj|tjs| d|  d	S ttdr|}tjj|}tj|tjs*| d|  d	S y&|j|d d }|j }|j  W n8 ttfk
r   |r|| ttj  | d d	S X t j!|j" }||d d kr| d  d	S y(t|d! d"}|j#| W d	Q R X W n8 ttfk
r   |r
| ttj  | d# d	S X yJtjj$|d$}t%j|d%}|j#d&|||
f  W d	Q R X t&j'|g d	S  ttfk
r   |r| ttj  | d' d	S X  nt t jdtry&|j|d( d }|j }|j  W n8 ttfk
r   |r| ttj  | d d	S X t j!|j" }||d( d kr@| d  d	S y$t|d"}|j#| W d	Q R X W n8 ttfk
r   |r| ttj  | d' d	S X | d) d	S )+zCUpdate the program file with the latest version from the repositoryzhttps://yt-dl.org/update/ZLATEST_VERSIONzversions.jsonE   ~MB=5qEyG (d]6m_pa@0Tb*,!c8Os6sD`W5WOdr1lQac je<1BOdCNvo[R\i^TEM2g#]0k[9_V~S 69k	   
__loader__frozenzuIt looks like you installed youtube-dl with a package manager, pip, setup.py or a tarball. Please use that to update.Nzutf-8z>ERROR: can't find the current version. Please try again later.zyoutube-dl is up-to-date ()z:ERROR: can't obtain versions info. Please try again later.r   z>ERROR: the versions file is not signed or corrupted. Aborting.T)	sort_keysz8ERROR: the versions file signature is invalid. Aborting.Zlatestc             S   s   t tt| jdS )N.)tuplemapr   split)Zversion_strr   r   r   version_tupleL   s    z"update_self.<locals>.version_tuplezyoutube-dl is up to date (%s)zUpdating to version z ...versionsr   z!ERROR: no write permissions on %sexez(ERROR: unable to download latest versionr   z9ERROR: the downloaded file hash does not match. Aborting.z.newwbz&ERROR: unable to write the new versionzyoutube-dl-updater.batwz
@echo off
echo Waiting for file handle to be closed ...
ping 127.0.0.1 -n 5 -w 1000 > NUL
move /Y "%s.new" "%s" > NUL
echo Updated youtube-dl to version %s.
start /b "" cmd /c del "%%~f0"&exit /b"
                
z*ERROR: unable to overwrite current versionr   z>Updated youtube-dl. Restart youtube-dl to use the new version.)r!   r"   )(r   globalsgetr   hasattrsysopenreaddecodestrip	Exceptionr   	traceback
format_excr   jsonloadsr    dumpsr   print_notesr   
executableargvosaccessW_OKpathdirnamecloseIOErrorOSErrorr   r   r   writejoinio
subprocessPopen)	to_screenverboseopenerZ
UPDATE_URLZVERSION_URLZJSON_URLZUPDATES_RSA_KEYZ
newversionZversions_infor   Z
version_idr+   versionfilenamer-   	directoryurlhZ
newcontentZnewcontent_hashoutfZbatZbatfiler   r   r   update_self    s     
 
rV   c             C   s<   g }x2t | j D ]"\}}||kr|j|jdg  qW |S )Nnotes)sorteditemsextendr1   )r,   fromVersionrW   vZvdatar   r   r   	get_notes   s
    r]   c             C   s0   t ||}|r,| d x|D ]}| | qW d S )NzPLEASE NOTE:)r]   )rN   r,   r[   rW   Znoter   r   r   r>      s
    

r>   )
__future__r   rK   r;   r9   r   rA   rL   r3   	zipimportr   compatr   utilsr   rQ   r   r    rV   r]   r>   r   r   r   r   <module>   s     