
    yfC7                     V    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  G d de      Zy)    N   )InfoExtractor   )ExtractorErrorfloat_or_noneint_or_nonetraverse_objtry_getunescapeHTMLurlencode_postdataurl_or_nonec                   j   e Zd ZdZdZddddddd	d
dddeeedddddidddddddddddddeeeddddd d!dd"d#dd$d%d&d'd(eeedd)dddidd*d+d,d-d.d/d0d1d2dd3d4d5dd6d7d8eeedd9d:dd;d<d=dd>d?d@dAdBdCdDddeeedEddFdGdHddIdJdKdLd8dMdNdeeedOdPdQdRddSdTddSdUddSdVddSdWddSdXddSdYddSgZdZ Zd[ Zy\)]RedditIEredditzlhttps?://(?P<host>(?:\w+\.)?reddit(?:media)?\.com)/(?P<slug>(?:(?:r|user)/[^/]+/)?comments/(?P<id>[^/?#&]+))zHhttps://www.reddit.com/r/videos/comments/6rrwyj/that_small_heart_attack/zv89llsvexdzmp46rrwyjzThat small heart attack.zre:^https?://.*\.(?:jpg|png)zcount:4iЅY20170805Antw87   r   videos)idext
display_idtitle	thumbnail
thumbnails	timestampupload_dateuploaderduration
like_countdislike_countcomment_count	age_limit
channel_idskip_downloadT)url	info_dictparamsz\https://www.reddit.com/r/aww/comments/90bu6w/heat_index_was_110_degrees_so_we_offered_him_a/ 8b5902cfda3006bf90faea7adf765a49gyh95hiqc0b1190bu6wz_Heat index was 110 degrees so we offered him a cold drink. He went for a full body soak insteadzcount:7i>Q[20180720FootLoosePickleJuice   aww)r(   md5r)   zehttps://www.reddit.com/user/creepyt0es/comments/nip71r/i_plan_to_make_more_stickers_and_prints_check/zasobba6wp071nip71rzpI plan to make more stickers and prints! Check them out on my Etsy! Or get them through my Patreon. Links below.zcount:5i%Q`20210522
creepyt0es   u_creepyt0eszchttps://www.reddit.com/r/KamenRider/comments/wzqkxp/finale_kamen_rider_revice_episode_50_family_to/r   wzqkxpz$md5:72d3d19402aa11eff5bd32fc96369b37)r   r   )r(   playlist_countr)   zAhttps://www.reddit.com/r/dumbfuckers_club/comments/zjjw82/cringe/ 746180895c7b75a9d6b05341f507699aa1oneun6pa5a1zjjw82CringezOtaku-senpai6942020221212ic   dumbfuckers_club)r   r   r   r   r    r   r   r   r!   r"   r#   r$   r%   r&   z'https://www.reddit.com/comments/124pp33 15eec9d828adcef4468b741a7e45a395antsenjc2jqa1124pp33z"Harmless prank of some old friendsDudezilaContagiousLaughter   20230328i"d)r   r   r   r   r    r&   r!   r   r   r   r%   r$   r#   r"   z@https://old.reddit.com/r/GenZedong/comments/12fujy3/based_hasan/ 3156ea69e3c1f1b6259683c5abd36e718bwtclfggpsa112fujy3zBased Hasan?KingNigelXLII	GenZedong20230408i´1d)r   r   r   r   r    r&   r!   r   r   r%   r$   r#   r"   z=Requires account that has opted-in to the GenZedong subreddit)r(   r2   r)   skipz/https://www.reddit.com/r/videos/comments/6rrwyj)r(   only_matchingzAhttps://www.reddit.com/r/MadeMeSmile/comments/6t7wi5/wait_for_it/zAhttps://old.reddit.com/r/MadeMeSmile/comments/6t7wi5/wait_for_it/z]https://www.reddit.com/r/videos/comments/6t7sg9/comedians_hilarious_joke_about_the_guam_flag/z^https://www.reddit.com/r/videos/comments/6t75wq/southern_man_tries_to_speak_without_an_accent/z`https://nm.reddit.com/r/Cricket/comments/8idvby/lousy_cameraman_finds_himself_in_cairns_line_of/zlhttps://www.redditmedia.com/r/serbia/comments/pu9wbx/ako_vu%C4%8Di%C4%87_izgubi_izbore_ja_%C4%87u_da_crknem/c                 6   | j                  dd d      d   }|rt        dd      | j                  d| d t        d||d	d
      dd      }dj                  t	        |d            }|rt        d| d      t	        |d	ddt
        hf      st        d      y )Nz6https://www.reddit.com/api/requires_captcha/login.jsonzChecking login requirementrequiredz(Reddit is requiring captcha before loginTexpectedz!https://www.reddit.com/api/login/z
