
    i                     T    S r SSKJrJr  SSKJrJr   " S S\5      r " S S\5      rg	)
z$Extractors for https://4archive.org/   )	ExtractorMessage   )textdtc                   Z    \ 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)_4archiveThreadExtractor   zExtractor for 4archive threads4archivethread)z
{category}z{board}z{thread} {title}z{no} {filename}.{extension}z{board}_{thread}_{no}https://4archive.orgFz8(?:https?://)?4archive\.org/board/([^/?#]+)/thread/(\d+)z*https://4archive.org/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     J/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/4archive.pyr   !_4archiveThreadExtractor.__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   (       d  US   S   S S US'   U H  nUR                  U5        [        [        R                  " US   5      5      US'   [        R                  S	U4v   S
U;   d  MV  [        R                  US
   [        R                  " US   U5      4v   M     g 7f)N/board//thread/title    com2   datetime urlfilename)rootr   r   requestr   metadatapostsupdateintr   to_tsr   	DirectoryUrlnameext_from_url)r   r"   pagedatar'   posts         r   items_4archiveThreadExtractor.items   s     74::,ht{{mD||C %%}}T"

4 G}!!HUOCR0DMDKKrxxV56DL##R--}kk4;0E0E$d1, , , s   CD5Dc           	          U R                   [        R                  " U R                  5      [        R                  " [        R
                  " USS5      5      S.$ )Nzclass="subject"></span>)r   r   r   )r   r   	parse_intr   unescapeextr)r   r.   s     r   r&   !_4archiveThreadExtractor.metadata.   sB    jjnnT[[1mmDII()%5 6
 	
r   c                 t    UR                  S5      SS   Vs/ s H  nU R                  U5      PM     sn$ s  snf )Nzclass="postContainerr   )splitparse)r   r.   r0   s      r   r'   _4archiveThreadExtractor.posts6   sC     

#9:12>
> JJt>
 	
 
s   5c                 t   [         R                  " U5      nU" SS5      U R                  U" SS5      =(       d	    U" SS5      R                  5       5      [         R                  " U" SS5      5      S.nSU;   a  U" S	S
5        UR                  U" SS5      U" SS5      [         R                  " U" SS5      S S 5      [         R                  " U" SS5      5      [         R                  " U" SS5      5      S.5        U" SS5        [         R                  " [         R                  " U" SS5      5      5      US'   U$ )Nzclass="name">r4   zclass="dateTime"><zclass="dateTime postNum" >z	>Post No.)namer   nozclass="file"zclass="fileText"z	>File: <azhref=""zalt="Image: z (z, r!   xpx)r"   r#   sizewidthheightz<blockquote >z</blockquote>r   )	r   extract_fromparse_datetime_isostripr5   r(   parse_bytesr6   remove_html)r   r0   r7   r/   s       r   r;   _4archiveThreadExtractor.parse<   s     &)4++)3/ 92C8%%'C NN4S#9:
 T!#[1KK 3/ 5 ,,T$-=cr-BC NN4C=9 NN4D>:  	^R mmD$4$4o&%( )Ur   )r   r   N)__name__
__module____qualname____firstlineno____doc__categorysubcategorydirectory_fmtfilename_fmtarchive_fmtr$   refererpatternexampler   r1   r&   r'   r;   __static_attributes__ r   r   r	   r	      sK    (HKAM0L)K!DGIG:G1,"

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S
rg)_4archiveBoardExtractorT   zExtractor for 4archive boardsr   r   r   z9(?:https?://)?4archive\.org/board/([^/?#]+)(?:/(\d+))?/?$zhttps://4archive.org/board/a/c                     [         R                  " X5        US   U l        [        R                  " US   S5      U l        g )Nr   r   )r   r   r   r   r5   numr   s     r   r    _4archiveBoardExtractor.__init__\   s1    4'1X
>>%(A.r   c              #     #    S[         0n U R                   SU R                   SU R                   3nU R	                  U5      R
                  nSU;  a  g [
        R                  " USS5       H5  nU R                   SU R                   SU 3n[        R                  X!4v   M7     U =R                  S-  sl        M  7f)	N
_extractorr   /zclass="thread"zclass="thread" id="trA   r   r   )	r	   r$   r   rb   r%   r   extract_iterr   Queue)r   r/   r"   r.   r   s        r   r1   _4archiveBoardExtractor.itemsa   s     67YYKwtzzl!DHH:>C<<$))Dt+++D2H#N74::,hvhGmmS.. O HHMH s   B<B>)r   rb   N)rO   rP   rQ   rR   rS   rT   rU   r$   rZ   r[   r   r1   r\   r]   r   r   r_   r_   T   s(    'HK!DJG-G/

r   r_   N)	rS   commonr   r   r!   r   r   r	   r_   r]   r   r   <module>rk      s+    + & Dy DNi r   