U
    $Pf                     @   sl   d dl mZ d dlZddlmZ ddlmZmZmZm	Z	 G dd deZ
G d	d
 d
eZG dd deZdS )    )unicode_literalsN   )InfoExtractor   )int_or_none
js_to_jsonmimetype2extExtractorErrorc                   @   sD   e Zd ZdZdddddddd	d
dd	d
dd	d
gZdd ZdS )ImgurIEzYhttps?://(?:i\.)?imgur\.com/(?!(?:a|gallery|(?:t(?:opic)?|r)/[^/]+)/)(?P<id>[a-zA-Z0-9]+)z https://i.imgur.com/A61SaA1.gifvZA61SaA1mp4z:re:Imgur GIF$|MRW gifv is up and running without any bugs$idexttitleurl	info_dictzhttps://imgur.com/A61SaA1Tr   Zonly_matchingzhttps://i.imgur.com/crGpqCV.mp4z https://i.imgur.com/jxBXAMC.gifvc                 C   sB  |  |}| dj|d|}t| jd|d d}t| jd|d d}| jd|dd d}|sltd| d	d
g }td|D ]F}|	|
ddd | |
dt|
d||ddid q|| jd|ddd}	|	r"| j|	|td}
|	dd||dddd| |
d |
dddid | | ||| j||ddS )Nzhttps://i.imgur.com/{id}.gifv)r   zvideo:width)defaultzvideo:heightz+(?s)<div class="video-elements">(.*?)</div>zvideo elementsz.No sources found for video %s. Maybe an image?T)expectedz7<source\s+src="(?P<src>[^"]+)"\s+type="(?P<type>[^"]+)"type/r   srcz
User-Agentzyoutube-dl (like wget))	format_idr   r   widthheighthttp_headersz#(?s)var\s+videoItem\s*=\s*(\{.*?\})zGIF codeF)fatal)Ztransform_sourceZgifinoneZgifUrlsize)r   Z
preferencer   r   r   ZacodecZvcodec	containerr   filesizer   )r   formatsr   )	_match_idZ_download_webpageformatr   Z_og_search_propertyZ_search_regexr	   refinditerappendgroup	partitionZ_proto_relative_urlr   Z_parse_jsonr   getZ_sort_formatsZ_og_search_title)selfr   Zvideo_idZwebpager   r   Zvideo_elementsr"   mZgif_jsonZgifd r-   >/tmp/pip-unpacked-wheel-7zdooeg3/youtube_dl/extractor/imgur.py_real_extract$   s    

        
     
zImgurIE._real_extractN)__name__
__module____qualname__
_VALID_URL_TESTSr/   r-   r-   r-   r.   r
      s$   r
   c                   @   sX   e Zd ZdZdZddddddd	d
ddddddddd
ddd
dgZdd ZdS )ImgurGalleryIEzimgur:galleryzShttps?://(?:i\.)?imgur\.com/(?:gallery|(?:t(?:opic)?|r)/[^/]+)/(?P<id>[a-zA-Z0-9]+)zhttp://imgur.com/gallery/Q95koZQ95koz"Adding faces make every GIF betterr   r      r   r   Zplaylist_countz http://imgur.com/topic/Aww/ll5VkTr   z!https://imgur.com/gallery/YcAQlkxZYcAQlkxr   zRClassic Steve Carell gif...cracks me up everytime....damn the repost downvotes....r   r   z$http://imgur.com/topic/Funny/N8rOuddzhttp://imgur.com/r/aww/VQcQPhMc                    sx     |} d| |d d }|drb fdd|d d D } |||d	|d
S  d| t |S )Nz!https://imgur.com/gallery/%s.jsondataimageZis_albumc                    s4   g | ],}| d r d|d   t |d  qS )hashhttp://imgur.com/%s)r*   
url_resultr
   ie_key).0r:   r+   r-   r.   
<listcomp>   s    
z0ImgurGalleryIE._real_extract.<locals>.<listcomp>Zalbum_imagesZimagesr   descriptionr<   )r#   Z_download_jsonr*   Zplaylist_resultr=   r
   r>   )r+   r   Z
gallery_idr9   entriesr-   r@   r.   r/      s    



zImgurGalleryIE._real_extractN)r0   r1   r2   IE_NAMEr3   r4   r/   r-   r-   r-   r.   r5   b   s2   r5   c                   @   s(   e Zd ZdZdZddddddgZd	S )
ImgurAlbumIEzimgur:albumz2https?://(?:i\.)?imgur\.com/a/(?P<id>[a-zA-Z0-9]+)zhttp://imgur.com/a/j6OrjZj6Orjz5A Literary Analysis of "Star Wars: The Force Awakens"r6      r8   N)r0   r1   r2   rD   r3   r4   r-   r-   r-   r.   rE      s   rE   )
__future__r   r%   commonr   utilsr   r   r   r	   r
   r5   rE   r-   r-   r-   r.   <module>   s   T-