
    yf7                         d dl Z d dlZddl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  G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Zy)    N   )InfoExtractor   )ExtractorErrordetermine_extfloat_or_noneint_or_none
js_to_jsonmimetype2extparse_iso8601str_or_nonestrip_or_nonetraverse_objurl_or_nonec                   6    e Zd ZdZed        Zd Zed        Zy)ImgurBaseIE546c25a59c58ad7c                 6    | j                  d| t        |      S )Nzhttps://imgur.com/)
url_resultImgurIE)clsitem_ids     8/usr/lib/python3/dist-packages/yt_dlp/extractor/imgur.py_imgur_resultzImgurBaseIE._imgur_result   s    ~~ 27)<gwOO    c           	      R     | j                   d| d| d| j                   d|fi |S )Nzhttps://api.imgur.com/post/v1//z?client_id=z&include=media,account)_download_json
_CLIENT_ID)selfendpointvideo_idkwargss       r   	_call_apizImgurBaseIE._call_api   s@    "t"",XJazT__L]]st   	 r   c                     d| v ry | xs d S )Nz+Discover the magic of the internet at Imgur ss    r   get_descriptionzImgurBaseIE.get_description    s    8A=yDr   N)	__name__
__module____qualname__r   classmethodr   r$   staticmethodr)   r&   r   r   r   r      s4    "JP P 
  r   r   c                       e Zd ZdZddddddeeddedd	d
dddddddddddddededdedd
dddddddeededdddgZd  Zy!)"r   zLhttps?://(?:i\.)?imgur\.com/(?!(?:a|gallery|t|topic|r)/)(?P<id>[a-zA-Z0-9]+)zhttps://imgur.com/A61SaA1A61SaA1mp4z+MRW gifv is up and running without any bugsit@mT20141120z https://i.imgur.com/A61SaA1h.jpg)idexttitle	timestampupload_datedislike_countcomment_countrelease_timestamprelease_date
like_count	thumbnail)url	info_dictz https://i.imgur.com/A61SaA1.gifvTr>   only_matchingzhttps://i.imgur.com/crGpqCV.mp4z https://i.imgur.com/jxBXAMC.gifvjxBXAMCzFahaka puffer feedingixl[20180809g      >@z https://i.imgur.com/jxBXAMCh.jpg)r3   r4   r5   r6   r7   r;   r<   durationr9   r:   r=   r8   zhttps://imgur.com/zV03bd5 59df97884e8ba76143ff6b640a0e2904zV03bd5z	Ive - Liziwe20240315g(\uL@)r3   r4   r5   r6   r7   r<   r8   rD   r9   r:   r;   )r>   md5r?   c                 ~     j                  |      } j                  d|      }t        |dddd hfdffd      st        | dd	
       j	                  d| d|d      xs dg }t        |dddt
        hfdt        hfdt        hfdt        hfdt        hfddd hfdf      }|j                  d      }|rm|j                  d      s%t        t        |d            xs t        |      |d<   t        |d      dk(  rd|d<   |j                  dd       |j                  |        j                  dd d !      }|r fd"} |d#      }	t        |	j                               s |d      }	t        t!        j"                  d$|      d%dd& hfd' j$                  hfdt        hfd(f      }|D ]  }