login-mainjson)opuserpasswdapi_typez
Logging inzLogin request failed)datanoteerrnotez; )rU   errors.r   z!Unable to login, Reddit API says rZ   cookiez'Unable to login, no cookie was returned)_download_jsonr   r   joinr	   str)selfusernamepasswordcaptchaloginr]   s         9/usr/lib/python3/dist-packages/yt_dlp/extractor/reddit.py_perform_loginzRedditIE._perform_login   s    %%Dd(**46  !KVZ[[##/z:DGY" ""	[ H
 "+A $ C </IJK #DVH!MX\]]effh%FG !JKK H    c                 4
   | j                  |      j                  ddd      \  }}}| j                  d| d| d|dd	      }|s:|d
k7  rd
nd}| j                  | d|        | j                  d| d| d|d      }t	        |d      dk(  rM|j                  d      }|dk(  r| j                  d       n%|dk(  r| j                  d       nt        d|       |d   d   d   d   d   }|d   }|j                  d      }	|	du rd}
n	|	du rd}
nd }
g fd}t        |d       xs g D ][  }t        |t              s ||j                  d             |j                  d      }t        |t              sM|D ]
  } ||        ] |j                  d       t        |j                  d!            |j                  d"      |j                  d#      t        |j                  d$            t        |j                  d%            t        |j                  d&            |
