
    i                         S r SSKJrJr  SSKJrJr   " S S\5      r\R                  0 5      r	 " S S\5      r
 " S	 S
\5      rg)z$Extractors for FoOlSlide based sites   )BaseExtractorMessage   )textutilc                   .    \ rS rSrSrSrS rS rS rSr	g)	FoolslideExtractor   z#Base class for FoOlSlide extractors	foolslidec                 r    [         R                  " X5        U R                  U R                  S   -   U l        g )N)r   __init__rootgroupspage_url)selfmatchs     K/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/foolslide.pyr   FoolslideExtractor.__init__   s(    t+		DKKO3    c                 4    [         R                  " XSSSS0S9$ )Nzutf-8POSTadulttrue)encodingmethoddata)r   request)r   urls     r   r   FoolslideExtractor.request   s%    $$gv=NP 	Pr   c                    UR                  S5      S   R                  S5      R                  S5      nUS   R                  S5      S   nXBS'   [        R                  " U5      US'   [
        R                  " US   5      US	'   [
        R                  " US
   5      US'   [        U5      S:  a  SUS   -   OSUS'   US   R                  S5      S   R                  5       US'   U$ )Nz/read/r   /r   -    langlanguagevolume   chapter   .    chapter_minorchapter_string:title)		partitionrstripsplitr   code_to_languager   	parse_intlenstrip)r   r   r   infor%   s        r   parse_chapter_url$FoolslideExtractor.parse_chapter_url   s    }}X&q)005;;C@Aw  %a(V006ZQ0X..a1Y14Tad1gR_-.88=a@FFHWr   )r   N)
__name__
__module____qualname____firstlineno____doc__basecategoryr   r   r:   __static_attributes__ r   r   r	   r	      s    -L4P	r   r	   c                   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)FoolslideChapterExtractor+   z;Base class for chapter extractors for FoOlSlide based sitesr)   )z
{category}z{manga}z{chapter_string}z@{manga}_c{chapter:>03}{chapter_minor:?//}_{page:>03}.{extension}z{id}z((/read/[^/?#]+/[a-z-]+/\d+/\d+(?:/\d+)?)z0https://read.powermanga.org/read/MANGA/en/0/123/c              #     #    U R                  U R                  5      R                  nU R                  U5      nU R	                  U5      n[        U5      US'   [        R                  " US   S   5      US'   [        R                  SU4v   U R                  S5      (       a  [        R                  O[        nU" US5       H{  u  US'   n US   nUS	 US	 US		 S
 H  n[        R                  " XW   5      XW'   M     UR                  U5        [        R                  " US   U5        [        R                   WU4v   M}     g ! [         a     Ntf = f7f)Ncountr$   
chapter_idr-   zpage-reverser   pager   	thumb_url)heightidsizewidthfilename)r   r   r   metadataimagesr7   r6   r   	Directoryconfigr   enumerate_reversed	enumerateKeyErrorupdatenameext_from_urlUrl)r   rJ   r   imgsenumimager   keys           r   itemsFoolslideChapterExtractor.items5   s:    ||DMM*//}}T"{{4 D	W!^^DGL,AB\T))*.+++ +t&&!* 	#'a=DL%El%L,'+& 9!^^EJ7
 9KK!!$z"2D9++sD(( $1  s+   CEEA(E
EEEEc           
         [         R                  " U5      nU" SS5        U R                  U R                  [         R                  " U" SS5      5      R                  5       [         R                  " U" SS5      5      S.5      $ )Nz<h1 class="tbtitle dnone">r-   title="")mangar/   )r   extract_fromr:   r   unescaper8   )r   rJ   extrs      r   rQ   "FoolslideChapterExtractor.metadataN   sj      &)2.%%dmm"mmDC,@AGGI"mmDC,@A6
  	r   c                 Z    [         R                  " [        R                  " USS5      5      $ )Nzvar pages = ;)r   
json_loadsr   rg   )r   rJ   s     r   rR    FoolslideChapterExtractor.imagesV   s    tyy~sCDDr   rC   N)r<   r=   r>   r?   r@   subcategorydirectory_fmtfilename_fmtarchive_fmtBASE_PATTERNpatternexampler_   rQ   rR   rB   rC   r   r   rE   rE   +   s<    EKAMJ KHHG@G)2Er   rE   c                   :    \ rS rSrSrSrSr\S-   rSr	S r
S rS	rg
)FoolslideMangaExtractorZ   z9Base class for manga extractors for FoOlSlide based sitesrd   Tz(/series/[^/?#]+)z)https://read.powermanga.org/series/MANGA/c              #     #    U R                  U R                  5      R                  nU R                  U5      nU R	                  SS5      (       d  UR                  5         U H"  u  p4[        US'   [        R                  X44v   M$     g 7f)Nzchapter-reverseF
_extractor)	r   r   r   chaptersrT   reverserE   r   Queue)r   rJ   ry   r)   r   s        r   r_   FoolslideMangaExtractor.itemsa   sn     ||DMM*//==&{{,e44%MG!:D--.. &s   BB	c                 @   [         R                  " U5      n[         R                  " U" SS5      5      R                  5       nU" SS5      nU" SS5      n/ n U" SS5      nU(       d  U$ UR	                  XpR                  UX4UU" SS5      U" SS5      S	.5      45        MI  )
Nz<h1 class="title">z</h1>z<b>Author</b>: z<brz<b>Artist</b>: z<div class="title"><a href="rc   rb   )rd   authorartistr/   group)r   re   rf   r8   appendr:   )r   rJ   rg   rd   r~   r   resultsr   s           r   ry    FoolslideMangaExtractor.chaptersl   s      &d#7ABHHJ'/'/5s;CNNC!7!7F"&y#"6"&y#"6> "  	 r   rC   N)r<   r=   r>   r?   r@   rm   categorytransferrq   rr   rs   r_   ry   rB   rC   r   r   ru   ru   Z   s*    CK11G9G	/r   ru   N)r@   commonr   r   r-   r   r   r	   rX   rq   rE   ru   rC   r   r   <module>r      sP    + *  0 "(( * ,E 2 ,E^!0 !r   