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 r¤d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   ú=C:\Users\Broad\Desktop\All-Down\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ƒ�rÂt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 � nþt tƒ jdƒtƒ�rž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"ƒ�}|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.jsonìE   “~MB™=5qÇEyG ½œ(d]6m_åp¿a®@0T³b*,!Ócé8OâsÍ6Äs·D”`‘W¤ä5WÆOdr1lQac je<1BOÔdÿC…N©všo[¸R\i^TEMè2g¾#î]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     