
    i9                         S r SSKJrJr  SSKJrJrJ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://www.bilibili.com/   )	ExtractorMessage   )textutil	exceptionc                   6    \ rS rSrSrSrSrSrS rS r	S r
S	rg
)BilibiliExtractor   z"Base class for bilibili extractorsbilibilizhttps://www.bilibili.com)g      @g      @c                 $    [        U 5      U l        g N)BilibiliAPIapiselfs    J/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/bilibili.py_initBilibiliExtractor._init   s    t$    c              #      #    U R                  5        H4  n[        US'   U R                   SUS    3n[        R                  X!4v   M6     g 7f)N
_extractorz/opus/opus_id)articlesBilibiliArticleExtractorrootr   Queue)r   articleurls      r   itemsBilibiliExtractor.items   sH     }}G$<GL!YYKvgi&8%9:C---- 's   A
Ac                     g)N r#   r   s    r   r   BilibiliExtractor.articles   s    r   )r   N)__name__
__module____qualname____firstlineno____doc__categoryr   request_intervalr   r    r   __static_attributes__r#   r   r   r
   r
      s$    ,H%D!%.r   r
   c                   6    \ rS rSrSrSrSrSrSrSr	Sr
S	 rS
rg)r       z Extractor for a bilibili articler   zD(?:https?://)?(?:t\.bilibili\.com|(?:www\.)?bilibili.com/opus)/(\d+)z#https://www.bilibili.com/opus/12345)z
{category}z
{username}z{id}_{num}{suffix}.{extension}z{id}_{num}{suffix}c              #   N  #    U R                   S   nU R                  R                  U5      n0 nUS   S    HO  nUS   S:X  a/  U R                  R	                  SUUS   R                  S5      5        US	 UR                  U5        MQ     X2S   S'   US	   nUR                  S
5      US'   UR                  S5      US'   / nSU;   a   UR                  US   S   S   S   5        SU;   a/  US   S    H#  nSU;  a  M   UR                  US   S   5        M%     [        U5      US'   [        R                  SU4v   U R                  SS5      nSUS'   [        US5       H  u  US'   n	U	S   n
UR                  U	5        [        R                  U
[        R                   " X5      4v   U(       d  MQ  U	R                  S5      =n
(       d  Mk  SUS'   [        R                  U
[        R                   " X5      4v   SUS'   M     g ! [         a     GN+f = f! [         a     GM/  f = f7f)N    detailmodulesmodule_typeMODULE_TYPE_BLOCKEDz%s: Blocked Article
%smodule_blockedhint_messagemodule_authornameusernamemiduser_id
module_topdisplayalbumpicsmodule_content
paragraphspiccount 	livephotoTsuffixr   numr   live_urll)groupsr   r   logwarninggetupdateextend	Exceptionlenr   	Directoryconfig	enumerateUrlr   nameext_from_url)r   
article_idr   r2   moduleuserr?   	paragraphrE   rB   r   s              r   r    BilibiliArticleExtractor.items*   s;    [[^
(("":. h'	2Fm$(==  !:J!'(8!9!=!=n!MO}%NN6" 3 (/)$'"hhv.
!XXe_	7"GL1)<WEfMN w&$%56|D		)KK	% 0 89 E t9W,,KKT2	#,T1#5GENCe*CNN3++sD$9$9#$GGGySWWZ%88c8$'!kk3(=(=c(KKK$&! $6%   ! s[   CH%H $H%>HBH%0H%
8H%
HH%HH%
H"H%!H""H%r#   N)r%   r&   r'   r(   r)   subcategorypatternexampledirectory_fmtfilename_fmtarchive_fmtr    r,   r#   r   r   r   r       s+    *KIG3G0M3L&K1'r   r   c                   *    \ rS rSrSrSrSrSrS rSr	g)	BilibiliUserArticlesExtractor^   z(Extractor for a bilibili user's articleszuser-articleszH(?:https?://)?space\.bilibili\.com/(\d+)/(?:article|upload/opus|dynamic)z(https://space.bilibili.com/12345/articlec                 R    U R                   R                  U R                  S   5      $ )Nr0   )r   user_articlesrJ   r   s    r   r   &BilibiliUserArticlesExtractor.articlese   s    xx%%dkk!n55r   r#   N)
r%   r&   r'   r(   r)   r\   r]   r^   r   r,   r#   r   r   rc   rc   ^   s    2!K3G8G6r   rc   c                   *    \ rS rSrSrSrSrSrS rSr	g)	%BilibiliUserArticlesFavoriteExtractori   zuser-articles-favoritez:(?:https?://)?space\.bilibili\.com/(\d+)/favlist\?fid=opusz1https://space.bilibili.com/12345/favlist?fid=opusTc                     U R                   (       a<  U R                  S5      (       d  U R                  R                  S5        S[        l         U R
                  R                  5       $ )N)SESSDATAz'SESSDATA' cookie requiredF)_warningcookies_checkrK   errorri   r   user_favlistr   s    r   r   .BilibiliUserArticlesFavoriteExtractor.articlesp   sG    ==%%m44;<=B1:xx$$&&r   r#   N)
r%   r&   r'   r(   r\   r]   r^   rm   r   r,   r#   r   r   ri   ri   i   s    *K+GAGH'r   ri   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
r   x   c                     Xl         g r   	extractor)r   rv   s     r   __init__BilibiliAPI.__init__y   s    "r   c                     SU-   nU R                   R                  X2S9nUS   (       a<  U R                   R                  R                  SU5        [        R
                  " S5      eU$ )Nz1https://api.bilibili.com/x/polymer/web-dynamic/v1)paramscodeServer response: %sAPI request failed)rv   request_jsonrK   debugr   AbortExtraction)r   endpointrz   r   datas        r   _callBilibiliAPI._call|   s\    AHL~~**3*><NN$$%:DA++,@AAr   c              #      #    SnSU0n U R                  X#5      nUS   S    H  nUS   US'   Uv   M     US   S   (       d  g M<  7f)Nz/opus/feed/spacehost_midr   r    r   offsethas_more)r   )r   r;   r   rz   r   items         r   rf   BilibiliAPI.user_articles   sa     %g&::h/DVW-#'	?x 
 . <
+ s   AAc                 L   SU-   n U R                   R                  U5      R                  n [        R                  " [        R
                  " USS5      S-   5      $ ! [         a"    SU;  a  [        R                  " US-   5      e Of = fU R                   R                  SS9  M  )	Nzhttps://www.bilibili.com/opus/zwindow.__INITIAL_STATE__=z};}zwindow._riskdata_z&: Unable to extract INITIAL_STATE datai,  )seconds)
rv   requestr   r   
json_loadsextrrP   r   r   wait)r   rW   r   pages       r   r   BilibiliAPI.article   s    .;>>))#.33DOtyy5t(=?B(C D D O&d2#33"%MMO O 3O NN, s   .A )BBc              #      #    SnSSS.n U R                  X5      S   nUS    S h  vN   UR                  S5      (       d  g US==   S-  ss'   MG   N*7f)	Nz/opus/feed/favr      )r   	page_sizer   r    r   r   )r   rM   )r   r   rz   r   s       r   rp   BilibiliAPI.user_favlist   sa     #"-::h/7DG}$$88J''6NaN  %s   %AA+Ac                 &   SnU R                   R                  U5      nUS   S:w  a<  U R                   R                  R                  SU5        [        R
                  " S5      e US   S   S   $ ! [         a    [        R
                  " S	5      ef = f)
Nz*https://api.bilibili.com/x/space/v2/myinfor{   r0   r|   z&API request failed. Are you logges in?r   profiler:   r}   )rv   r~   rK   r   r   r   rP   )r   r   r   s      r   login_user_idBilibiliAPI.login_user_id   s    :~~**3/<1NN$$%:DA++8: :	B<	*511 	B++,@AA	Bs   $
A/ /!Bru   N)r%   r&   r'   r(   rw   r   rf   r   rp   r   r,   r#   r   r   r   r   x   s!    #- Br   r   N)r)   commonr   r   rD   r   r   r   r
   r   rc   ri   r   r#   r   r   <module>r      sU    / & $ $	 &;'0 ;'|6$5 6',= 'BB BBr   