
    VGhI                     j    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y)    N   )InfoExtractor   )ExtractorErrorfloat_or_noneint_or_noneparse_qstraverse_objtruncate_stringtry_getunescapeHTMLupdate_url_queryurl_or_noneurlencode_postdatac                      e Zd ZdZdZdi dddddd	d
ddddddddddddddddedededdddd d!id"d#d$i dd%dddd&d
d'dd(dddd)dd*dd+dd,dd-dedededddd.d/d0i dd1dddd2d
d3dd4dddd5dd6dd7dd8dd9dedededd:dd;d d!id"d<d=d>d?d@dAdBdCeeeddDdEdFdGdHdIdJddKdLdLdMddNdOdPeeeddQdRd/dSdTdUddVdWdWdXdYdZd[d\ddeeed]d/d^d_d`ddadbdbdcdddPdedfdeeedgdhdidjdkddldmdmdndodpdqdrdeeedsdtidud d!id"dvdwddxdydydzd{d|d}d~deeedsdtidud!d!dd"ddddddddeeed:dddddddd!ddd!ddd!ddd!ddd!ddd!ddd!dgZd Zd Zd Z	d Z
y)RedditIEredditzbhttps?://(?:\w+\.)?reddit(?:media)?\.com/(?P<slug>(?:(?:r|user)/[^/]+/)?comments/(?P<id>[^/?#&]+))zHhttps://www.reddit.com/r/videos/comments/6rrwyj/that_small_heart_attack/idzv89llsvexdzextmp4
display_id6rrwyjtitlezThat small heart attack.	alt_title	thumbnailzre:^https?://.*\.(?:jpg|png)
thumbnailszcount:4	timestampiЅYupload_date20170805uploaderAntw87duration   
like_countdislike_countcomment_count	age_limitr   
channel_idvideos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90bu6wzHHeat index was 110 degrees so we offered him a cold drink. He went fo...z_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nip71rzHI plan to make more stickers and prints! Check them out on my Etsy! O...zpI 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   wzqkxpzH[Finale] Kamen Rider Revice Episode 50 "Family to the End, Until the ...zb[Finale] Kamen Rider Revice Episode 50 "Family to the End, Until the Day We Meet Again" Discussionz$md5:5b7deb328062b164b15704c5fd67c335TheTwelveYearOld
KamenRiderg  A20220828)r   r   r   descriptionr!   r)   r'   r%   r&   r(   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(   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&   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&   r%   z=Requires account that has opted-in to the GenZedong subreddit)r,   r6   r-   skipz]https://www.reddit.com/r/Unexpected/comments/1cl9h0u/the_insurance_claim_will_be_interesting/a2mdj5d57qyc11cl9h0uz'The insurance claim will be interestingdarrenpauli
Unexpected5   20240506inO8fenz
mincount:1)r   r   r   r   r   r!   r)   r#   r   r   r(   r'   r&   r%   	subtitleszbhttps://www.reddit.com/r/soccer/comments/1cxwzso/tottenham_1_0_newcastle_united_james_maddison_31/xbmj4t3igy1d11cxwzsoz7Tottenham [1] - 0 Newcastle United - James Maddison 31'
Woodstoviasoccer   20240522i&Mf)r+   writesubtitleszBhttps://old.reddit.com/r/ketamine/comments/degtjo/when_the_k_hits/gqsbxts133r31degtjozWhen the K hitsz	[deleted]ketamine"   zre:https?://.+/.+\.(?:jpg|png)g  @fA20191007)r   r   r   r   r   r!   r)   r'   r%   r&   r(   r#   r   r   r   )r,   r-   z/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; )rr   errors.r   z!Unable to login, Reddit API says rw   cookiez'Unable to login, no cookie was returned)_download_jsonr   r   joinr
   str)selfusernamepasswordcaptchaloginrz   s         `/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-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           	      \   | j                  ddd       t        | j                  d      ddt        j                  j
                  ht        j                  ht        hf      xs i }d|d<   | j                  ddt        j                  j                  t        j                  |                   y )	N
reddit.comover181https://www.reddit.com/_optionsvalueTpref_gated_sr_optin)_set_cookier
   _get_cookiesurllibparseunquoterr   loadsdictquotedumps)r   optionss     r   _real_initializezRedditIE._real_initialize  s    x5t001JK&,,"6"6!7$**vNO P VSU 	)-%&z6<<3E3EdjjQXFY3Z[r   c                 F    d| d}| j                  ||d      rdd|igiS y )Nhttps://v.redd.it/z/wh_ben_en.vttr`   )itemr_   r,   )_is_valid_url)r   video_idcaption_urls      r   _get_subtitleszRedditIE._get_subtitles(  s>    *8*NCk8+FE;/011 Gr   c                 
   | j                  |      j                  dd      \  }}	 | j                  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   }g fd}t        |d       xs g D ][  }	t	        |	t              s ||	j                  d             |	j                  d      }