d'	}t        j                  j!                  |      }d(|j"                  v r%d| d|j$                  v rg }t	        |d)t        *      D ]  }|j                  d      r|j                  d+      d,k7  r)g }|j                  d-      r1|j'                  | j)                  t+        |d-         |d.d/d0             |j                  d1      r0|j'                  | j-                  t+        |d1         |d2d3             |s|j/                  |d   ||d4|        |r"| j1                  |||j                  d             S t        d5d6      t	        |d7d8      }|r<d9D cg c]  t        |fd:       }}|}| j3                  d;|d<   d=|>      }|d   xs d?| d@}|dA   xs d?| dB}t+        |d<         t        |j                  dC            t        |j                  dD            t        |j                  dE            dFdGd.dHdIdJ	g}| j5                  ||d.d/d0      \  }}|j'                  |       | j7                  ||d2d3      \  }}|j'                  |       | j9                  ||K       i |||||t        |j                  dL            dMS |j"                  dNk(  r9| j;                  dOd|P       i ||j$                  j=                  d      dA   |dQS i ||dR|dSS c c}w )TNhostslugr   zhttps:///z/.jsonFi  )fatalexpected_statuszold.reddit.comzwww.reddit.comz request failed, retrying with )ro   errorreasonquarantinedz?Quarantined subreddit; an account that has opted in is requiredprivatez@Private subreddit; an account that has been approved is requiredz(HTTP Error 403 Forbidden; reason given: r   rZ   childrenr(   over_18T   c           	         t        | t              sy t        | j                  d            }|sy j	                  t        |      t        | j                  d            t        | j                  d            ddid       y )Nr(   widthheightAcceptz*/*)r(   rx   ry   http_headers)
isinstancedictr   getappendr   r   )srcthumbnail_urlr   s     rg   add_thumbnailz-RedditIE._real_extract.<locals>.add_thumbnail   sm    c4('7M #M2$SWWW%56%cggh&78!)5 1	 ri   c                     | d   d   S )Npreviewimages )xs    rg   <lambda>z(RedditIE._real_extract.<locals>.<lambda>   s    Qy\(-C ri   sourceresolutionsr   created_utcauthor	subredditupsdownsnum_comments)	r   r   r   r    r&   r"   r#   r$   r%   z
reddit.com)media_metadata.)expected_typeeRedditVideohlsUrlr   hls)m3u8_idrn   dashUrldash)mpd_idrn   )r   r   formatszNo media foundrS   ))N)crosspost_parent_list.)secure_mediamediareddit_video)get_all)dash_urlhls_urlc                      t        |          S )N)r   )r   ys    rg   r   z(RedditIE._real_extract.<locals>.<lambda>*  s    QqT0B ri   z%https?://v\.redd\.it/(?P<id>[^/?#&]+)fallback_urlvideo_id)defaultzhttps://v.redd.it/z/DASHPlaylist.mpdr   z/HLSPlaylist.m3u8ry   rx   bitrate_kbpsnoneh264fallbackzDASH video, mp4_dash)	r(   ry   rx   tbracodecvcodecr   	format_idformat_note)targetr!   )r   r   r   	subtitlesr!   z	v.redd.itzThis video is processing)rT   r   )r   r   url_transparent)r   _typer(   )_match_valid_urlgroupr_   	to_screenr	   r~   raise_login_requiredr   r
   r|   r}   listr   r   urllibparseurlparsenetlocpathextend_extract_m3u8_formatsr   _extract_mpd_formatsr   playlist_result_search_regex#_extract_m3u8_formats_and_subtitles"_extract_mpd_formats_and_subtitles_merge_subtitlesraise_no_formatssplit)rb   r(   rk   rl   r   rZ   fallback_hostrq   	video_urlru   r%   r   imager   
resolutioninfo
parsed_urlentriesr   r   r   r   playlist_urlsr   dash_playlist_urlhls_playlist_urlhls_fmtsr   	dash_fmts	dash_subsr   s                        `        @rg   _real_extractzRedditIE._real_extract   s   #44S9??PTUdH""tfAdV6*HESV # X048H0H,N^MNNdV#B=/RS&&=/4&7SV ' XD g&#-XXh'F&))*kl9$))*lm$'OPVx%XYYAwvz*1-f5K	((9%d?III
	 T#CDJ 	.EeT*%))H-.))M2K+t,"- .J!*-.	. XXg&$&txx'>?*((;/%dhhuo6('):;(.)AB"

 \\**95
 :,,,1XJaJOO1SG%d,CSWX yy%))C.M*I99X&NN4#=#=$U8_5xPU]b $> $d e99Y'NN4#<#<$U9%56W\ $= $^ _NN#Dk&.#*$ 	$ " ++GXtxx?PQQ !1DAA $D +_hmo 1 &BCM  "J))8,~:VJ * 0H !.a 0 d6H
Rc4d,Q/c5GzQb3c $L$@A%l&6&6x&@A$\%5%5g%>?"<#3#3N#CD  '5
 
G #'"J"J *eU% #K #QHiNN8$#'#J#J!:fE $K $K IyNN9%!!)I!>("&'(8(8(DE  +!!"<tV^!_ oo++C03& 

"&	
 	
gs   TN)	__name__
__module____qualname___NETRC_MACHINE
_VALID_URLint_TESTSrh   r   r   ri   rg   r   r      s+   N AJY "/8##%   "
$ T
'0 n1!"v8##%.  
	. w!" H8##%$  (
$ T
)2 u;
	 S1!"+8%#  ,
	, 91!#9".%#8  
	, R1!##'%%#  
 P'* A
 S S o p r
 ~{`FDL&Y
ri   r   )urllib.parser   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   ri   rg   <module>r      s(     !	 	 	Q
} Q
ri   