3
˜b`*P  ã               @   sü   d dl mZ d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mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ dd	lm Z  dd
l!m"Z"m#Z# ddl$m%Z% ddl&m&Z& ddd„Z'ddd„Z(ddddgZ)dS )é    )Úunicode_literalszPublic DomainNé   )Ú	parseOpts)Úcompat_getpassÚcompat_shlex_splitÚworkaround_optparse_bug9161)Ú	DateRangeÚdecodeOptionÚDEFAULT_OUTTMPLÚDownloadErrorÚexpand_pathÚmatch_filter_funcÚMaxDownloadsReachedÚpreferredencodingÚread_batch_urlsÚSameFileErrorÚsetproctitleÚstd_headersÚwrite_stringÚrender_table)Úupdate_self)ÚFileDownloader)Úgen_extractorsÚlist_extractors)ÚMSO_INFO)Ú	YoutubeDLc           �      s°  t jdkrtjdd„ ƒ tƒ  tdƒ t| ƒ\‰}}|jd k	rH|jtd< |j	d k	r\|j	td< |j
d k	rºxR|j
D ]H}d|krˆˆjd| ƒ |jdd	ƒ\}}|jr®td
||f ƒ |t|< qnW |jràttd d t jd� t jdƒ g }|jd k	�rlyT|jdk�rt j}ntjt|jƒdddd�}t|ƒ}|j�rBtdt|ƒ d ƒ W n& tk
�rj   t jd|j ƒ Y nX |dd„ |D ƒ }tƒ ‰ ‡ fdd„|D ƒ}|j�rxpt|jƒD ]b‰tˆjˆj�sÀdnd d t jd� ‡fdd„|D ƒ}	x$|	D ]}
td|
 d t jd� �qêW �qªW t jdƒ |j�r°x‚t|jƒD ]t‰ˆj�s>�q.t ˆdˆjƒ}|dk�rZ�q.t!ˆdƒ�rŽd|}d}}|d*ˆj"t#j$|ƒt#j$|ƒf 7 }t|d t jd� �q.W t jdƒ |j%�rôd+d„ t&j'ƒ D ƒ}td,t(d-d.g|ƒ d t jd� t jdƒ |j)�r|j*d k	�s|j+d k	�rˆjd/ƒ |j+d k	�r@|j*d k�r@ˆjd0ƒ |j,d k	�rb|j-d k�rbˆjd1ƒ |j.d k	�r�|j/�s†|j0�s†|j1�r�ˆjd2ƒ |j2d k	�r²|j2dk�r²ˆjd3ƒ |j3d k	�rÔ|j3dk �rÔˆjd4ƒ |j/�rî|j1�rîˆjd5ƒ |j*d k	�r|j+d k�rt4d6ƒ|_+|j-d k	�r2|j,d k�r2t4d7ƒ|_,|j5d k	�rdt6j7|j5ƒ}|d k�r^ˆjd8ƒ ||_5|j8d k	�r–t6j7|j8ƒ}|d k�r�ˆjd9ƒ ||_8|j9d k	�rÈt6j7|j9ƒ}|d k�rÂˆjd:ƒ ||_9|j:d k	�rê|j:dk �rêˆjd;ƒ |j;d k	�r<|j;dk �rˆjd<ƒ |j:d k�r"ˆjd=ƒ |j;|j:k �rDˆjd>ƒ n|j:|_;|j<�rb|j<t&k�rbˆjd?ƒ ‡fd@dA„}|j=d k	�r†||j=ƒ|_=|j>d k	�rž||j>ƒ|_>|j?d k	�rÐt6j7|j?ƒ}|d k�rÊˆjdBƒ ||_?|j@d k	�rþt6j7|j@ƒ}|�søˆjdCƒ ||_@|jAdk�rtBdDƒ‚|jCdk�r4|jC|jAk �r4tBdEƒ‚|jD�rR|jEd€k�rRˆjdNƒ |jF�r„|jFjGdOƒjGdPƒ|_F|jFjHƒ �s„ˆjdQƒ |jId k	�r¦|jId�k�r¦ˆjdXƒ |jJd k	�rÈ|jJd‚k�rÈˆjd]ƒ |jKd k	�râtLjM|jKƒ}ntL|jN|jOƒ}|jD�r|jP �r|jQd k�rd^|_Q|jR�r,|jS �r,d_|_T|j.d k	�r@|j.�p®|jQd`k�rZ|j/�rZda�p®|jQd`k�rldb�p®|j/�r‚|j0�r‚dc�p®|j/�r�dd�p®|j1�ržde�p®|j0�r¬df�p®tU}tVjWjX|ƒd	  �rÜ|jD�rÜˆjdgjQ|ƒƒ |jY�p(|jZ�p(|j[�p(|j\�p(|j]�p(|j^�p(|j_�p(|j`�p(|ja�p(|jb}|jc}|jdd k	�rFt|jdƒn|jd}g }|je�rj|jfdh|jediœƒ |jD�rŒ|jfdj|jE|jF|jgdkœƒ |jI�r¦|jfdl|jIdmœƒ |jh�r¼|jfdndoiƒ |jJ�rÖ|jfdp|jJdqœƒ |ji�rì|jfdndriƒ |jj�	r|jk�	p |jl}|jfds|dtœƒ |�	sd_|_k|jm�	r4|jfdnduiƒ |jn�	rN|jfdv|jndwœƒ d }|jo�	rdtp|joƒ}d }|jq�	rztp|jqƒ}|jrd k�	rŠd nts|jrƒ}|j)|j*|j+|jt|ju|j<|j-|j,|jv�	pÄ|�	pÄ||jw|jY|jZ|j[|j\|j]|j`|j^|j_|ja�	pô|jc|jb|jx�
p||jy|jQ|jz||j2|j3|j{|j||j}|j5|j~|j=|j>|j|j€|j?|j�|j@|j‚|jƒ|j„|jA|jC|j…|j†|j‡|j.dk|jˆ|j‰|jŠ|j‹|jŒ|j�|jk|jl|jT|jS|jR|jŽ|j�|j�t‘|j’ƒt‘|j“ƒ|j”|j•|j|j–|j—|j˜|jP|j8|j9|j™|jš||j›|jœ|j||j�|jž|jŸ|j |j¡|j¢|j£|j¤|j¥|j¦|j§|j¨|j©|jª|j«||j¬|j­|j®|j:|j;|j¯|j°|j±|j²||j³|j´|jµ|j¶|||j·|j¸|j¹|jº|j»|j¼|j0d_k�r–|j0nd |j/d_k�rª|j/nd dxœx}t½|ƒ�â}|j¾�rÖt¾|j¿|j|jÀƒ |jÁ�rè|jÂjÃƒ  tÄ|ƒd	k �rF|jÅd k�rF|j¾�s|jÁ�rt jƒ  |jÆ| d k�r6t jÇd	d … n| ƒ ˆjdyƒ y,|jÅd k	�rf|jÈt|jÅƒƒ}n
|jÉ|ƒ}W n$ tÊk
�r–   |j¿dzƒ d{}Y nX W d Q R X t j|ƒ d S )ƒNÚwin32c             S   s   | dkrt jdƒS d S )NZcp65001zutf-8)ÚcodecsÚlookup)Úname© r    ú?C:\Users\Broad\Desktop\All-Down\binaries\youtube_dl\__init__.pyÚ<lambda>4   s    z_real_main.<locals>.<lambda>z
youtube-dlz
User-AgentZRefererú:z9wrong header formatting, it should be key:value, not "%s"r   z5[debug] Adding header from command line option %s:%s
Ú
)Úoutr   ú-Úrzutf-8Úignore)ÚencodingÚerrorsz[debug] Batch file urls: z&ERROR: batch file %s could not be readc             S   s   g | ]}|j ƒ ‘qS r    )Ústrip)Ú.0Úurlr    r    r!   ú
<listcomp>b   s    z_real_main.<locals>.<listcomp>c                s&   g | ]}t |tƒr|jˆ d ƒn|‘qS )r(   )Ú
isinstanceÚbytesÚdecode)r,   r-   )Ú_encr    r!   r.   d   s    z (CURRENTLY BROKEN)Ú c                s   g | ]}ˆ j |ƒr|‘qS r    )Zsuitable)r,   r-   )Úier    r!   r.   i   s    z  ZIE_DESCFÚ
SEARCH_KEYúcute kittensúslithering pythonsúfalling catúangry poodleúpurple fishúrunning tortoiseúsleeping bunnyúburping cowÚ5Ú10Úallz (Example: "%s%s:%s" )c             S   s   g | ]\}}||d  g‘qS )r   r    )r,   Zmso_idZmso_infor    r    r!   r.   {   s    zSupported TV Providers:
Zmsozmso namez4using .netrc conflicts with giving username/passwordzaccount username missing
z%TV Provider account username missing
zIusing output template conflicts with using title, video ID or auto numberz!auto number size must be positivez'auto number start must be positive or 0z)using title conflicts with using video IDz*Type account password and press [Return]: z6Type TV provider account password and press [Return]: zinvalid rate limit specifiedzinvalid min_filesize specifiedzinvalid max_filesize specifiedz$sleep interval must be positive or 0z(max sleep interval must be positive or 0z>min sleep interval must be specified, use --min-sleep-intervalzFmax sleep interval must be greater than or equal to min sleep intervalzRUnsupported TV Provider, use --ap-list-mso to get a list of supported TV Providersc                sF   | dkrt dƒ}n0yt| ƒ}W n" ttfk
r@   ˆ jdƒ Y nX |S )NÚinfÚinfinitezinvalid retry count specified)rA   rB   )ÚfloatÚintÚ	TypeErrorÚ
ValueErrorÚerror)ÚretriesZparsed_retries)Úparserr    r!   Úparse_retries²   s    
z!_real_main.<locals>.parse_retrieszinvalid buffer size specifiedz!invalid http chunk size specifiedzPlaylist start must be positivez0Playlist end must be greater than playlist startÚbestÚaacÚflacÚmp3Úm4aÚopusÚvorbisÚwavzinvalid audio format specifiedÚkÚKzinvalid audio quality specifiedÚmp4ÚflvÚwebmÚoggÚmkvÚaviz%invalid video recode format specifiedÚsrtÚvttÚassÚlrcz!invalid subtitle format specifiedzbestaudio/bestTz-1z#%(title)s-%(id)s-%(format)s.%(ext)sz%(id)s-%(format)s.%(ext)sz'%(autonumber)s-%(title)s-%(id)s.%(ext)sz%(title)s-%(id)s.%(ext)sz%(id)s.%(ext)sz%(autonumber)s-%(id)s.%(ext)szwCannot download a video and extract audio into the same file! Use "{0}.%(ext)s" instead of "{0}" as the output templateZMetadataFromTitle)ÚkeyZtitleformatZFFmpegExtractAudio)r_   ZpreferredcodecZpreferredqualityÚnopostoverwritesZFFmpegVideoConvertor)r_   Zpreferedformatr_   ZFFmpegMetadataZFFmpegSubtitlesConvertor)r_   ÚformatZFFmpegEmbedSubtitleZEmbedThumbnail)r_   Úalready_have_thumbnailZXAttrMetadataZExecAfterDownload)r_   Úexec_cmd)xÚusenetrcÚusernameÚpasswordÚ	twofactorÚvideopasswordÚap_msoÚap_usernameÚap_passwordÚquietÚno_warningsZforceurlZ
forcetitleZforceidZforcethumbnailZforcedescriptionZforcedurationZforcefilenameZforceformatZ	forcejsonÚdump_single_jsonÚsimulateÚskip_downloadra   ÚlistformatsÚouttmplÚautonumber_sizeÚautonumber_startÚrestrictfilenamesÚignoreerrorsÚforce_generic_extractorÚ	ratelimitÚnooverwritesrH   Úfragment_retriesÚskip_unavailable_fragmentsÚkeep_fragmentsÚ
buffersizeÚnoresizebufferÚhttp_chunk_sizeZ
continuedlÚ
noprogressÚprogress_with_newlineÚplayliststartÚplaylistendZplaylistreverseZplaylistrandomÚ
noplaylistZlogtostderrÚconsoletitleÚnopartÚ
updatetimeÚwritedescriptionÚwriteannotationsÚwriteinfojsonÚwritethumbnailÚwrite_all_thumbnailsÚwritesubtitlesÚwriteautomaticsubÚallsubtitlesÚlistsubtitlesÚsubtitlesformatÚsubtitleslangsÚ
matchtitleÚrejecttitleÚmax_downloadsÚprefer_free_formatsÚverboseÚdump_intermediate_pagesÚwrite_pagesÚtestÚ	keepvideoÚmin_filesizeÚmax_filesizeÚ	min_viewsÚ	max_viewsZ	daterangeÚcachedirÚyoutube_print_sig_codeÚ	age_limitÚdownload_archiveÚ
cookiefileZnocheckcertificateÚprefer_insecureÚproxyÚsocket_timeoutÚbidi_workaroundÚdebug_printtrafficÚprefer_ffmpegÚinclude_adsÚdefault_searchÚyoutube_include_dash_manifestr)   Úextract_flatÚmark_watchedÚmerge_output_formatÚpostprocessorsÚfixupÚsource_addressÚ	call_homeÚsleep_intervalÚmax_sleep_intervalÚexternal_downloaderÚlist_thumbnailsÚplaylist_itemsÚxattr_set_filesizeÚmatch_filterÚno_colorÚffmpeg_locationÚhls_prefer_nativeÚhls_use_mpegtsÚexternal_downloader_argsÚpostprocessor_argsÚcn_verification_proxyÚgeo_verification_proxyÚconfig_locationÚ
geo_bypassÚgeo_bypass_countryÚgeo_bypass_ip_blockÚ
autonumberÚusetitlezWYou must provide at least one URL.
Type youtube-dl --help to see a list of all options.z'--max-download limit reached, aborting.ée   )r6   r7   r8   r9   r:   r;   r<   r=   )r3   r>   r?   r@   éÿÿÿÿ)rË   N)rK   rL   rM   rN   rO   rP   rQ   rR   )rU   rV   rW   rX   rY   rZ   )r[   r\   r]   r^   )ËÚsysÚplatformr   Úregisterr   r   r   Ú
user_agentr   ZrefererÚheadersrG   Úsplitr—   r   Zdump_user_agentÚstdoutÚexitZ	batchfileÚstdinÚioÚopenr   r   ÚreprÚIOErrorr   r   r¢   ZIE_NAMEZ_WORKINGZlist_extractor_descriptionsÚgetattrÚhasattrr5   ÚrandomÚchoiceZap_list_msor   Úitemsr   rd   re   rf   rk   rj   rr   rÉ   rÈ   Zuseidrs   rt   r   rx   r   Zparse_bytesrœ   r�   rµ   r¶   ri   rH   rz   r}   r   r‚   rF   rƒ   ZextractaudioZaudioformatZaudioqualityr+   ÚisdigitZrecodevideoZconvertsubtitlesÚdater   ÚdayZ	dateafterZ
datebeforer›   ra   r�   rŽ   r�   r
   ÚosÚpathÚsplitextÚgeturlZgettitleZgetidZgetthumbnailZgetdescriptionZgetfilenameZ	getformatZgetdurationZdumpjsonrn   Z
print_jsonr£   ZmetafromtitleÚappendr`   ZaddmetadataZembedsubtitlesZembedthumbnailr‹   rŒ   Zxattrsrc   rÀ   r   rÁ   r»   r   rg   rh   rl   rm   ro   rp   rq   ru   rv   rw   ry   r{   r|   r~   Zcontinue_dlr€   r�   Zplaylist_reverseZplaylist_randomr„   r…   r†   r‡   rˆ   r‰   rŠ   r�   r‘   r’   r	   r“   r”   r•   r–   r˜   r™   rš   rž   rŸ   r    r¡   r¤   Zno_check_certificater¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r)   r®   r¯   r°   r²   r³   r´   r·   r¸   r¹   rº   r¼   r½   r¾   r¿   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   r   r   Z	to_screenÚ_openerZrm_cachedirÚcacheÚremoveÚlenZload_info_filenameZwarn_if_short_idÚargvZdownload_with_info_fileÚdownloadr   ) rê   ÚoptsÚargsÚhr_   ÚvalueZ
batch_urlsZbatchfdZall_urlsZmatchedUrlsÚmuÚdescZ	_SEARCHESZ_COUNTSÚtableZnumeric_limitrJ   Znumeric_buffersizeZnumeric_chunksizerß   rr   Zany_gettingZany_printingZdownload_archive_fnr±   rb   rÀ   rÁ   r»   Úydl_optsÚydlÚretcoder    )r2   r4   rI   r!   Ú
_real_main0   s²   






$
"

 
 
 


$















	






N








"
rö   c             C   sh   yt | ƒ W nV tk
r*   tjdƒ Y n: tk
rF   tjdƒ Y n tk
rb   tjdƒ Y nX d S )Nr   z;ERROR: fixed output name but more than one file to downloadz
ERROR: Interrupted by user)rö   r   rÌ   rÓ   r   ÚKeyboardInterrupt)rê   r    r    r!   ÚmainØ  s    rø   r   r   r   )N)N)*Ú
__future__r   Ú__license__r   rÕ   rá   rÛ   rÌ   Úoptionsr   Úcompatr   r   r   Úutilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Úupdater   Z
downloaderr   Z	extractorr   r   Zextractor.adobepassr   r   rö   rø   Ú__all__r    r    r    r!   Ú<module>   s(   @
   +