t	        |
t              sM|
D ]
  } ||        ] dddj                  |j                  d            dt        |dt        d !      hfdt         hfd"t         ht"        fd#t$        hfd$t         hfd%t         hfd&t&        hfd't&        hfd(t&        hfd)	      }t(        j*                  j-                  |      }d*|j.                  v r&d+| d+|j0                  v rg }t        |d,t        -      D ]  }|j                  d      r|j                  d.      d/k7  r)g }|j                  d0      r1|j3                  | j5                  t7        |d0         |d1d2d34             |j                  d5      r0|j3                  | j9                  t7        |d5         |d6d37             |s|j;                  |d   ||d8|        |r | j<                  ||fi |S | j?                  d9d	|:       i |d|iS t        |d;d3<      }|rwd=D cg c]  t        |fd>       }}|}| jA                  d?|d@   dA|B      }|d   xs dC| dD}|dE   xs dC| dF}t        tC        |      dGdGddH hfi      }tE        ||      }t7        |d@         t'        |j                  dI            t'        |j                  dJ            t'        |j                  dK            dLdMd1dNdOdP	g}| jG                  ||d1d2d34      \  }}|j3                  |       | jI                  ||d6d37      \  }}|j3                  |       | jK                  ||Q       i |||||xs | jM                  |      t'        |j                  dR            dSS |j.                  dTk(  r9| j?                  dUd	|:       i ||j0                  jO                  d+      dE   |dVS i ||dW|dXS # t        $ rh}t	        |j
                  t        j                        r>| j                  d      j                  d      rt        dd	
      | j                  d        d }~ww xY wc c}w )YNslugr   r   z/.jsoni  )expected_statusreddit_sessionz2Your IP address is unable to access the Reddit APITrp   z"Account authentication is required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   rw   childrenr,   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,   r   r   http_headers)
isinstancer   r   getappendr   r   )srcthumbnail_urlr   s     r   add_thumbnailz-RedditIE._real_extract.<locals>.add_thumbnailI  sm    c4('7M #M2$SWWW%56%cggh&78!)5 1	 r   c                     | d   d   S )Npreviewimages xs    r   <lambda>z(RedditIE._real_extract.<locals>.<lambda>V  s    Qy\(-C r   sourceresolutionsr<   )TFover_18)r   r(   r   H   )leftselftextcreated_utcauthor	subredditupsdownsnum_comments)	r   r   rB   r   r!   r)   r%   r&   r'   r   /)media_metadata.)expected_typeeRedditVideohlsUrlr   hlsF)m3u8_idfataldashUrldash)mpd_idr   )r   r   formatszNo media found)rq   r   ))N)crosspost_parent_list.)secure_mediamediareddit_video)get_all)dash_urlhls_urlc                      t        |          S )N)r   )r   ys    r   r   z(RedditIE._real_extract.<locals>.<lambda>  s    QqT0B r   z%https?://v\.redd\.it/(?P<id>[^/?#&]+)fallback_urlr   )defaultr   z/DASHPlaylist.mpdr   z/HLSPlaylist.m3u8fc                 0    | rdj                  | dg      S dS )N,subsAllz
hd,subsAll)r}   r   s    r   r   z(RedditIE._real_extract.<locals>.<lambda>  s    Q1i.)A L r   r   r   bitrate_kbpsnoneh264fallbackzDASH video, mp4_dash)	r,   r   r   tbracodecvcodecr   	format_idformat_note)targetr#   )r   r   r   r`   r#   z	v.redd.itzThis video is processing)r   r   url_transparent)r   _typer,   )(_match_valid_urlgroupr|   r   r   causerr   JSONDecodeErrorr   r   raise_login_requiredr
   r   r   listr   r~   filterr   r   r   r   urlparsenetlocpathextend_extract_m3u8_formatsr   _extract_mpd_formatsr   playlist_resultraise_no_formats_search_regexr	   r   #_extract_m3u8_formats_and_subtitles"_extract_mpd_formats_and_subtitles_merge_subtitlesextract_subtitlessplit)r   r,   r   r   rw   r   r   	video_urlr   imager   
resolutioninfo
parsed_urlentriesr   r   r   r   playlist_urlsr   dash_playlist_urlhls_playlist_urlqshls_fmtsr`   	dash_fmts	dash_subsr   s                     `         @r   _real_extractzRedditIE._real_extract.  s7   ..s399&$Gh	&&)$v6RU ' WD g&#-XXh'F&))*kl9$))*lm$'OPVx%XYYAwvz*1-f5K	
	 T#CDJ 	.EeT*%))H-.))M2K+t,"- .J!*-.	. % "1-11$((92EF
 4!O$<#=>%u- *SE6:+m_=%u-*SE2${m4")K=!9"0;-!@
" 

  \\**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&.#*$ 	$ " +t++GXFFF!!"2TH!U+d+D(++ $D +_hmo 1 &BCM  "J))8,~:VJ * 0H !.a 0 d6H
Rc4d,Q/c5GzQb3ch'78c1XYZ; B  00@"E $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!>("&J$*@*@*J'(8(8(DE  +!!"<tV^!_ oo++C03& 

"&	
 	
c  	!''4#7#78$$%>?CCDTU()]hlmm))*NO	ts   S U	U%A#UUN)__name__
__module____qualname___NETRC_MACHINE
_VALID_URLint_TESTSr   r   r   r  r   r   r   r   r      s   NvJY
.
5
 (
 /	

 3
 8
 )
 
 :
 
 
 #
 S
 S
 
  (!
& T
)2 n1
/
5
 (
 _	

 z
 8
 )
 
 :
 .
 
 #
 S
 S
 
  %!
	0 w
/
5
 (
 _	

   L
 8
 )
 
 :
 
 
 #
 S
 S
 
  .!
& T
+4 u_}A*&  %%
	( S1!"!+8%#  ,
	. 91!#9=".%#8  
	. R1!##''%%#  
  P). o!#>B%&%#  -
$ T
)2 t!#OS$"%#  -
$ ""
)4 T!"&*#$  :%%
* A
 S S o p r
 ~asFjL&\2\
r   r   )rr   urllib.parser   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   <module>r     s0      !   v
} v
r   