
    i                         S r SSKJrJr  SSKJrJrJr  S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://arca.live/   )	ExtractorMessage   )textutil	exceptionz"(?:https?://)?(?:www\.)?arca\.livec                   4    \ rS rSrSrSrSrSrSrS r	S r
S	rg
)ArcaliveExtractor   z#Base class for Arca.live extractorsarcalivezhttps://arca.livez(net.umanle.arca.android.playstore/0.9.75)g      ?g      ?c                 $    [        U 5      U l        g N)ArcaliveAPIapi)selfs    J/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/arcalive.py_initArcaliveExtractor._init   s    t$    c              #      #    U R                  5        Hd  n[        US'   U R                  =(       d    UR                  S5      =(       d    SnU R                   SU SUS    3n[
        R                  X14v   Mf     g 7f)N
_extractor	boardSlugbreaking/b//id)articlesArcalivePostExtractorboardgetrootr   Queue)r   articler   urls       r   itemsArcaliveExtractor.items   sh     }}G$9GL!JJH'++k":HjEYYKs5'74=/:C----	 's   A:A<)r   N)__name__
__module____qualname____firstlineno____doc__categoryr!   	useragentrequest_intervalr   r%   __static_attributes__ r   r   r
   r
      s$    -HD:I!%.r   r
   c                   B    \ 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)r   !   zExtractor for an arca.live postpost)z
{category}z{boardSlug}z){id}_{num}{title:? //[b:230]}.{extension}z
{id}_{num}z/b/(?:\w+)/(\d+)z&https://arca.live/b/breaking/123456789c              #   |  #    U R                  SS5      U l        U R                  SS5      =U l        nU(       a
  US:g  U l        U R                  R                  U R                  S   5      nU R                  U5      n[        U5      US'   U R                  US   S S	 5      US
'   U R                   SUS    SUS    3=US'   nSUS-   0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"                  " Xb5      4v   MJ     g 7f)N	emoticonsFgifsTcheck    count	createdAt   dater   r   r   r   post_urlRefererz?p=1_http_headers r   numr$   )configr5   r6   gifs_fallbackr   r3   groups_extract_fileslenparse_datetime_isor!   r   	Directory	enumerateupdateUrlr   nameext_from_url)r   r6   r3   filesr=   filer$   s          r   r%   ArcalivePostExtractor.items*   s6    [%8;;vt44	D"&'/Dxx}}T[[^,##D)E
W..tK/@"/EFVyykT+./qd=	>Z8!*Hv,= >_T))!*5!!4DKKKu+C++sD$9$9#$DDD "5s   D:D<c                 >   / n[         R                  " S5      R                  US   5       GH  u  p4U R                  (       d  SU;   a  M  [         R                  " USS5      =(       d    [         R                  " USS5      nU(       d  M_  [         R
                  " U5      R                  S5      u  pVnUS   S	:X  a0  US
   S	:X  a  SUR                  SSS
5      -   nOU R                  U-   nOUnSn	SU-   n[         R                  " USS5      =n
(       a'  UR                  S5      u  pnX:w  a  X-   4n	US-   U
-   nOrU(       ak  U R                  (       aZ  UR                  S5      S   S-   nU R                  (       a  X-   4n	UnO*U R                  X-   SSS9nUR                  S:  a  X-   4n	UnUR                  X-   [         R                  " [         R                  " USS5      5      [         R                  " [         R                  " USS5      5      U	S.5        GM     U$ )Nz<(?:img|vide(o)) ([^>]+)contentzclass="arca-emoticon"zdata-originalurl=""zsrc="?r8   r   r   zhttps:z//ac-p.namuz//ac-o.namur0   z?type=orig&zdata-orig=".z.gifHEADF)methodfatali  zwidth="zheight=")r$   widthheight	_fallback)r   refindallr5   extrunescape	partitionreplacer!   
rpartitionr6   rC   requeststatus_codeappend	parse_int)r   r3   rM   videomediasrc_queryr$   fallbackorigpathexturl_gifresponses                  r   rE   $ArcalivePostExtractor._extract_files?   s    GG$?@HHY!LE>>&=&F99U$8#> 299UGS1  MM#.88=MCE1v}q6S="S[[%}a&9 9C ))c/CH!E)Eyys;;t;"~~c2; #~H*t+C499..-a069%% #~H!C#||e  ,  EH++c1$'K>%LL+..5)S)IJ..5*c)JK%	 O!\ r   )r5   r6   rC   N)r'   r(   r)   r*   r+   subcategorydirectory_fmtfilename_fmtarchive_fmtBASE_PATTERNpatternexampler%   rE   r/   r0   r   r   r   r   !   s4    )K1M>LK00G6GE*1r   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	ArcaliveBoardExtractors   z(Extractor for an arca.live board's postsr   z/b/([^/?#]+)/?(?:\?([^#]+))?$zhttps://arca.live/b/breakingc                     U R                   u  U l        n[        R                  " U5      nU R                  R                  U R                  U5      $ r   )rD   r   r   parse_queryr   )r   rj   paramss      r   r   ArcaliveBoardExtractor.articlesy   s;     KK
E!!%(xx~~djj&11r   r   Nr'   r(   r)   r*   r+   rr   rv   rw   rx   r   r/   r0   r   r   rz   rz   s   s    2K==G,G2r   rz   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	ArcaliveUserExtractor   z(Extractor for an arca.live users's postsuserz/u/@([^/?#]+)/?(?:\?([^#]+))?$zhttps://arca.live/u/@USERc                     S U l         U R                  u  p[        R                  " U5      nU R                  R                  [        R                  " U5      U5      $ r   )r   rD   r   r}   r   
user_postsunquote)r   r   rj   r~   s       r   r   ArcaliveUserExtractor.articles   sD    
kk!!%(xx""4<<#5v>>r   r   Nr   r0   r   r   r   r      s    2K>>G)G?r   r   c                   <    \ rS rSrS rS rS rS rS
S jrS r	S	r
g)r      c                     Xl         UR                  U l        UR                  S-   U l        [        R                  " S5      UR
                  R                  S'   g )Nz/api/app@   zX-Device-Token)	extractorlogr!   r   generate_tokensessionheaders)r   r   s     r   __init__ArcaliveAPI.__init__   sD    "==NNZ/	6:6I6I"6M	!!"23r   c                 0    SU-   nU R                  X2S5      $ )Nz/list/channel/r   _pagination)r   
board_slugr~   endpoints       r   r   ArcaliveAPI.board   s    #j0*==r   c                 @    S[        U5      -   nU R                  U5      $ )Nz/view/article/breaking/)str_call)r   post_idr   s      r   r3   ArcaliveAPI.post   s    ,s7|;zz(##r   c                 <    SnSUS'   XS'   U R                  X2S5      $ )Nz/list/channel/breakingnicknametargetkeywordr   r   )r   usernamer~   r   s       r   r   ArcaliveAPI.user_posts   s,    +%x$y*==r   Nc                 :   U R                   U-   nU R                  R                  X2S9nUR                  5       nUR                  S:X  a  U$ U R
                  R                  SU5        UR                  S5      =n(       a  SU-   nOSn[        R                  " U5      e)N)r~      zServer response: %smessagezAPI request failed: zAPI request failed)
r!   r   rb   jsonrc   r   debugr    r   AbortExtraction)r   r   r~   r$   rp   datamsgs          r   r   ArcaliveAPI._call   s    ii(">>))#)=}}3&K,d3((9%%3%(3.C&C'',,r   c              #      #     U R                  X5      nUR                  U5      nU(       d  g U S h  vN   UR                  US   5        MJ   N7f)Nnext)r   r    rJ   )r   r   r~   keyr   postss         r   r   ArcaliveAPI._pagination   sL     ::h/DHHSMEMM$v,'  s   1AAA)r   r   r!   r   )r'   r(   r)   r*   r   r   r3   r   r   r   r/   r0   r   r   r   r      s!    N>$>-	(r   r   N)r+   commonr   r   r@   r   r   r   rv   r
   r   rz   r   r   r0   r   r   <module>r      sX    ( & $ $4.	 .$O- Od	2. 	2
?- 
?/( /(r   