
    iI                     X    S r SSKJrJr  SSKJrJr  Sr " S S\5      r " S S	\5      r	g
)zExtractors for https://2ch.org/   )	ExtractorMessage   )textutilz#(?:https?://)?2ch\.(org|su|life|hk)c                   J    \ 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)_2chThreadExtractor   zExtractor for 2ch threads2chthreadhttps://2ch.org)z
{category}z{board}z{thread} {title}z {tim}{filename:? //}.{extension}z{board}_{thread}_{tim}z/([^/?#]+)/res/(\d+)z https://2ch.org/a/res/12345.htmlc                 ^    US   nSUS:X  a  SOU-   U l         [        R                  " X5        g Nr   zhttps://2ch.hkorgrootr   __init__selfmatchtlds      E/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/2ch.pyr   _2chThreadExtractor.__init__   -    Ah"sd{eD	4'    c              #     #    U R                   u  pnU R                   SU SU S3nU R                  U5      S   S   S   nUS   nUR                  S5      =(       d    [        R
                  " US   5      nUU[        R                  " U5      S S	 S
.n[        R                  SU4v   U H  nUR                  S5      =n	(       d  M  US   US'   U R                  US   5      US'   US	 US	 U	 H  n
U
R                  U5        U
R                  U5        U
S   R                  S5      S   U
S'   U
S   R                  S5      u  U
S'   oS'   [        R                  U R                  U
S   -   U
4v   M     M     g 7f)N//res/.jsonthreads    postssubjectcomment2   )boardr   title filesname	post_name	timestampdatefullname.filenametim	extensionpath)groupsr   request_jsongetr   remove_htmlunescaper   	Directoryparse_timestampupdate
rpartitionUrl)r   _r'   r   urlr#   opr(   postr*   files              r   items_2chThreadExtractor.items   s    ;;&1UG56!!#&y1!4W=1Xy!DT%5%5bm%D mmE*3B/
 V++D))u)$(L[!#33D4EFVML!DKK'KK%'+J'7'B'B3'G'JD$V//4 6DK$5 "++tyy4<'?EE " s   CE9B1E9r   N)__name__
__module____qualname____firstlineno____doc__categorysubcategoryr   directory_fmtfilename_fmtarchive_fmtBASE_PATTERNpatternexampler   rD   __static_attributes__ r   r   r	   r	      s>    #HKDAM5L*K44G0G(
Fr   r	   c                   >    \ rS rSrSrSrSrSr\S-   r	Sr
S rS	 rS
rg)_2chBoardExtractor@   zExtractor for 2ch boardsr   r'   r   z/([^/?#]+)/?$zhttps://2ch.org/a/c                 ^    US   nSUS:X  a  SOU-   U l         [        R                  " X5        g r   r   r   s      r   r   _2chBoardExtractor.__init__H   r   r   c              #     #    U R                    SU R                  S    3nUS-   nU R                  U5      n[        US'   US    H"  nU SUS    S3n[        R
                  X#4v   M$     [        R                  " US	   S5       HP  nU SU S
3nU R                  U5      n[        US'   US    H"  nU SUS    S3n[        R
                  X&4v   M$     MR     g 7f)Nr   r   z/index.json
_extractorr!   r   
thread_numz.htmlpagesr    )r   r5   r6   r	   r   Queuer   advance)r   baser@   indexr   npages          r   rD   _2chBoardExtractor.itemsM   s     ))Adkk!n-. ]"!!#&1lI&FF%| 45U;C--++ '
 eGna0AF!A3e$C$$S)D!4Dy/eF<$8#9?mmS.. *	 1s   CCrF   N)rG   rH   rI   rJ   rK   rL   rM   r   rQ   rR   rS   r   rD   rT   rU   r   r   rW   rW   @   s.    "HKD--G"G(
/r   rW   N)
rK   commonr   r   r)   r   r   rQ   r	   rW   rU   r   r   <module>rg      s0    & & 5.F) .Fb/ /r   