|
j'                  |	        t         j)                  d)d*|t*        d+      d, j$                  hfdt        hfd-      }|r:|j'                  |	       |j'                  d.dd.dd.d.d/       |j                  |       t-        j.                   j0                  d 0      }d1t         |d2            t         |d3            t         |d4            t         |d5            d6}|d   r|j                  |       |s j3                  d7| d8d	
        j5                  |        j7                  d !       j9                   j;                  d!            d9t        |d:d; hfd<d=d> hfd<d?t
        hfd@t        hfdAt        hfdBt        hfdCdD hfdEt<        hfdFt<        hfdG	d      t        |ddddHdI hfdJ j8                  hfdKt>        hfdEt<        hfdFt<        hfdLfd      ||t         |dM            dNdOidPS )QNmediar   typec                     | dk(  xs d S )Nvideor&   )ts    r   <lambda>z'ImgurIE._real_extract.<locals>.<lambda>f   s    AL$8D r   )metadatais_animatedF)get_allz! is not a video or animated imageT)expectedzhttps://i.imgur.com/z.gifv)fatal r>   r4   widthheightsizerP   	has_soundc                     | rd S dS )Nnoner&   )bs    r   rO   z'ImgurIE._real_extract.<locals>.<lambda>s   s    14 & r   )r>   r4   rV   rW   filesizeacodec)rJ   r   	mime_type)rJ   r   rK   imager[   r^   
preferenceiz+(?s)<div class="video-elements">(.*?)</div>zvideo elementsdefaultc                 p    dD ci c]%  }|t        j                  |  d| d             ' c}S c c}w )N)rV   rW   :rb   )r	   _og_search_property)
media_typepr    webpages     r   og_get_sizez*ImgurIE._real_extract.<locals>.og_get_size   sN     1 {4#;#;zl!A3<OQXbf#;#ghh  s   *3rM   z7<source\s+src="(?P<src>[^"]+)"\s+type="(?P<type>[^"]+)".c                 *    | j                  d      d   S )Nr   r   )	partitionr'   s    r   rO   z'ImgurIE._real_extract.<locals>.<lambda>   s    Q[[5Ea5H r   src)	format_idr>   r4   zvar\s+videoItem\s*=zGIF info)transform_sourcerT   gifUrl)r>   r]   gif)rn   ra   r4   r^   vcodec	container)htmlrc   twitterztwitter:player:streamz"twitter:player:stream:content_typeztwitter:widthztwitter:height)rn   r>   r4   rV   rW   zNo sources found for video z. Maybe a plain image?r5   description
account_idc                 2    t        |       rt        |       S d S N)r	   str)as    r   rO   z'ImgurIE._real_extract.<locals>.<lambda>   s    ;q>Q W[ r   accountusernamec                      t        |       xs d S rz   r   xs    r   rO   z'ImgurIE._real_extract.<locals>.<lambda>   s    }Q?O?WSW r   
avatar_urlupvote_countdownvote_countr9   	is_maturec                     | rdS d S )N   r&   r   s    r   rO   z'ImgurIE._real_extract.<locals>.<lambda>   s    Ab 4 r   )
updated_at
created_atr   )	uploader_iduploaderuploader_urlr<   r8   r9   	age_limitr6   r:   r5   c                      t        |       xs d S rz   r   r   s    r   rO   z'ImgurIE._real_extract.<locals>.<lambda>   s    mA.>.F$ r   rw   rD   )r5   rw   rD   r6   r:   thumbnailUrlAcceptz*/*)r3   formatsr=   http_headers) 	_match_idr$   r   r   _download_webpager   r{   r	   getr   r   
setdefaultappend_search_regexanyvaluesrefinditer_proto_relative_urlupdate_search_jsonr
   	functoolspartial_html_search_metaraise_no_formats_remove_duplicate_formats_og_search_titler)   _og_search_descriptionr   r   )r    r>   r"   datar   	media_fmt	media_urlvideo_elementsrj   rX   fgif_jsonsearchtwitter_fmtri   s   `             @r   _real_extractzImgurIE._real_extractb   s   >>#&~~gx0D7A89:+0- #.7<> !H:-N!OZ^__(("8*E2HE ) K QNP 	 K=)C5>}-+/+/!;1P0QR5
 ( 	 MM%(	=='#/315 $6 $R9Fy9Q % D"677B&,	(#$$\37NN9%++:%t , 5  w'Dt{{}%"7+"VXfg"(+H*I!J!D$<$<#=>"\N3 G   $D$5$5&X!+5 %6 %: %t'?'?&@A!'+ 7<H %!&"% $#!&!  x(""4#9#9QUV #v&=>?'K LM !89!&)9":;
 uNN;'!!-hZ7MNY] " _&&w/ **7D*A//0K0KG]_0K0`a
 4 ,/[.\]&
5W4XY!*L;- H-}="2[M!B"1K=!A),G+HI:]OL&2]O%D
" 

 4'1j!$F#GH -0D0D/EF'-9:]OL&2]O%D; " 
* $VN%;<%u-1
 	
r   N)r*   r+   r,   
_VALID_URLint_TESTSr   r&   r   r   r   r   '   s    `J +B#%  !+&;
  2 1 2,#%& !+; 
$ +1 #%  !+&
	K6Fps
r   r   c                       e Zd ZdZd Zy)ImgurGalleryBaseIETc                    | j                  |      }| j                  d|dd      t        dd hfd| j                  hfd      }t        d	      rxfd
}| j                  xr# t        dd hf      xr t         |       d       }|s>| j                  t        | j                   |             |      }|j                  |       |S |}| j                  |      }d|d<   |j                  |       |S )NalbumsFi  )rT   expected_statusr5   c                      t        |       xs d S rz   r   r   s    r   rO   z2ImgurGalleryBaseIE._real_extract.<locals>.<lambda>   s    -*:*Bd r   rw   rv   is_albumc               3   F   K   t        dd dd hf      D ]  } |   y w)NrJ   c                 >    |j                  d      dk(  xs |d   d   S )NrK   rM   rP   rQ   )r   )_vs     r   rO   zKImgurGalleryBaseIE._real_extract.<locals>.yield_media_ids.<locals>.<lambda>   s"    aeeFmw.F.f!J-XeJf r   r3   c                      t        |       xs d S rz   )r   r   s    r   rO   zKImgurGalleryBaseIE._real_extract.<locals>.yield_media_ids.<locals>.<lambda>   s    Q)?4 r   )r   )m_idr   s    r   yield_media_idsz9ImgurGalleryBaseIE._real_extract.<locals>.yield_media_ids   s:     (!f?@0B C D Js   !image_countc                     | dk(  S )Nr   r&   )cs    r   rO   z2ImgurGalleryBaseIE._real_extract.<locals>.<lambda>   s
    !q& r   url_transparent_type)
