
    iJ`                         S r SSKJrJr  SSKJrJrJr  SSKJr   " S S\5      r	 " S S	\	5      r
 " S
 S\
5      r " S S\	5      r " S S\	5      r " S S\5      r " S S\5      r " S S5      r\" SSS9S 5       rg)z&Extractors for https://www.reddit.com/   )	ExtractorMessage   )textutil	exception)cachec                   `    \ rS rSrSrSrSrSrSrSr	Sr
S	 rS
 rS rS rS rS rS rS rSrg)RedditExtractor   z Base class for reddit extractorsreddit)
{category}z{subreddit}z7{id}{num:? //>02} {title|link_title:[:220]}.{extension}
{filename}z.reddit.comg333333?c              #   n  ^ ^#    [        T 5      T l        [        R                  R                  n[
        R                  R                  n[        R                  R                  nT R                  S5      nT R                  SS5      nT R                  SS5      nT R                  SS5      nT R                  SS5      =n(       a1  US:X  a  T R                  T l	        OUS	:X  a  T R                  T l	        SnT R                  S
5      n	U	c  T R                  R                  n	U	(       a  SOSn	T R                  5       n
[        5       mSn / nU
 GH  u  p/ nU(       Ga@  UR                  SS5      (       Ga(  S US'   T R                  US   5      US'   [         R"                  SU4v   TR%                  US   5        SUS'   SU;   a
   US   S   nOUnUS   nU(       aD  UR)                  S5      (       a.  [*        R,                  " UU5        [         R.                  UU4v   GO6SU;   aR  T R1                  U5       H<  nUS==   S-  ss'   [*        R,                  " UU5        [         R.                  UU4v   M>     OU(       aY  SU;   aS  T R3                  UU5       H<  nUS==   S-  ss'   [*        R,                  " UU5        [         R.                  UU4v   M>     O~US   (       aW  U(       aO  [*        R,                  " UU5        US   (       d  SUS'   ST R                  U5      -   n[         R.                  UU4v   OUS   (       d  UR5                  UU45        U	(       a>  US   =n(       a2  [*        R6                  " US S!5       H  nUR5                  UU45        M     OU(       a  [         R"                  SUS   4v   T R                  R                  (       GaJ  U(       a:  U(       d3  US   nUR9                  SS5        U(       d  [         R"                  SU4v   U GH  nU=(       a    SU;   nUS"   =(       d    SnS U;   nU(       d	  U(       d  M5  UR;                  5       nUUS'   T R                  US   5      =US'   US'   U(       aZ  T R3                  UU5       H<  nUS==   S-  ss'   [*        R,                  " UU5        [         R.                  UU4v   M>     US   US'   U(       d  M  [*        R6                  " US S!5       H  nUR5                  UU45        M     GM     U H  u  nnU(       a	  US   S#:X  a  M  US   S$:X  a  S%U-   nUR)                  S&5      (       a  M>  U" U5      =n(       a  UR5                  US   5        Mc  U" U5      (       a  Mr  U" U5      (       a  M  U(       a  S'U;   a  T R=                  U5      US('   [         R>                  [*        R@                  " U5      U4v   S(U;   d  M  US(	 M     GM     U(       a  X:X  a  g US-  nU U4S) jU 5       n
GM  ! [&         a    Un GNcf = f7f)*Nzparent-directory	recursion    previewsTembedsvideosdashytdlselftextF_mediacommentcreated_utcdate idnumcrosspost_parent_listurl)zhttps://i.redd.it/https://preview.redd.it/gallery_datar   media_metadatais_video	extensionmp4ytdl:is_selfselftext_htmlz href=""	body_html#/https://www.reddit.com)z&https://www.reddit.com/message/composez"https://reddit.com/message/composer#   preview	_fallbackc              3   j   >#    U  H(  nUT;  d  M  TR                   R                  U5      v   M*     g 7fN)api
submission).0sidselfvisiteds     H/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/reddit.py	<genexpr>(RedditExtractor.items.<locals>.<genexpr>   s3      49Sg% )##C((Es   
3"3)!	RedditAPIr5   RedditSubmissionExtractorpatternmatchRedditSubredditExtractorRedditUserExtractorconfig_extract_video_dash_extract_video_extract_video_ytdlcommentssubmissionssetgetparse_timestampr   	Directoryadd	Exception
startswithr   nameext_from_urlUrl_extract_gallery_extract_embedappendextract_iter
setdefaultcopy	_previewsQueueunescape)r9   match_submissionmatch_subreddit
match_user	parentdir	max_depthr   r   r   r   rI   depthextrar6   rH   urlsmediar"   embedtxtr   htmlhrefdatarA   r:   s   `                        @r;   itemsRedditExtractor.items   s    T?4<<BB2::@@(0066
KK 23	KKQ/	;;z40Xt,[[62262&*&>&>#6!&*&>&>#F;;z*xx((H#4&&(%E(3$
*..4"@"@,0Jy))-)=)="=1*3Jv&!++R;;KK
4 01()Ju%.*</$./F$G$KE !+,Cs~~ /     --c:>%kk3
::'50#'#8#8#?C&u-2- 11#zB")++sJ">> $@
  $4$=%)%8%8U%KE&u-2- 11%D")++uj"@@ &L
 z*! 11#zB#-k#::?
; 7")D,?,?,F"FC")++sJ">>'	2S*$56J,G%GS%G#'#4#4S)S#IC KKj(9: $J !++R!<<88$$$
%-a[
"--eQ7(")"3"3R"CC#+!'!G,<,G&{39r )T 1$T$)0*1Y9=9M9M#M2:4 4$v, !'+':':4'I $Uq 0 $ 5 5c4 @&-kk3&< < (J 15UJu-4'+'8'8y#'N $S$K 8 (O+ $,0 "&IC#a&C- 1v}6<~~ '  
 ! 0 55u5U1X.'___S5I5I#	T(904t0DD-%mmT]]3-?EE&$. $[ 1' "&q )4Z E.QJE49Kg "  ) /$.E/sE   F>X5X"LX5(B'X5X5"AX54.X5"X2.X51X22X5c                     g)z?Return an iterable containing all (submission, comments) tuplesN r9   s    r;   rI   RedditExtractor.submissions   s        c           	   #     #    US   nUc   U R                   R                  SUS   5        g UR                  S5      nUc   U R                   R                  SUS   5        g US    GH  nX4S      nUS   S	:w  d  S
U;  a5  U R                   R                  SUS   US   UR                  S5      5        MO  US
   nUR                  S5      =(       d)    UR                  S5      =(       d    UR                  S5      =n(       a)  UR                  S5      S   R	                  SSS5      v   M  U R                   R                  SUS   US   5        U R                   R                  U5        GM     g 7f)Nr$   zgallery %s: deletedr   r%   z$gallery %s: missing 'media_metadata'rj   media_idstatusvalidsz)gallery %s: skipping item %s (status: %s)ugifr(   ?r   	/preview./i.r   z4gallery %s: unable to fetch download URL for item %s)logwarningrK   	partitionreplaceerrordebug)r9   r6   gallerymetaitemri   srcr"   s           r;   rS    RedditExtractor._extract_gallery   sU    ^,?HH2Jt4DE~~./<HHC'-/G$DZ()DH~(CtO  ?t$d:&68JL s)CggclFcggenFFsFmmC(+33KJJJt$d:&68 s# %s   E+E-c           	   #   
  #    US   nU(       d  g UR                  5        GH]  u  pEUS   S:w  a1  U R                  R                  SUS   XER                  S5      5        M@  UR                  S5      =n(       a  UR                  S5      =(       d)    UR                  S5      =(       d    UR                  S	5      =n(       a1  S
U;  a%  UR	                  S5      S   R                  SSS5      nUv   M  U R                  R                  SUS   U5        U R                  R                  U5        GM  UR                  S5      =n(       a  SUS'   SU-   v   GM6  UR                  S5      =n(       d  GMQ  SUS'   SU-   v   GM`     g 7f)Nr%   rs   rt   z'embed %s: skipping item %s (status: %s)r   ru   rv   rw   r(   z
//externalrx   r   ry   rz   r   z2embed %s: unable to fetch download URL for item %sdashUrlr   _ytdl_manifestr)   hlsUrlhls)rj   r{   r|   rK   r}   r~   r   r   )r9   r6   rd   r   midri   r   r"   s           r;   rT   RedditExtractor._extract_embed   sW    %&ICH~(  =t$c88H+=? hhsm#s#''#,J#''%.JCGGENJ3J#3.!mmC03;;'3IHHNNL"4(#/ HHNN3'+++/5
+,m#****/4
+,m#/ &s   E*F1Fc                     SUS   -   $ )Nr0   	permalinkrm   r9   r6   s     r;   rG   #RedditExtractor._extract_video_ytdl   s    '*[*AAArp   c                 f    SUS   0US'    US   S   S   nSUS'   U$ ! [          a    US   s $ f = f)	Ntitle_ytdl_extrasecure_mediareddit_videodash_urlr   r   r"   )rO   )r9   r6   r"   s      r;   rE   #RedditExtractor._extract_video_dash   sY    %,j.A$B
=!	%^,^<ZHC+1J'(J 	%e$$	%s    00c                      SUS   0US'   US   $ )Nr   r   r"   rm   r   s     r;   rF   RedditExtractor._extract_video   s!    %,j.A$B
=!%  rp   c              #   Z  #     SUS   ;   a5  US   S   nSU;   a  US   v   SU;   a
  SUS   -   v   SU;   a
  SUS   -   v    US   S    HK  nUR                  S	5      =n(       a&  S
U;   a  US
   S   S   v   SU;   a  US   S   S   v   US   S   v   MM     g ! [          a;  nU R                  R                  SUR                  R                  U5         S nANS nAff = f! [          a;  nU R                  R                  SUR                  R                  U5         S nAg S nAff = f7f)Nreddit_video_previewr1   fallback_urlr   r)   hls_urlz%s: %simagesvariantsrw   sourcer"   r(   )rO   r{   r   	__class____name__rK   )r9   postvideoexcimager   s         r;   rY   RedditExtractor._previews   sE    
	B%i8Y(>?!U*//&!E*$555%!E)$444		Bi2$yy4484(&uoh7>>(&uoh7>>Hoe,, 3	  	BHHNN8S]]%;%;SAA	B  	BHHNN8S]]%;%;SAA	BsS   D+>B AC# D+
C %1CD+C  D+#
D(-1D#D+#D((D+)rF   r5   N)r   
__module____qualname____firstlineno____doc__categorydirectory_fmtfilename_fmtarchive_fmtcookies_domainrequest_intervalrj   rI   rS   rT   rG   rE   rF   rY   __static_attributes__rm   rp   r;   r   r      sQ    *H1MLLK"NQfN$8$<B%!Brp   r   c                   0    \ rS rSrSrSrSrSrS rS r	Sr
g	)
rB   i  z0Extractor for URLs from subreddits on reddit.com	subredditzT(?:https?://)?(?:\w+\.)?reddit\.com(/r/[^/?#]+(?:/([a-z]+))?)/?(?:\?([^#]*))?(?:$|#)z#https://www.reddit.com/r/SUBREDDIT/c                    UR                  5       u  U l        p#[        R                  " U5      U l        U(       a=  US:X  a  SU R                  ;  a  SU R                  S'   U =R
                  SU-   -  sl        [        R                  X5        g )Nsearchrestrict_sr1-)groupsr   r   parse_queryparamssubcategoryr   __init__)r9   rA   subr   s       r;   r   !RedditSubredditExtractor.__init__  sl    &+lln#&&v.h=#C-0M*c	)  -rp   c                 b    U R                   R                  U R                  U R                  5      $ r4   )r5   submissions_subredditr   r   rn   s    r;   rI   $RedditSubredditExtractor.submissions"  s!    xx--dnndkkJJrp   )r   r   N)r   r   r   r   r   r   r@   exampler   rI   r   rm   rp   r;   rB   rB     s"    :KDG3G.Krp   rB   c                   $    \ rS rSrSrSrSrSrSrg)RedditHomeExtractori&  z;Extractor for submissions from your home feed on reddit.comhomezJ(?:https?://)?(?:\w+\.)?reddit\.com((?:/([a-z]+))?)/?(?:\?([^#]*))?(?:$|#)https://www.reddit.com/rm   N)	r   r   r   r   r   r   r@   r   r   rm   rp   r;   r   r   &  s    EK:G'Grp   r   c                   :    \ rS rSrSrSrSrSrSrS r	S r
S	 rS
rg)rC   i.  z.Extractor for URLs from posts by a reddit useruser)r   Usersz{user[name]}zR(?:https?://)?(?:\w+\.)?reddit\.com/u(?:ser)?/([^/?#]+)(/[a-z]+)?/?(?:\?([^#]*))?$z!https://www.reddit.com/user/USER/c                 |    US   =n(       a  U =R                   SUSS  -   -  sl         [        R                  X5        g )Nr   r   r   )r   r   r   )r9   rA   r   s      r;   r   RedditUserExtractor.__init__6  s8    (?3?c!"g-  -rp   c                    U R                   u  pn[        R                  " U5      nU R                  R	                  U5      =U R
                  S'   nU R                  R                  UR                  S5      =(       d    UU=(       d    S-   [        R                  " U5      5      nUS;  nU R                  SU5      (       a  U R                  XT5      nU$ )Nr   namer   >   /saved/upvoted
/downvotedonly)r   r   unquoter5   
user_aboutkwdictsubmissions_userrK   r   rD   _only)r9   usernamer   qsr   rI   r   s          r;   rI   RedditUserExtractor.submissions;  s     KKr<<)%)XX%8%8%BBFdhh//XXf)ciR8$:J:J2:NP>>;;vt$$**[7Krp   c              #     #    SUS   -   nU Hm  u  pEU(       a  UR                  S5      U:w  a  SUS'   U=(       d    S Vs/ s H  nUR                  S5      U:X  d  M  UPM     nnU(       d	  U(       d  Mh  XE4v   Mo     g s  snf 7f)Nt2_r   author_fullnameFr   rm   )rK   )r9   rI   r   uidr6   rH   r   s          r;   r   RedditUserExtractor._onlyG  s     d4j $/ Jjnn->?3F',
8$ !)B .G;;01S8  .  
 XX ** %0s   >B A?A?#B5Brm   N)r   r   r   r   r   r   r   r@   r   r   rI   r   r   rm   rp   r;   rC   rC   .  s*    8K;M7G1G.

+rp   rC   c                   *    \ rS rSrSrSrSrSrS rSr	g)	r?   iU  z2Extractor for URLs from a submission on reddit.comr6   zk(?:https?://)?(?:(?:\w+\.)?reddit\.com/(?:(?:(?:r|u|user)/[^/?#]+/)?comments|gallery)|redd\.it)/([a-z0-9]+)z/https://www.reddit.com/r/SUBREDDIT/comments/id/c                 T    U R                   R                  U R                  S   5      4$ )Nr   )r5   r6   r   rn   s    r;   rI   %RedditSubmissionExtractor.submissions]  s"    ##DKKN355rp   rm   N)
r   r   r   r   r   r   r@   r   rI   r   rm   rp   r;   r?   r?   U  s    <K:G @G6rp   r?   c                   8    \ rS rSrSrSrSrSrSrSr	S r
S	 rS
rg)RedditImageExtractoria  z"Extractor for reddit-hosted imagesr   r   r   zQ(?:https?://)?((?:i|preview)\.redd\.it|i\.reddituploads\.com)/([^/?#]+)(\?[^#]*)?zhttps://i.redd.it/NAME.EXTc                     [         R                  " X5        US   nUS   U l        US:X  a  SU l        SU l        g X l        US   =(       d    SU l        g )Nr   r   zpreview.redd.itz	i.redd.itr      )r   r   pathdomainquery)r9   rA   r   s      r;   r   RedditImageExtractor.__init__j  sO    4'q!H	&&%DKDJ KqRDJrp   c              #      #    SU R                    SU R                   U R                   3n[        R                  " U5      n[
        R                  SU4v   [
        R                  X4v   g 7f)Nzhttps://r/   r   )r   r   r   r   rQ   r   rM   rR   )r9   r"   ri   s      r;   rj   RedditImageExtractor.itemsu  sY     Qtyyk$**>$$S)T))kk3$$s   A)A+)r   r   r   N)r   r   r   r   r   r   r   r   r@   r   r   rj   r   rm   rp   r;   r   r   a  s*    ,HKK'G*G	(%rp   r   c                   .    \ rS rSrSrSrSrSrSrS r	Sr
g	)
RedditRedirectExtractori|  z@Extractor for personalized share URLs produced by the mobile appr   redirectzT(?:https?://)?(?:(?:\w+\.)?reddit\.com/(?:(r|u|user)/([^/?#]+)))/s/([a-zA-Z0-9]{10})z/https://www.reddit.com/r/SUBREDDIT/s/abc456GHIJc              #      #    U R                   u  pnUS:X  a  SnSU SU SU 3nU R                  USS9nS[        0n[        R                  XV4v   g 7f)	Nrv   r   r   r/   z/s/r6   )notfound
_extractor)r   request_locationr?   r   rZ   )r9   sub_typer   	share_urlr"   locationri   s          r;   rj   RedditRedirectExtractor.items  sf     )-&Ys?H'z9+SL((|(D78mmX++s   AArm   N)r   r   r   r   r   r   r   r@   r   rj   r   rm   rp   r;   r   r   |  s#    JHK'G @G,rp   r   c                       \ rS rSrSrSrSrSrS rS r	S r
S	 rS
 rS rS r\" SSS9SS j5       rS rS rSS jrS rS rSrg)r>   i  zCInterface for the Reddit API

Ref: https://www.reddit.com/dev/api/
zhttps://oauth.reddit.comz6N9uN0krSDE-igz%Python:gallery-dl:0.8.4 (by /u/mikf1)c                    Xl         UR                  U l        UR                  n[        R                  " U" SS5      5      U l        U" SS5      U l        SU l        U" S5      S:w  a?  SU l        S U l	        [        R                  U l        U R                  R                  S5        g U R                  U l        U" S	5      nUc%  U R                  U l        S
U R"                  0U l	        OX0l        S
U" S5      0U l	        U R                   U R                  :X  a  U R                   nSU l        SnOUS S S[%        U5      S-
  -  -   nSnU R                  R                  SXC5        U" S5      nUb  US:X  a   SU R                   -   n['        U5      U l        OXPl        U R(                  (       d&  UR*                  R-                  SSUR.                  S9  g g )NrH   r   morecommentsFr5   oauthr0   zUsing REST APIz	client-idz
User-Agentz
user-agentTdefault   *customz'Using %s API credentials (client-id %s)zrefresh-tokenr	   r.   _optionsz+%7B%22pref_quarantine_optin%22%3A%20true%7D)r   )	extractorr{   rD   r   	parse_intrH   r   	_warn_429rootheadersr   noopauthenticater   ROOT	CLIENT_ID	client_id
USER_AGENTlen_refresh_token_cacherefresh_tokencookiesrJ   r   )r9   r  rD   r  kindtokenkeys          r;   r   RedditAPI.__init__  s   "==!!vj!'<=">59%=G#0DIDL $		DHHNN+,		DI{+I !% ,doo>!* ,f\.BC~~/ NN	!% %bqMC3y>!3C,DD	HHNN94L ?+E} 0DNN*%9#%>"%*"%%!!%% M$33 & 5 &rp   c                     SU-   S-   nU R                   (       a  SU-   OSnU R                  USU R                  05      u  pEUS   S   S   S   U R                  (       a  U R                  XS5      4$ S	4$ )
z;Fetch the (submission, comments)=-tuple for a submission idz
/comments//.jsont3_Nlimitri   childrenr   rm   )r   _callrH   _flatten)r9   submission_idendpointlink_idr6   rH   s         r;   r6   RedditAPI.submission  s    -/(:+/+<+<%-'$#zz(Wdmm4LM
6":.q1&948MMh0K 	KGIK 	Krp   c                 .    US-   nU R                  X25      $ )z8Collect all (submission, comments)-tuples of a subredditr  _pagination)r9   r   r   r  s       r;   r   RedditAPI.submissions_subreddit  s    x'11rp   c                 0    SU S3nU R                  X25      $ )z:Collect all (submission, comments)-tuples posted by a user/user/r  r!  )r9   r   r   r  s       r;   r   RedditAPI.submissions_user  s!    H:V,11rp   c              #   n  #    SnUSS.nSu  pVU(       d  [        U5      U-
  S:  a  SnSR                  X%US-    5      US'   US-  nU R                  X45      S   nUS	   S
    HC  nUS   S:X  a0  US	   R                  S5      =n	(       a  UR	                  U	5        M:  M<  US	   v   ME     U(       d  M  gg7f)z*Load additional comments from a submissionz/api/morechildrenjson)r  api_type)r   Fd   T,r  ri   thingsr  moreN)r  joinr  rK   extend)
r9   r  r  r  r   indexdoneri   thingr-  s
             r;   morechildrenRedditAPI.morechildren  s     &$&98}u$s*!$(*E!FF:SLE::h/7Dfh/=F*$V}00<<t< - =  -' 0 $s   B/B53B5c                 8    SU S3nU R                  U0 5      S   $ )Nr%  z/about.jsonri   )r  )r9   r   r  s      r;   r   RedditAPI.user_about  s&    H:[1zz(B'//rp   c                 T    U R                  U R                  5      U R                  S'   g)z:Authenticate the application by requesting an access tokenAuthorizationN)_authenticate_implr  r  rn   s    r;   r  RedditAPI.authenticate  s&     ##D$6$67 	_%rp   i  r   maxagekeyargNc           	      B   SnSU R                   S'   U(       a!  U R                  R                  S5        SUS.nO U R                  R                  S5        SS	S
.n[        R                  " U R
                  S5      nU R                  R                  USU R                   X4SS9nUR                  5       nUR                  S:w  aW  U R                  R                  SU5        [        R                  " SUR                  S5       SUR                  S5       S35      eSUS   -   $ )z"Actual authenticate implementationz*https://www.reddit.com/api/v1/access_tokenNr8  zRefreshing private access tokenr  )
grant_typer  zRequesting public access tokenz0https://oauth.reddit.com/grants/installed_clientDO_NOT_TRACK_THIS_DEVICE)r?  	device_idr   POSTF)methodr  ri   authfatal   zServer response: %sr,   r   z: messagezBearer access_token)r  r{   infor   HTTPBasicAuthr  r  requestr(  status_coder   r   AuthenticationErrorrK   )r9   r  r"   ri   rD  responses         r;   r9  RedditAPI._authenticate_impl  s    ;(,_%HHMM;<"1%24D HHMM:;$=!;=D !!$.."5>>)) * / }}3&HHNN0$7//TXXg&'r$((9*=)>bAC C4///rp   c                    U R                   U-   nSUS'    U R                  5         U R                  R                  X2U R                  S S9nUR                  R                  S5      nU(       a  [        U5      S:  a  U R                  R                  S5        U R                  (       a5  U R                  U R                  :X  a  U R                  R                  S5        SU l	        U R                  R                  UR                  S	   S
9  M   UR                  5       nSU;   a|  US   S:X  a  [         R(                  " 5       eUS   S:X  a  [         R*                  " 5       eU R                  R-                  U5        [         R"                  " UR                  S5      5      eU$ ! [         a5    [         R"                  " [$        R&                  " UR$                  5      5      ef = f)Nr   raw_json)r   r  rE  zx-ratelimit-remainingr   zAPI rate limit exceededzRegister your own OAuth application and use its credentials to prevent this error: https://gdl-org.github.io/docs/configuration.html#extractor-reddit-client-id-user-agentFzx-ratelimit-reset)secondsr   i  i  rG  )r  r  r  rK  r  rK   floatr{   r|   r  r  r
  rI  waitr(  
ValueErrorr   AbortExtractionr   remove_htmlAuthorizationErrorNotFoundErrorr   )r9   r  r   r"   rN  	remainingri   s          r;   r  RedditAPI._call  s   ii(" z~~--DLL . FH !((,,-DEIU9-1  !:;>>dnn&FHHMMAB
 "'##$,,-@A $ C5}}
 $=C'#6688=C'#1133t$//0CDDK  5//$$X]]35 55s   F! !?G c              #   4  #    U R                  SS5      nU R                  S[        S5      5      nUS:X  a&  U R                  R                  S5        [        S5      nU R                  R                  SS5      u  pVU R                  R                  S5      =n(       a  XrS'    U R                  X5      S	   nUS
    H  n	U	S   n
U	S	   nX[S   s=::  a  U::  d  M  O  M"  X0R                  US   5      s=::  a  U::  d  MB  O  MF  U
S:X  a<  US   (       a*  U R                  (       a   U R                  US   5      v   M  US4v   M  U
S:X  d  M  U R                  (       d  M  S U44v   M     US   (       d  g US   US'   M  ! [        R                   a     M  f = f7f)Nzid-minr   zid-maxinfiz"Ignoring 'id-max' setting "zik0zj"l   a r  ri   r  r  r   r   t3num_commentsrm   t1after)	_parse_idrS  r{   r   r  _get_date_min_maxrD   r  _decoderH   r6   r   rX  )r9   r  r   id_minid_maxdate_mindate_maxr  ri   childr  r   s               r;   r"  RedditAPI._pagination:  st    !,%,7ZHHNNAB5\F!^^==aNNN))'2252#7O::h/7Dj)V}V}] 3?x??,,tDz":DfDDt|/DMM%&*ood4j&A A #'(N$---"TGm+# *& ="7mF7O1  $-#?#? % $%sB   CF F<%F"E=8F
F F=FFFFc              #   J  #    / nUS   S   nU(       ac  UR                  S5      nUS   S:X  a   U(       a  UR                  US   S   5        MA  US   nUv   US   (       a  XES   S   S   -  nU(       a  Mc  U(       a"  U(       a  U R                  X#5       S h  vN   g g g  N7f)Nri   r  r   r  r-  replies)popr/  r3  )r9   rH   r  rb   queuer   s         r;   r  RedditAPI._flatten_  s      ,iilGv&(LL!<=foGMy!+F3J?? e u((888 78s   A3B#7"B#B!B#c                     U R                   R                  U5      nU(       a1  U R                  UR                  S5      S   R	                  5       5      $ U$ )N_r   )r  rD   rd  
rpartitionlower)r9   r  r   r8   s       r;   rb  RedditAPI._parse_ido  sC    nn##C(?Bt||CNN3/288:;OOrp   c                 0    [         R                  " US5      $ )N$0123456789abcdefghijklmnopqrstuvwxyz)r   bdecode)r9   r8   s     r;   rd  RedditAPI._decodes  s    ||C!GHHrp   )
r  r  r  rH   r  r  r{   r   r  r  r4   )r   r   r   r   r   r	  r
  r  r   r6   r   r   r3  r   r  r	   r9  r  r"  r  rb  rd  r   rm   rp   r;   r>   r>     su     &D I8J05dK2
2
(&08
 $q!0 "06$L#,J9 PIrp   r>   l    w r   r;  c                 (    U (       a
  U S   S:X  a  g U $ )Nr   r.   rm   )r  s    r;   r  r  w  s    qSLrp   N)r   commonr   r   r   r   r   r   r	   r   rB   r   rC   r?   r   r   r>   r  rm   rp   r;   <module>r{     s    - & $ $ Bi BDK K((2 ($+/ $+N	6 	6%9 %6,i ,&eI eIP k!$ %rp   