
    iI                         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SS	.S.5      r " S S\5      r	 " S S\5      r
g
)z!Extractors for vichan imageboards   )BaseExtractorMessage   )textc                       \ rS rSrSrSrSrg)VichanExtractor   z Base class for vichan extractorsvichan N)__name__
__module____qualname____firstlineno____doc__basecategory__static_attributes__r       H/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/vichan.pyr   r      s
    *Lr   r   zhttps://8kun.topz	8kun\.top)rootpatternNzsmuglo(?:\.li|li\.net)zhttps://boards.guro.cxzboards\.guro\.cx)8kunsmugloligurochanc                   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)VichanThreadExtractor$   zExtractor for vichan threadsthread)z
{category}z{board}z{thread} {title}z'{time}{num:?-//} {filename}.{extension}z{board}_{thread}_{tim}z/([^/?#]+)/res/(\d+)z!https://8kun.top/a/res/12345.htmlc              #   P  #    U R                   S   nU R                   S   nU R                   SU SU S3nU R                  U5      S   nUS   R                  S5      =(       d    [        R
                  " US   S	   5      nU R                  S
:X  a  U R                  OU R                  nUU[        R                  " U5      S S SS.n[        R                  SU4v   U HC  nSU;   d  M  U" X5      v   SU;   d  M  [        US   S5       H  u  US'   n	U" X5      v   M     ME     g 7f)N//res/z.jsonposts    subcomr   2   )boardr   titlenum filenameextra_filesr   r*   )groupsr   request_jsongetr   remove_htmlcategory_process_8kun_processunescaper   	Directory	enumerate)
selfr(   r   urlr#   r)   processdatapostfiledatas
             r   itemsVichanThreadExtractor.items-   s&    BR1UG56!!#&w/aU#Ht'7'7a'H)-&)@4%%== 	 mmE*3B/	
 T))DT!d)) D(1: /24-UX%d5524	 s   C#D&)D&;+D&c                     UR                  U5        US   nUSS  US'   U R                   SUS    SUS    U 3=US'   n[        R                  XA4$ )	Nextr   	extensionr!   r(   /src/timr9   )updater   r   Url)r8   r<   r;   rA   r9   s        r   r4   VichanThreadExtractor._processF   sh    D5kG[yyk4=/tE{mC5A	BUc{{C%%r   c                     UR                  U5        US   nUS   n[        U5      S:  a  SU U 3nOSUS    SU U 3nXQS'   US	S  US
'   [        R                  XQ4$ )NrA   rD      z&https://media.128ducks.com/file_store/zhttps://media.128ducks.com/r(   rC   r9   r   rB   )rE   lenr   rF   )r8   r<   r;   rA   rD   r9   s         r   r3   #VichanThreadExtractor._process_8kunN   s{    D5k5ks8b=:3%uEC/WeC5NCUG[{{C%%r   r   N)r   r   r   r   r   subcategorydirectory_fmtfilename_fmtarchive_fmtBASE_PATTERNr   exampler>   r4   r3   r   r   r   r   r   r   $   s8    &KAM<L*K44G1G62&&r   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	VichanBoardExtractor]   zExtractor for vichan boardsr(   z&/([^/?#]+)(?:/index|/catalog|/\d+|/?$)zhttps://8kun.top/a/c              #     #    U R                   S   nU R                   SU S3nU R                  U5      nU HL  nUS    H@  nU R                   SU SUS    S3nUS   US'   [        US	'   [        R
                  X%4v   MB     MN     g 7f)
Nr    r!   z/threads.jsonthreadsr"   noz.htmlpage
_extractor)r.   r   r/   r   r   Queue)r8   r(   r9   rV   rX   r   s         r   r>   VichanBoardExtractor.itemsc   s     B1UG=1##C(Dy/1UG5eD!%fv'<|$mmS00	 * s   BBr   N)r   r   r   r   r   rL   rP   r   rQ   r>   r   r   r   r   rS   rS   ]   s    %KFFG#G
1r   rS   )r   commonr   r   r+   r   r   rE   rP   r   rS   r   r   r   <module>r]      sq    ( * m 
 %%"
 ,
 )&'  6&O 6&r1? 1r   