r   r$   r   r)   _GALLERYnextplaylist_resultmapr   r   )r    r>   
gallery_idinfor   media_idresultr   s          @r   r   z ImgurGalleryBaseIE._real_extract   s
   ^^C(
~~h
%QT~UD BCD)D,@,@+AB#
 
 j)  2 8H7I'JK2*D1 
 --**O,=>
Ld#!J##J/)Wdr   N)r*   r+   r,   r   r   r&   r   r   r   r      s    H"r   r   c                       e Zd ZdZdZddddddd	d
ddddgdddddddddddeeedddddddgdddddd d!eed"dedd#d$dd%d&d'dd(d)d*dgd+dd,d-d.d-d.eeed/d0d1dd2dgd3dd4d5d6d7eed/ed6d8d7d9dgZy:);ImgurGalleryIEzimgur:galleryzUhttps?://(?:i\.)?imgur\.com/(?:gallery|(?:t(?:opic)?|r)/[^/?#]+)/(?P<id>[a-zA-Z0-9]+)zhttp://imgur.com/gallery/Q95koQ95koz"Adding faces make every GIF betterr3   r5      z"Zoinks! You've taken a wrong turn.)r>   r?   playlist_countskipz http://imgur.com/topic/Aww/ll5VkTr@   z!https://imgur.com/gallery/YcAQlkxImgurYcAQlkxr1   zRClassic Steve Carell gif...cracks me up everytime....damn the repost downvotes....iP201301191648642wittyusernameherez https://i.imgur.com/YcAQlkxh.jpgz=https://i.imgur.com/u3R4I2S_d.png?maxwidth=290&fidelity=grand)r3   r4   r5   r6   r7   r   r   r:   r=   r;   r   r9   r8   r<   )r>   add_iesr?   z$http://imgur.com/topic/Funny/N8rOuddzhttp://imgur.com/r/aww/VQcQPhMVQcQPhMzThe boss is hereiX2016101519138530thematrixcamz=https://i.imgur.com/qCjr5Pi_d.png?maxwidth=290&fidelity=grandz https://i.imgur.com/VQcQPhMh.jpg)r3   r4   r5   r6   r7   r   r   r9   r8   r   r:   r<   r;   r=   z#https://imgur.com/t/unmuted/6lAn9VQ6lAn9VQz
Penguins !   r>   r?   r   z#https://imgur.com/t/unmuted/kx2uD3CZVMv45iIntruderih[20180604gHz>@z https://i.imgur.com/ZVMv45ih.jpg)r3   r4   r5   r6   r7   r:   r;   r<   r8   r9   rD   r=   z#https://imgur.com/t/unmuted/wXSK0YHJCAP4iozre:I got the blues$ud   Luka’s vocal stylings.

FP edit: don’t encourage me. I’ll never stop posting Luka and friends.i[20180531z https://i.imgur.com/JCAP4ioh.jpg)r3   r4   r5   rw   r6   r7   r<   r8   rD   r9   r:   r=   r;   N)r*   r+   r,   IE_NAMEr   r   r   r&   r   r   r   r      sX   GiJ 09
 5 2
 39i#%$+!+;&[  
* 6
 09'#%%&  [!+&;
, 5!
 	 59#%!+&  ;
$ 59* D#%  !+;&
abFr   r   c                   B    e Zd ZdZdZdZdddddd	d
dddddiddgZy)ImgurAlbumIEzimgur:albumz2https?://(?:i\.)?imgur\.com/a/(?P<id>[a-zA-Z0-9]+)Fzhttp://imgur.com/a/j6OrjTr@   zhttps://imgur.com/a/iX265HXiX265HXzenen-no-shouboutair   r   r   zhttps://imgur.com/a/8pih2Edr3   8pih2Edr   )r>   r?   playlist_mincountN)r*   r+   r,   r   r   r   r   r&   r   r   r   r   i  sX    GFJH * -)
 	 -)
 Fr   r   )r   r   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r&   r   r   <module>r      sg     	 !   - &n
k n
b% %Pf' fR% r   