
    i                     P    S r SSKJrJr  SSKJr   " S S\5      r " S S\5      rg	)
z)Extractors for https://4chanarchives.com/   )	ExtractorMessage   )textc                   f    \ 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)_4chanarchivesThreadExtractor   z*Extractor for threads on 4chanarchives.com4chanarchivesthreadhttps://4chanarchives.com)z
{category}z{board}z{thread} - {title}z{no}-{filename}.{extension}z{board}_{thread}_{no}Fz=(?:https?://)?4chanarchives\.com/board/([^/?#]+)/thread/(\d+)z/https://4chanarchives.com/board/a/thread/12345/c                 j    [         R                  " X5        UR                  5       u  U l        U l        g N)r   __init__groupsboardr   selfmatchs     O/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/4chanarchives.pyr   &_4chanarchivesThreadExtractor.__init__   s$    4'"',,.
DK    c              #     #    U R                    SU R                   SU R                   3nU R                  U5      R                  nU R                  U5      nU R                  U5      nUS   (       d6  [        R                  " [        R                  " US   S   5      5      S S US'   U HI  nUR                  U5        [        R                  SU4v   SU;   d  M1  [        R                  US   U4v   MK     g 7f)	N/board/z/thread/title    com2    url)rootr   r   requestr   metadatapostsunescaperemove_htmlupdater   	DirectoryUrl)r   r   pagedatar#   posts         r   items#_4chanarchivesThreadExtractor.items   s     74::,ht{{mD||C %%}}T"

4 G} MM$*:*:a+! ""%2'DM DKK##R--}kk4;44	 s   CC8C8c           	          U R                   U R                  [        R                  " [        R                  " USS5      5      S.$ )Nzproperty="og:title" content="")r   r   r   )r   r   r   r$   extr)r   r)   s     r   r"   &_4chanarchivesThreadExtractor.metadata/   s9    **++--		5s)< =
 	
r   c                 z    [         R                  " USS5       Vs/ s H  o R                  U5      PM     sn$ s  snf )z Build a list of all post objectszid="pcz</blockquote>)r   extract_iterparse)r   r)   htmls      r   r#   #_4chanarchivesThreadExtractor.posts7   sA    -1->->(O.- . .-T

4  .- . 	. .s   8c                     U R                  U5      nSU;   a+  U R                  X5        US   R                  S5      S   US'   U$ )z6Build post object by extracting data from an HTML post>File: <r   .r   	extension)_extract_post_extract_file
rpartition)r   r5   r+   s      r   r4   #_4chanarchivesThreadExtractor.parse<   sK    !!$'t* $U 6 6s ;A >Dr   c           	         [         R                  " U5      n[         R                  " U" SS5      5      U" SS5      U" SS5      R                  5       [         R                  " XR                  S5      S  R                  S5      S   5      S	.$ )
Nr   r/   zclass="name"><zclass="dateTime postNum" >z<blockquote>r   )nonametimer   )r   extract_from	parse_intrstripr$   find	partition)r   r5   r0   s      r   r;   +_4chanarchivesThreadExtractor._extract_postD   s{      &NN4C=1#.5s;BBDMMYY}-./99#>qAC	
 	
r   c                 b   [         R                  " XR                  S5      5      nU" SS5      US'   [         R                  " U" SS5      R	                  S5      S   5      US	'   U" S
S5      US'   [         R
                  " U" SS5      5      US'   [         R
                  " U" SS5      5      US'   g )Nr8   zhref="r/   r   rA   r@   r9   r   filename(z, fsizer   xw)h)r   rE   indexunquoter=   rF   )r   r5   r+   r0   s       r   r<   +_4chanarchivesThreadExtractor._extract_fileN   s      zz*'=>8S)U<<S#(A(A#(Fq(IJZS$WNN4C=1S	NN4C=1S	r   )r   r   N)__name__
__module____qualname____firstlineno____doc__categorysubcategoryr    directory_fmtfilename_fmtarchive_fmtrefererpatternexampler   r,   r"   r#   r4   r;   r<   __static_attributes__ r   r   r   r      sU    4HK&DCM0L)KGNG?G15 
.

2r   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)_4chanarchivesBoardExtractorW   z)Extractor for boards on 4chanarchives.comr
   r   r   z>(?:https?://)?4chanarchives\.com/board/([^/?#]+)(?:/(\d+))?/?$z"https://4chanarchives.com/board/a/c                 j    [         R                  " X5        UR                  5       u  U l        U l        g r   )r   r   r   r   r)   r   s     r   r   %_4chanarchivesBoardExtractor.__init___   s$    4' %
DIr   c              #   R  #    S[         0n[        R                  " U R                  S5      nSn U R                   SU R
                   SU 3nU R                  U5      R                  nS n[        R                  " XSS5       H  n[        R                  Xa4v   M     Uc  g US-  nMx  7f)N
_extractorr   zF<span class="postNum desktop">
                        <span><a href="r   /r/   )
r   r   rF   r)   r    r   r!   r3   r   Queue)r   r*   pnumneedler   r)   r   s          r   r,   "_4chanarchivesBoardExtractor.itemsc   s     ;<~~dii++ YYKwtzzl!D6:C<<$))DF++D#>mmV11 ? ~AID s   B%B')r   r)   N)rV   rW   rX   rY   rZ   r[   r\   r    ra   rb   r   r,   rc   rd   r   r   rf   rf   W   s(    3HK&DOG2G/r   rf   N)rZ   commonr   r   r   r   r   rf   rd   r   r   <module>rr      s+    0 & E2I E2P9 r   