
    i*                         S r SSKJrJrJr  SSKJr  Sr\S-   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g)zExtractors for https://skeb.jp/   )	ExtractorMessageDispatch   )textz(?:https?://)?skeb\.jpz/@([^/?#]+)c                   h    \ 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)SkebExtractor   zBase class for skeb extractorsskeb)z
{category}z{creator[screen_name]}z {post_num}_{file_id}.{extension}z({post_num}_{_file_id}_{content_category}zhttps://skeb.jpc                     U R                  SS5      U l        U R                  SS5      U l        SSSS.U l        SU R                  R                  ;  a  S	U R                  S'   g g )
N
thumbnailsFarticlez!application/json, text/plain, */*corszsame-origin)Acceptzsec-fetch-modezsec-fetch-siteAuthorizationzBearer null)configr   r   headerssessionselfs    F/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/skeb.py_initSkebExtractor._init   s_    ++lE:{{9e49$+
 $,,"6"66,9DLL) 7    c                     SUR                   ;   a  g[        R                  " UR                  SS5      nU(       a  U R                   R                  SUSS9  gg )Nrequest_keyTzrequest_key=;zskeb.jp)domain)cookiesr   extrset)r   responser   s      r   _handle_429SkebExtractor._handle_429$   sP    H,,,iiMM>30LL]K	J r   c           	   #   d  #    U R                  5       nU R                  5        H  u  p# U R                  X#5      u  pEU(       a  UR                  U5        U R                  U5      n[        U5      US'   [        R                  SU4v   [        US5       HH  u  US'   nUR                  U5        US   n	[        R                  U	[        R                   " X5      4v   MJ     M     g ! [         a>  nU R                  R                  SX#UR                  R                  U5         S nAGM  S nAff = f7f)Nz@%s/%s: %s: %scount r   numfile_url)metadataposts_get_post_data	Exceptionlogerror	__class____name__update_get_files_from_postlenr   	Directory	enumerateUrlr   nameext_from_url)
r   r*   	user_namepost_numr"   postexcfilesfileurls
             r   itemsSkebExtractor.items.   s     ==?#'::<I!%!4!4Y!I
 H%--h7EJDM##R--%.ua%8!UTD!:&kk3(=(=c(HHH &9 $0  /"}}55s<s.   &D0C%B)D0%
D-/2D(!D0(D--D0c              #      #    U R                   S-   nU R                  5        H&  n[        US'   [        R                  XS   -   U4v   M(     g 7f)N/@
_extractorscreen_name)rootusersSkebUserExtractorr   Queue)r   baseusers      r   items_usersSkebExtractor.items_usersB   sF     yy4JJLD!2D--](;!;TAA !s   AAc                     g)zReturn post numberN r   s    r   r+   SkebExtractor.postsH       r   c                     g)zReturn additional metadataNrO   r   s    r   r*   SkebExtractor.metadataK   rQ   r   c              #   6  #    SUS'    U R                  XU R                  S9nU HQ  nUS   R                  S5      nUS   SS  nUS   nUS   (       a  U R                  R	                  S	Xg5        ML  Xg4v   MS     [        U5      S
:  a  g US==   S
-  ss'   M  7f)N    offsetparamsr   path/r      privatezSkipping @%s/%s (private)   )request_jsonr   splitr.   debugr4   )r   r?   rX   r+   r;   partsr9   r:   s           r   _paginationSkebExtractor._paginationN   s     x%%DLL & :E V**3/!!HQRL	 8	?HHNN#>#,8))  5zB8"# s   BBc              #      #    U R                    SU 3nSUS'   SUS'    U R                  X2U R                  S9nU S h  vN   [        U5      US   :  a  g US==   US   -  ss'   MI   N)7f)Nz/apirU   rV   Z   limitrW   )rF   r^   r   r4   )r   endpointrX   r?   datas        r   _pagination_usersSkebExtractor._pagination_usersd   s     4z*xw$$DLL % :DOO4y6'?*8w/  s   <A*A(*A*c                 x   U R                    SU SU 3nU R                  X0R                  S9nUS   nUS   UU R                   US   -   US   US   US	   US
   US   US   US   US   US   US   US   US   US   US   US   S.S.nUS   (       d%  SU;   a  US   nUS   US   US   US   US   S.US'   XF4$ )N/api/users/z/works/)r   creatoridrY   bodysource_body
translatednsfw	anonymoustag_listgenrethankssource_thankstranslated_thanksnamerE   
avatar_url
header_url)rn   ry   rE   rz   r{   )post_idr:   post_urlro   rp   translated_bodyrr   rs   tagsru   rv   rw   rx   rm   client)rF   r^   r   )r   r9   r:   r?   resprm   r;   r   s           r   r,   SkebExtractor._get_post_datar   s*   ;yk
C  ll ;y/!%d!)!%T&\!9!%f!%m!4!%l!3!%f!%k!2!%j!1!%g!%h!%o!6!%&9!:!(!(!(!7!(!6!(!6
, K X%5(^F!'!'!'!6!'!5!'!5DN zr   c                    / nU R                   (       a.  SU;   a(  UR                  SS[        US   5      S-   US   S.5        U R                  (       a7  SU;   a1  US   =n(       a%  UR                  SS[        US   5      S-   US.5        US	    HY  nUS
   nUR                  SUS   US   US   US   US   US   US   UR	                  S5      US   US   US   US   S.	S.5        M[     U$ )Nog_image_urlthumbrn   t)content_categoryfile_id_file_idr)   article_image_urlr   apreviewsinformationpreviewr?   widthheight	byte_sizeduration
frame_ratesoftware	extensionis_movie
transcoder)	r   r   r   r   r   r   r   r   r   )r   r   r   r)   original)r   appendstrr   get)r   r   r=   r?   r   infos         r   r3   "SkebExtractor._get_files_from_post   s*   ??~5LL$+#T
Oc1 0	  <</47.//s/(1 ) #DJ# 5 #	  J'G=)DLL$-#DM#DM#EN"&w-"&x."&{"3"&z"2"&((<"8"&z"2"&{"3"&z"2"&|"4
  (( r   )r   r   r   N)r1   
__module____qualname____firstlineno____doc__categorydirectory_fmtfilename_fmtarchive_fmtrF   r   r#   r@   rL   r+   r*   rb   ri   r,   r3   __static_attributes__rO   r   r   r	   r	      sS    (H<M5L<KD
:I(B!)#,0#J(r   r	   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	SkebPostExtractor   z Extractor for a single skeb postr;   z/works/(\d+)zhttps://skeb.jp/@USER/works/123c                     U R                   4$ )N)groupsr   s    r   r+   SkebPostExtractor.posts   s    ~r   rO   Nr1   r   r   r   r   subcategoryUSER_PATTERNpatternexampler+   r   rO   r   r   r   r      s    *K_,G/Gr   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	SkebWorksExtractor   z!Extractor for a skeb user's worksworks/workszhttps://skeb.jp/@USER/worksc                 l    U R                    SU R                  S    S3nSSS.nU R                  X5      $ )Nrl   rU   r   rm   daterolesortrF   r   rb   r   r?   rX   s      r   r+   SkebWorksExtractor.posts   s<    ;t{{1~&6f=#V4,,r   rO   Nr   rO   r   r   r   r      s    +KY&G+G-r   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	SkebSentrequestsExtractor   z)Extractor for a skeb user's sent requestssentrequestsz/sent[ _-]?requestsz"https://skeb.jp/@USER/sentrequestsc                 l    U R                    SU R                  S    S3nSSS.nU R                  X5      $ )Nrl   rU   r   r   r   r   r   r   s      r   r+   SkebSentrequestsExtractor.posts   s<    ;t{{1~&6f="F3,,r   rO   Nr   rO   r   r   r   r      s    3 K33G2G-r   r   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)rH      z!Extractor for a skeb user profilez/?$zhttps://skeb.jp/@USERc                     U R                  SS5      (       a  SnOSnU R                   SU R                  S    S3nU R                  [        US-   4[
        US	-   44U5      $ )
Nzsent-requestsF)r   r   )r   rC   rU   rZ   r   r   )r   rF   r   _dispatch_extractorsr   r   )r   defaultrJ   s      r   r@   SkebUserExtractor.items   sr    ;;../G G))Bt{{1~.a0((w7&~(=>*
  	r   rO   N)
r1   r   r   r   r   r   r   r   r@   r   rO   r   r   rH   rH      s    +V#G%G
r   rH   c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
SkebSearchExtractor   z!Extractor for skeb search resultssearchz/search\?q=([^&#]+)zhttps://skeb.jp/search?q=QUERYc                 L    S[         R                  " U R                  S   5      0$ )Nsearch_tagsrU   )r   unquoter   r   s    r   r*   SkebSearchExtractor.metadata   s    t||DKKN;<<r   c              #   .  #    SnSS0nU R                   SSS.nU R                  S5      nUc  SnO&[        U[        5      (       d  S	R	                  U5      nS
nS[
        R                  " U5      -   S-   nS[
        R                  " U R                  S
   5      U[        U5      -   S.nSU40n U R                  USX#US9S   S
   n	U	S    H&  n
U
S   R                  S5      nUS   SS  US   4v   M(     XYS   :  a  g US-  nU[        U5      -   US'   Mh  7f)Nz7https://hb1jt3kre9-2.algolianet.com/1/indexes/*/querieszx-algolia-agentz(Algolia for JavaScript (4.13.1); Browser 9a4ce7d609e71bf29e977925e4c6740c
HB1JT3KRE9)Originzx-algolia-api-keyzx-algolia-application-idfilterszYgenre:art OR genre:voice OR genre:novel OR genre:video OR genre:music OR genre:correctionz OR rU   zhitsPerPage=40&filters=z&page=Request)	indexNamequeryrX   requestsPOST)methodrX   r   jsonresultshitsrY   rZ   r   r[   nbPagesrX   )rF   r   
isinstancer   joinr   quoter   r   r^   r_   )r   r?   rX   r   r   pagepamsrequestrh   resultr;   ra   s               r   r+   SkebSearchExtractor.posts   s[    GI
 ii!C(4
 ++i(?HGGS))kk'*G(4::g+>>I #\\$++a.1SY&

 WJ'&&F6 ' F vV**3/AhqrlE!H,, ' i((AID $s4y 0GH s   DDrO   N)r1   r   r   r   r   r   BASE_PATTERNr   r   r*   r+   r   rO   r   r   r   r      s$    +K33G.G=(1r   r   c                   H    \ rS rSrSrSr\S-   rSr\	R                  rS rSrg)	SkebFollowingExtractori*  z2Extractor for all creators followed by a skeb user	following/following_creatorsz(https://skeb.jp/@USER/following_creatorsc                 R    SU R                   S    S3nSS0nU R                  X5      $ )Nz/users/rU   r   r   r   )r   ri   )r   rg   rX   s      r   rG   SkebFollowingExtractor.users2  s5    T[[^,,?@&!%%h77r   rO   N)r1   r   r   r   r   r   r   r   r   r	   rL   r@   rG   r   rO   r   r   r   r   *  s*    <K33G8G%%E8r   r   c                   H    \ rS rSrSrSr\S-   rSr\	R                  rS rSrg)	SkebFollowingUsersExtractori8  z!Extractor for your followed userszfollowing-users/following_userszhttps://skeb.jp/following_usersc                 *    SnU R                  U0 5      $ )Nr   )ri   )r   rg   s     r   rG   !SkebFollowingUsersExtractor.users@  s    %%%h33r   rO   N)r1   r   r   r   r   r   r   r   r   r	   rL   r@   rG   r   rO   r   r   r   r   8  s*    +#K00G/G%%E4r   r   N)r   commonr   r   r   r'   r   r   r   r	   r   r   r   rH   r   r   r   rO   r   r   <module>r      s    & 0 0 (n,oI od 	- 	-	- 	-- $11- 11h8] 8
4- 
4r   