
    idV                     8   S r SSKJrJr  SSKJrJrJrJrJ	r	  Sr
\" 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\5      r " S S\5      r " S S\R,                  5      rg)z&Extractors for https://www.tumblr.com/   )	ExtractorMessage   )textutildtoauth	exceptionz{(?:tumblr:(?:https?://)?([^/]+)|(?:https?://)?(?:(?:www\.)?tumblr\.com/(?:blog/(?:view/)?)?([\w-]+)|([\w-]+\.tumblr\.com))))	r   quotelinkanswervideoaudiophotochatsearchc                       \ 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S rS rS rS rSrg)TumblrExtractor   z Base class for tumblr extractorstumblr)
{category}{blog_name}z1{category}_{blog_name}_{id}_{num:>02}.{extension}z
{id}_{num}c                    U R                   S   =n(       a  US-   U l        O*U R                   S   =(       d    U R                   S   U l        [        U 5      U l        U R	                  5       U l        U R                  SS5      U l        U R                  SS5      U l        U R                  S	S5      U l	        U R                  S
S5      U l
        U R                  SS5      U l        U R                  SS5      U l        U R                  SS5      U l        [        U R
                  5      S:X  a.  [        [!        U R
                  5      5      U R                  l        O,U R
                  (       d  U R$                  R'                  S5        U R                  S:X  a  U R(                  U l        U R-                  SS 5      u  U l        U R                  l        g )Nr   .tumblr.com    r   avatarFinlineTreblogsexternaloriginalzfallback-delayg      ^@zfallback-retrieszno valid post types selectedz	same-blog)groupsblog	TumblrAPIapi_setup_posttypestypesconfigr   r   r   r   r    fallback_delayfallback_retrieslennextiter
posts_typelogwarning_skip_reblog_same_blog_skip_reblog_get_date_min_maxdate_minbefore)selfnames     H/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/tumblr.py_initTumblrExtractor._init!   sW   ;;q>!4!},DIA8$++a.DIT?**,
kk(E2kk(D1{{9d3J6J5"kk*:EB $,> Btzz?a"&tDJJ'7"8DHHHH;<<<;& $ ; ;D)-)?)?4)H&txx    c           	   #     #    S n[         R                  " S5      R                  U l        U R                  (       a  [         R                  " S5      R                  U l        [         R                  " S5      R                  U l        [         R                  " S5      R                  n[         R                  " S5      R                  nU R                  5        GH  nU R                  US   :  a    g US   U R                  ;  a  M.  SU;   a  US   nUS	   S
-   U l        OU(       d  U R                  R                  U R                  5      nU R                  US'   U R                  (       a^  U R                  R                  U R                  5      n[         R"                  SSU04v   U R%                  XTR'                  5       U5      v   XS'   SU;   nU(       a  U R)                  U5      (       a  GM  XdS'   SU;   a  US	 U R+                  US   5      US'   / nSU;   Ga  US   nUS	 U H  n	XS'   U	S   n
U	S    H  nUS   U
S   :  d  US   U
S   :  d  M  Un
M!     U	R-                  U
5        U R.                  (       aW  SU	S   ;   aN  U	S   S:X  d	  U	S   S:X  a<  U R1                  U	S   5      u  U	S'   nU(       a  U R3                  U	S   US   5      US'   U	S	 U	S	 UR5                  U R7                  U	S   UR'                  5       5      5        US	 UR9                  SS 5        M     UR;                  S5      nU(       aD  UR=                  S5      (       a.  UR5                  U R?                  XTR'                  5       5      5        UR;                  S5      =n(       a>  UR5                  U R?                  U RA                  U5      UR'                  5       5      5        U R                  (       Ga  S U;   Ga
  US    S!   US    S"   -   nS#U;   a%  U S$US#    S$UR;                  S%5      =(       d    S 3nW" U5       Ht  nU RC                  U5      u  p\U(       a  U R3                  XTS   5      US'   UR5                  U R7                  XTR'                  5       5      5        UR9                  SS 5        Mv     W" U5       HB  nU RA                  U5      nUR5                  U R?                  XTR'                  5       5      5        MD     U RD                  (       ag  UR;                  S&5      =(       d    UR;                  S5      =n(       a7  S US''   UR5                  [         RF                  XTR'                  5       45        US'	 [I        U5      US('   [         R"                  SU4v   [K        US)5       H!  u  nu  pnXS*'   [I        U5      US('   XU4v   M#     GM     g 7f)+NzOhttps?://((?:vt|vtt|ve)(?:\.media)?\.tumblr\.com/tumblr_[^_]+)_\d+\.([0-9a-z]+)z[https?://(\d+\.media\.tumblr\.com(?:/[0-9a-f]+)?/tumblr(?:_inline)?_[^_]+)_\d+\.([0-9a-z]+)z
/s\d+x\d+/z<img src="([^"]+)"z<source src="([^"]+)"	timestamptyper"   r6   r   uuid reblogged_from_id	rebloggedtraildatephotosr   original_size	alt_sizesheightwidth/s2048x3072/urli   i   id	_fallback	audio_urlzhttps://a.tumblr.com/	video_urlreblogcomment	tree_htmlquestion r   permalink_url	extensioncountr   num)&r   resub
_sub_videor   
_sub_imagesubn_subn_orig_imagefindallpostsr3   r&   r"   r$   infor   r   	Directory_prepare_avatarcopyr1   parse_timestampupdater    _original_photo_original_image_fallbackappend_prepare_imagepopget
startswith_prepare_original_video_original_inline_imager   Queuer*   	enumerate)r5   r"   _findall_image_findall_videopostrJ   rO   r_   rD   r   
best_photo	alt_photofbbodyrW   msgs                   r7   itemsTumblrExtractor.items;   s&     ''/003 	 ;;"gg?@@C O %)GGM$:$?$?D!!WW%9:BBN!WW%<=EENJJLD}}tK00F|4::-~F| L=8	88==3D#'99DL{{"hhoodii8%//fd^CC"223		TJJ#V(D0F$++D11 &$M//[0ABDLE4hN#E$)M!&!7J%*;%7	%h/*X2FF )' 2Z5H H)2J &8 LL,}}5<)G!'Nd2eHo6M+/+?+?e+M(eb040M0M %ed4j1:D- o.k*LL++E%L$))+FHWHH[$/- $0 ((;'Cs~~&=>>T]]3		<=hh{++s+T]]((-tyy{< = {{{x4/ H~i04>+3NN%#fAd:&6%7q#xx17R8:D)$/C"99#>GC,0,I,Id--[)LL!4!4S))+!FGHH[$/ 0 *$/C..s3CLLsIIK!@A 0 }}((?3FtxxF3F(,D%LL'--iik!BC[)JDM##R--)25!)<%%c!U #E
Wn$ *=} !s   IWM7Wc              #   |   #    U R                  5        H$  n[        US'   [        R                  US   U4v   M&     g 7f)N
_extractorrJ   )blogsTumblrUserExtractorr   rp   )r5   r"   s     r7   items_blogsTumblrExtractor.items_blogs   s4     JJLD!4D--ed22 !s   :<c                     g)z0Return an iterable containing all relevant postsN r5   s    r7   r_   TumblrExtractor.posts   s    r:   c                 `   U R                  SS5      nUS:X  a  [        $ U(       d
  [        5       $ [        U[        5      (       a  UR                  S5      n[        U5      nU[        -
  =n(       a=  U[        -  nU R                  R                  SSR                  [        U5      5      5        U$ )Nr_   all,zInvalid post types: '%s'z', ')
r'   
POST_TYPES	frozenset
isinstancestrsplitr.   r/   joinsorted)r5   r&   invalids      r7   r%    TumblrExtractor._setup_posttypes   s    GU+E>; %%%C(e$E*,,w,
*  !;!'VG_!=?Lr:   c                     [         R                  " X5        US   R                  S5      S   US'   [        R                  X4$ )Nfilename_r   hash)r   nameext_from_url	partitionr   Url)r5   rJ   rt   s      r7   rm   TumblrExtractor._prepare   s=    c(J'11#6q9V{{C%%r:   c                 
   [         R                  " X5        US   S:X  a  US-   4US'   SS0US'   US   R                  S	5      n US
   S:w  a  US
   OUS   US'   [        R
                  X4$ ! [         a    US   US'    N&f = f)NrU   gifvrL   Acceptz@image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8_http_headersr   r   r   r   r   r   )r   r   r   
IndexErrorr   r   )r5   rJ   rt   partss       r7   ri   TumblrExtractor._prepare_image   s    c(
 %!$sD%-&G%HD! Z &&s+	,',Qx8';58qDL
 {{C%%	  	,
+DL	,s   A- -BBc                     [         R                  " X5        S=US'   US'   X2S'   SUS'   S=US'   =US	'   US
'   [        R                  X4$ )Nr   rW   rV   r"   FrA   r   r=   rK   r   )r   r   r   r   )r5   rJ   rt   r"   s       r7   rb   TumblrExtractor._prepare_avatar   s]    c(&''Ud7mV![3;;V;tDzDL{{C%%r:   c                 $    U R                   (       + $ N)r   )r5   r   s     r7   r1   TumblrExtractor._skip_reblog   s    <<r:   c                 >    U R                   UR                  S5      :g  $ )Nreblogged_root_uuid)r"   rk   )r5   rt   s     r7   r0   &TumblrExtractor._skip_reblog_same_blog   s    yyDHH%:;;;r:   c                 J    UR                  SSS5      nU R                  U5      $ )NrI   /s99999x99999/r   )replace_update_image_token)r5   rJ   resizeds      r7   rf   TumblrExtractor._original_photo   s&    ++n.>B''00r:   c                     U R                   (       a-  U R                  SUS5      u  p#U(       a  U R                  U5      $ U R                  SU5      S4$ )Nr   r   zhttps://\1_1280.\2F)r    r]   r   r[   )r5   rJ   r   ns       r7   ro   &TumblrExtractor._original_inline_image   sK    ==../?aHJG//884c:EAAr:   c                 &    U R                  SU5      $ )Nzhttps://\1.\2)rZ   )r5   rJ   s     r7   rn   TumblrExtractor._original_video   s    /55r:   c                     SS0n U R                  XS9n[        R                  " UR                  SS5      nXAU:H  4$ ! [         a    US4s $ f = f)Nr   ztext/html,*/*;q=0.8)headersz" src=""T)requestr   extr	Exception)r5   r   r   responseupdateds        r7   r   #TumblrExtractor._update_image_token   sc    23	1||G|=H iiy#>G/00	  	!D= 	!s   = AAc              #      #    [         R                  " U R                  5       H5  nU R                  U R                  S5        U R                  U5      S   v   M7     U R                  R                  SX5        g 7f)Nzimage tokenr   z4Unable to fetch higher-resolution version of %s (%s))r   repeatr)   sleepr(   r   r.   r/   )r5   rJ   post_idr   s       r7   rg   (TumblrExtractor._original_image_fallback	  sd     T223AJJt**M:**3/22 4 	 ./2	=s   A7A9)r1   r[   rZ   r]   r$   r   r"   r3   r   r(   r)   r   r    r   r&   N)__name__
__module____qualname____firstlineno____doc__categorydirectory_fmtfilename_fmtarchive_fmtr8   rz   r   r_   r%   rm   ri   rb   r1   r0   rf   ro   rn   r   rg   __static_attributes__r   r:   r7   r   r      sh    *H1MFLKI4p%d3
?(&
&*& <1B61=r:   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	r   i  z#Extractor for a Tumblr user's postsuserz(?:/page/\d+|/archive)?/?$zhttps://www.tumblr.com/BLOGc                 N    U R                   R                  U R                  0 5      $ r   )r$   r_   r"   r   s    r7   r_   TumblrUserExtractor.posts  s    xx~~dii,,r:   r   Nr   r   r   r   r   subcategoryBASE_PATTERNpatternexampler_   r   r   r:   r7   r   r     s    -K::G+G-r:   r   c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
TumblrPostExtractori  z"Extractor for a single Tumblr postrt   z/(?:post/|image/)?(\d+)z!https://www.tumblr.com/BLOG/12345c                     SU l         SU l        U R                  R                  U R                  SU R
                  S   05      $ )NTr   rK      )r   r3   r$   r_   r"   r!   r   s    r7   r_   TumblrPostExtractor.posts!  s6    xx~~dii$A)?@@r:   c                     [         $ r   )r   r   s    r7   r%   $TumblrPostExtractor._setup_posttypes&  s    r:   )r3   r   N)r   r   r   r   r   r   r   r   r   r_   r%   r   r   r:   r7   r   r     s%    ,K77G1GA
r:   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	TumblrTagExtractori*  z(Extractor for Tumblr user's posts by tagtagz(?:/archive)?/tagged/([^/?#]+)z&https://www.tumblr.com/BLOG/tagged/TAGc                     [         R                  " U R                  S   R                  SS5      5      =U R                  S'   nU R
                  R                  U R                  SU05      $ )Nr   -rS   search_tagsr   )r   unquoter!   r   kwdictr$   r_   r"   )r5   r   s     r7   r_   TumblrTagExtractor.posts0  sU    +/<<KKN""3,,. 	.M"Sxx~~dii%66r:   r   Nr   r   r:   r7   r   r   *  s    2K>>G6G7r:   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	TumblrDayExtractori6  z(Extractor for Tumblr user's posts by daydayz/day/(\d\d\d\d/\d\d/\d\d)z*https://www.tumblr.com/BLOG/day/1970/01/01c                 h   U R                   S   R                  S5      u  pn[        R                  " [	        U5      [	        U5      [	        U5      5      R                  5       nUS-
  S-  U l        U R                  S-   U R                  l        U R                  R                  U R                  0 5      $ )Nr   /i;
 iQ )r!   r   r   rC   int	toordinalr3   r$   r4   r_   r"   )r5   yearmonthr   ordinals        r7   r_   TumblrDayExtractor.posts<  s    ;;q>//4S''#d)SZS:DDF !6)U2--%/xx~~dii,,r:   )r3   Nr   r   r:   r7   r   r   6  s    2K99G:G-r:   r   c                   8    \ rS rSrSrSrSrSr\S-   r	Sr
S rS	rg
)TumblrLikesExtractoriF  z)Extractor for a Tumblr user's liked postslikes)r   r   r   zf_{blog[name]}_{id}_{num}/likesz!https://www.tumblr.com/BLOG/likesc                 L    U R                   R                  U R                  5      $ r   )r$   r   r"   r   s    r7   r_   TumblrLikesExtractor.postsN  s    xx~~dii((r:   r   N)r   r   r   r   r   r   r   r   r   r   r   r_   r   r   r:   r7   r   r   F  s(    3K:M-KY&G1G)r:   r   c                   H    \ rS rSrSrSr\S-   rSr\	R                  rS rSrg)	TumblrFollowingExtractoriR  z,Extractor for a Tumblr user's followed blogs	following
/followingz%https://www.tumblr.com/BLOG/followingc                 L    U R                   R                  U R                  5      $ r   )r$   r   r"   r   s    r7   r~   TumblrFollowingExtractor.blogsZ      xx!!$)),,r:   r   Nr   r   r   r   r   r   r   r   r   r   r   rz   r~   r   r   r:   r7   r   r   R  s)    6K]*G5G''E-r:   r   c                   H    \ rS rSrSrSr\S-   rSr\	R                  rS rSrg)	TumblrFollowersExtractori^  z'Extractor for a Tumblr user's followers	followers
/followersz%https://www.tumblr.com/BLOG/followersc                 L    U R                   R                  U R                  5      $ r   )r$   r  r"   r   s    r7   r~   TumblrFollowersExtractor.blogsf  r   r:   r   Nr   r   r:   r7   r   r   ^  s)    1K]*G5G''E-r:   r   c                   *    \ rS rSrSrSrSrSrS rSr	g)	TumblrSearchExtractorij  zExtractor for a Tumblr searchr   zb(?:https?://)?(?:www\.)?tumblr\.com/search/([^/?#]+)(?:/([^/?#]+)(?:/([^/?#]+))?)?(?:/?\?([^#]+))?z#https://www.tumblr.com/search/QUERYc                     U R                   u  pp4[        R                  " U5      nU R                  R	                  [        R
                  " U5      XRU5      $ r   )r!   r   parse_queryr$   r   r   )r5   r   mode	post_typequeryparamss         r7   r_   TumblrSearchExtractor.postsq  s@    )-&i!!%(xxt||F3V9MMr:   r   N)
r   r   r   r   r   r   r   r   r_   r   r   r:   r7   r  r  j  s    'KAG3GNr:   r  c                   |    \ rS rSrSrSrSrSr0 rS r	S r
SS jrS	 rS
 rS rS rSS jrS r SS jrSS jrSrg)r#   iw  zSInterface for the Tumblr API v2

https://github.com/tumblr/docs/blob/master/api.md
zhttps://api.tumblr.com2O3hU2tMi5e4Qs5t3vezEi6L0qRORJ5y9oUpSGsrWu8iA3UCc3B2sFdsK3PDdP2QpYMRAoq0oDnw0sFS24XigXmdfnaeNZpJpqAn03c                 ^    [         R                  R                  X5        S =U l        U l        g r   )r	   	OAuth1API__init__r-   r4   )r5   	extractors     r7   r  TumblrAPI.__init__  s"      1(,,$+r:   c                      U R                   U   $ ! [         aO    SU S3nU R                  (       a  SU R                  0OSnU R                  X#5      S   =U R                   U'   nUs $ f = f)z'Return general information about a blog	/v2/blog/z/infoapi_keyNr"   )
BLOG_CACHEKeyErrorr  _call)r5   r"   endpointr  s       r7   r`   TumblrAPI.info  so    	??4(( 	"4&.H26,,i.DF+/::h+G+OODOOD!DK		s    AA*)A*c                     U R                   (       a!  U R                   SU SU SU R                    3$ SU S3nSU0nU R                  X4SS9S   $ )	zRetrieve a blog avatarr  z/avatar/z	?api_key=z/avatarsizeF)allow_redirects
avatar_url)r  ROOTr  )r5   r"   r  r  r  s        r7   r   TumblrAPI.avatar  so    <<yyk4&~/ 0tfG,$zze  55AC 	Cr:   c                 (   U R                   R                  S5      US'   SUS'   SUS'   U R                  US'   U R                  US'   U R                  (       a%  US   (       a  U R                  R                  S5        S	U S
3nU R                  X2USS9$ )zRetrieve published postsoffset2   limittruereblog_infor=   r4   z/'offset' and 'date-max' cannot be used togetherr  z/postsT)r"   cache)r  r'   r-   r4   r.   r/   _pagination)r5   r"   r  r  s       r7   r_   TumblrAPI.posts  s    >>00:xw &}v;;x;;6(+HHNOtfF+t4HHr:   c              #      #    SU S3nSU R                   S.nU R                  (       a  U R                  US'    U R                  X#5      S   nU(       d  gU Sh  vN   US   S	   US
'   M3   N7f)zRetrieve liked postsr  r   50)r'  r4   r  liked_postsNliked_timestampr4   )r4   r  r  )r5   r"   r  r  r_   s        r7   r   TumblrAPI.likes  sy     tfF+4;;7<< $F9JJx0?E$Ry):;F8  s   AA.A,A.c                 0    SU S3nU R                  U5      $ )Nr  r   _pagination_blogsr5   r"   r  s      r7   r   TumblrAPI.following  !    tfJ/%%h//r:   c                 0    SU S3nU R                  U5      $ )Nr  r  r4  r6  s      r7   r  TumblrAPI.followers  r8  r:   Nc                     SnSUS'   UR                  SS5      US'   XS'   X2S'   U R                  R                  (       a  S	OS
US'   U(       a  XBS'   U R                  XR5      $ )zRetrieve search resultsz/v2/timeline/searchr.  r'  tNdaysr  r	  r(  falser)  post_type_filter)rj   r  r   r+  )r5   r  r  r	  r
  r  s         r7   r   TumblrAPI.search  sg    (wC.vwv*...*@*@g})2%&11r:   c           	      ~   U R                   U-   nX#S'    U R                  " U40 UD6n UR                  5       nUS   S   nSUs=::  a  S:  a   US   $   O U R                  R                  U5        US:X  a  [        R                  " 5       eUS:X  a   US	   S
   S   nSU;   n	U	(       aZ  U R                  c  U R                  R                  S5        OU R                  R                  S5        [        R                  " W5      e[        R                  " S5      eUS:X  Ga  UR                  R                  S5      S:X  GaR  U R                  R                  S5        UR                  R                  S5      n
U R                  =(       d     U R                   R"                  R$                  nXR&                  :X  a  U R                  R                  S5        U R(                  R+                  S5      S:X  a  U R(                  R-                  U
S9  GM  [.        R0                  " 5       [.        R2                  " S
[5        U
5      5      -   R7                  5       n[        R8                  " SUR:                  S SUR<                  S SUR>                  S 35      eUR                  R                  S5      =n
(       a7  U R                  R                  S5        U R(                  R-                  U
S9  GM  [        R8                  " U5      e! [         a    UR                  nUR
                  n GNf = f! [         a    Sn	 GNf = f)Nr  metastatus   i  r   i  i  errorsr   detailz)only viewable within the Tumblr dashboardFzqEnsure your 'access-token' and 'access-token-secret' belong to the same application as 'api-key' and 'api-secret'z<Run 'gallery-dl oauth:tumblr' to access dashboard-only blogszuser or posti  zx-ratelimit-perday-remaining0zDaily API rate limit exceededzx-ratelimit-perday-resetzRegister your own OAuth application and use its credentials to prevent this error: https://gdl-org.github.io/docs/configuration.html#extractor-tumblr-api-key-api-secret	ratelimitwait)secondsz$Aborting - Rate limit will reset at 02:zx-ratelimit-perhour-resetzHourly API rate limit exceeded) r"  r   json
ValueErrorr   status_coder.   debugr
   AuthorizationErrorr   r  r`   NotFoundErrorr   rk   sessionauthconsumer_keyAPI_KEYr  r'   rI  r   now	timedeltafloattimeAbortExtractionhourminutesecond)r5   r  r  kwargsrJ   r   datarC  errorboardresetr  r<  s                r7   r  TumblrAPI._call  s   ii("!x||C262H,}}
 fh/&&3&
++ ' HHNN4 }22443" N1-h7EH %&E
 ||+HI
  'G H#66u==--n==3##''(FG3NHHMM"AB$,,001KLE"llLdll.?.?.L.LG,,.CD ~~,,[9VC++E+: BLLE%L$AAGGIA#33>66"+Qqxxm1QXXbMCD D
 %,,001LMM5MHHMM"BCNN'''6++D11}  .}}!--.$ ! "!E"s#   L L, "L)(L),L<;L<c              #   x  #    U R                   (       a  U R                   US'   U R                  R                  S5      =n(       a+  US;  a$  SU;  a  U R                  R	                  SU5        SnO!UR                  S5      (       a  SnOSU;  a  SnU R                  R                  SU=(       d    S5         U R                  X5      nS	U;   a  US	   nUS
   nOU(       a  US   U R                  U'   SnXt   nU S h  vN   US:X  a4   US   S   S   nUb$  U R                   (       a  U SU R                    3nS nOjUS:X  a0  U(       d  g US   S   S-   n	US   (       a	  XS   :  a  g XS'   S US'   O4[        R                  " US   5      US   -   US'   S US'   US   US   :  a  g M   N! [         a     g f = f7f)Nr  
pagination>   r$   r4   r%  z8Unable to use "pagination": "%s". Falling back to "api".r$   r4   zPagination strategy '%s'timelineelementsr"   F_linksr+   hrefz	&api_key=r0  r<   r   r'  total_posts)r  r  r'   r.   r/   rk   rP  r  r  r  r   	parse_int)
r5   r  r  r"   keyr*  strategyr`  r_   r<   s
             r7   r+  TumblrAPI._pagination  s    << $F9~~,,\::8:00XV5K   ":;CE ZZ!!HV#H183GxH::h/DT!J'Z( ,0LDOOD)!E	5 #H~f5f=H %$,,"*9T\\NCH!FX%!"Ik2Q6	(#	H5E(E#,x #'x  NN6(#34vgF x #'x (#tM'::M  
   s7   C;F:=F(>
F:	F* BF:*
F74F:6F77F:c              #   0  #    Uc  0 nU R                   (       a  U R                   US'   SUS'   [        R                  " UR                  S5      S5      US'    U R	                  X5      nUS   nU S h  vN   US   US   -   US'   US   US   :  a  g M=   N!7f)Nr     r'  r%  r   r~   total_blogs)r  r   rl  rk   r  )r5   r  r  r`  r~   s        r7   r5  TumblrAPI._pagination_blogsL  s     >F<< $F9w>>&**X*>Bx::h/DME%h/&/AF8h4#66  s   A0B2B3"B)r4   r-   )512)topN)Nr_   Fr   )r   r   r   r   r   r"  rV  
API_SECRETr  r  r`   r   r_   r   r   r  r   r  r+  r5  r   r   r:   r7   r#   r#   w  s^     $DBGEJJ-CI<002G2T 386pr:   r#   N)r   commonr   r   r?   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r  r  r#   r   r:   r7   <module>rx     s    - & / /   < =
t=i t=n-/ -/ 	7 	7- - 	)? 	)	- 	-	- 	-
NO 
Ne er:   