
    i                     :    S r SSKJrJr  SSKJr   " S S\5      rg)z"Extractors for https://warosu.org/   )	ExtractorMessage   )textc                   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S rS rS rS rS rS rSrg)WarosuThreadExtractor   z#Extractor for threads on warosu.orgwarosuthreadzhttps://warosu.org)z
{category}z{board}z{thread} - {title}z{tim} {filename}.{extension}z{board}_{thread}_{tim}z8(?:https?://)?(?:www\.)?warosu\.org/([^/]+)/thread/(\d+)z!https://warosu.org/a/thread/12345c                 j    [         R                  " X5        UR                  5       u  U l        U l        g )N)r   __init__groupsboardr   )selfmatchs     H/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/warosu.pyr   WarosuThreadExtractor.__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'   [        R                  SU4v   U H  nSU;   d  M  S	 H  n[        R                  " XV   5      XV'   M     U R                  US
   5      nUR                  SUR                   S35      US'   UR                  U5        [        R                   US   U4v   M     g 7f)N/z/thread/title    com2    image)whnotimetimr    z%a, %b z, %Y %H:%M:%Snow)rootr   r   requestr   metadatapostsunescaperemove_htmlr   	Directory	parse_intparse_timestampstrftimedayupdateUrl)r   urlpagedatar&   postkeydts           r   itemsWarosuThreadExtractor.items   s(    1TZZL>||C %%}}T"

4 G} MM$*:*:a+! ""%2'DM T))D$:C $ty 9DI ;))$v,7 kkGBFF8=*IJUD!kk4=$66 s   CE
BEc                     [         R                  " USS5      n[         R                  " [         R                  " USS5      5      nU R                  UR	                  S5      S   U R
                  US.$ )Nz<title>z</title>zclass=filetitle><z - r   )r   
board_namer   r   )r   extrr'   r   splitr   )r   r1   	boardnamer   s       r   r%   WarosuThreadExtractor.metadata3   s\    IIdIz:	dii.@#FG**#//%03++	
 	
r   c                     [         R                  " USS5      nSnUR                  U5       Vs/ s H  o0R                  U5      PM     sn$ s  snf )z Build a list of all post objectsz<div class=contentz</form>z<table>)r   r;   r<   parse)r   r1   needler3   s       r   r&   WarosuThreadExtractor.posts=   sD    yy3Y?-1ZZ-?@-?T

4 -?@@@s   Ac                     U R                  U5      nSU;   aR  U R                  X5      (       a<  US   R                  S5      S   nUR                  S5      u  US'   oBS'   SUS   -   US'   U$ )	z6Build post object by extracting data from an HTML postz<span class="fileinfor   r   r   .r!   	extensionext)_extract_post_extract_image
rpartition	partition)r   r3   r2   part_s        r   r@   WarosuThreadExtractor.parseC   sx    !!$'"d*##D//=++C03D04s0C-DK-[ 11DKr   c                     [         R                  " U5      nU" SS5      U" SS5      R                  5       U" SS5      [         R                  " [         R                  " U" SS5      R                  5       5      5      S	.$ )
Nzid=p>zclass=postername>r9   zclass=posttime title=z000>z<blockquote>z</blockquote>)r   namer    r   )r   extract_fromstripr'   r(   )r   r3   r;   s      r   rG   #WarosuThreadExtractor._extract_postM   sq      &%,c288:0&9MM$"2"244116#: ;	
 	
r   c                    [         R                  " U5      nU" SS5        U" SS5      US'   U" SS5      US'   U" SS5      US'   [         R                  " U" SS	5      R                  5       R	                  S
5      S   5      US'   U" SS5        U" SS5      =n(       a(  US   S:X  a  U R
                  U-   US'   gSU;  a  gXBS'   gg)Nz<span class="fileinfo">r   zFile: z, fsizexr   r   r9   rD   r   filenamez<br>z<a href=rO   r   r   zwarosu.FT)r   rQ   unquoterstriprI   r#   )r   r3   r2   r;   r0   s        r   rH   $WarosuThreadExtractor._extract_imageW   s      &&+Xt,WSMS	TNS	<<)VXjjoa)1 2ZVRz3''3'1v} $		CW
 	 #% #Wr   )r   r   N)__name__
__module____qualname____firstlineno____doc__categorysubcategoryr#   directory_fmtfilename_fmtarchive_fmtpatternexampler   r6   r%   r&   r@   rG   rH   __static_attributes__ r   r   r   r      sQ    -HKDCM1L*KIG1G17*
A
r   r   N)r_   commonr   r   r   r   r   rh   r   r   <module>rj      s    ) & ZI Zr   