
    i                         S r SSKJrJr  SSKJr   " S S\5      r\R                  SSS	.S
SS	.S.5      r " S S\5      r	 " S S\5      r
g)zExtractors for 2chen boards   )BaseExtractorMessage   )textc                       \ rS rSrSrSrg)_2chenExtractor   2chen N)__name__
__module____qualname____firstlineno__basecategory__static_attributes__r       G/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/2chen.pyr   r      s    Lr   r   zhttps://sturdychan.helpz((?:sturdychan\.help|2chen\.(?:moe|club)))rootpatternzhttps://schan.help/zschan\.help)
sturdychanschanc                   H    \ 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)_2chenThreadExtractor   zExtractor for 2chen threadsthread)z
{category}z{board}z{thread} {title}z{time} {filename}.{extension}z{board}_{thread}_{no}_{time}z/([^/?#]+)/(\d+)z https://sturdychan.help/a/12345/c              #     #    U R                   S   nU R                   S   =o R                  S'   U R                   SU SU 3nU R                  USSS9R                  n[        R
                  " USS	5      u  U R                  S
'   n[        R                  " [        R
                  " USSU5      S   5      U R                  S'   [        R                  S0 4v   U R                  U5       H  nUS   nU(       d  M  US   S:X  a  U R                  U-   nUR                  S5      S   =US'   n[        R                  " US   R                  5       5      US'   [        R                  U[        R                  " US   U5      4v   M     g 7f)Nr   /zutf-8T)encodingnotfoundzclass="board">/z/<boardz<h3>z</h3>    title url?datetimefilename)groupskwdictr   requestr   extractunescaper   	Directoryposts	partition	parse_int	timestampUrlnameext_from_url)selfr"   r   r&   pageposposts          r   items_2chenThreadExtractor.items(   sj    B)-R8X&1UG1VH-||C'D|AFF$(LL#T%+!Gc#}}T\\&'3.(().+  ,G R''JJt$Du+C1v}ii#o #c 21 55DK#>>$v,*@*@*BCDL++sD$9$9Z $%( ( ( %s   FFc                 Z    [        U R                  [        R                  " USS5      5      $ )z#Return iterable with relevant postszclass="glass mediaz
</article>)mapparser   extract_iter)r7   r8   s     r   r1   _2chenThreadExtractor.posts@   s*    4::t00& 6 7 	7r   c           
      T   [         R                  " U5      n[         R                  " U" SS5      5      U R                  U" SS5      R	                  S5      S   S5      U" SS	5      [         R                  " U" S
S	5      5      [         R
                  " U" SS5      SS	5      U" SS	5      S.$ )Nz<span>z</span>z<time<>r   z%d %b %Y (%a) %H:%M:%Szhref="#p"z
download="z<figure>z</zhref="zdata-hash=")namer(   nor*   r&   hash)r   extract_fromr/   parse_datetimer2   extr)r7   r:   rK   s      r   r?   _2chenThreadExtractor.parseE   s      &d8Y&?@++Wc",,S1!4( Z-d<&=>		$z4"8(CH]C0

 
	
r   r   N)r   r   r   r   __doc__subcategorydirectory_fmtfilename_fmtarchive_fmtBASE_PATTERNr   exampler;   r1   r?   r   r   r   r   r   r      s8    %KAM2L0K00G0G(07

r   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	_2chenBoardExtractorT   zExtractor for 2chen boardsr"   z/([^/?#]+)(?:/catalog|/?$)zhttps://sturdychan.help/a/c              #     #    U R                    SU R                  S    S3nU R                  USS9R                  nS[        0n[        R
                  " USS5       H%  n[        R                  U R                   U-   U4v   M'     g 7f)	Nr   r   z/catalogT)r!   
_extractorz<figure><a href="rE   )r   r+   r-   r   r   r@   r   Queue)r7   r&   r8   datar   s        r   r;   _2chenBoardExtractor.itemsZ   s~     1T[[_-X6||C$|/4434'')30F--V!3T990s   BBr   N)r   r   r   r   rM   rN   rR   r   rS   r;   r   r   r   r   rU   rU   T   s    $K::G*G:r   rU   N)rM   commonr   r   r%   r   r   updaterR   r   rU   r   r   r   <module>r^      sd    " * m  %%)>
 &!	' 	2
O 2
j:? :r   