
    i#                        S r SSKJrJr  SSKJrJr  SSKJr  SSK	r	Sr
 " S	 S
5      r " S S\\5      r " S S\\5      r\" SS9S0S j5       r\" SS9S 5       r\" SS9S 5       rS rS rS rS rS rS rS rS r\" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      4
r\" S 5      \" S5      \" S 5      \" S5      \" S 5      \" S5      \" S 5      \" S5      \" S5      \" S5      4
r\" S5      \" S5      \" S 5      \" S5      \" S5      \" S5      \" S 5      \" S5      \" S5      \" S5      4
r\" S 5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      4
r\" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      4
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)1z$Extractors for https://mangafire.to/   )ChapterExtractorMangaExtractor   )text	exception)memcache    Nz%(?:https?://)?(?:www\.)?mangafire\.toc                        \ rS rSrSrSrSrSrg)MangafireBase   z#Base class for mangafire extractors	mangafirezhttps://mangafire.to N)__name__
__module____qualname____firstlineno____doc__categoryroot__static_attributes__r       K/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/mangafire.pyr   r      s    -H!Dr   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)MangafireChapterExtractor   z&Extractor for mangafire manga chapters)z
{category}z{manga}zB{volume:?v/ />02}{chapter:?c//>03}{chapter_minor:?//}{title:?: //}zT{manga}{volume:?_v//>02}{chapter:?_c//>03}{chapter_minor:?//}_{page:>03}.{extension}z{manga_id}_{chapter_id}_{page}z>/read/([\w-]+\.(\w+))/([\w-]+)/((chapter|volume)-\d+(?:\D.*)?)z3https://mangafire.to/read/MANGA.ID/LANG/chapter-123c                    U R                   u  p#pEU l         [        XU R                  U45      nXe   n[        R                  " USS5      U l        0 [        X5      E[        U5      E$ ! [         a    [        R
                  " S5      ef = f)Nchapter	data-id="")groupstype_manga_chaptersKeyErrorr   NotFoundErrorr   extr
chapter_id_manga_info_chapter_info)self_
manga_pathmanga_idlangchapter_infochaptersanchors           r   metadata"MangafireChapterExtractor.metadata'   s    >Bkk;
d$)	5&t		4-HIH+F ))FK=
$+
F#
 	
	  	5)))44	5s   A( (!B	c                    U R                    SU R                   SU R                   3nS[        U R                   SU R                   35      0nSS0nU R	                  X#US9nUS   S	    Vs/ s H
  nUS
   S 4PM     sn$ s  snf )N/ajax/read//vrf@x-requested-withXMLHttpRequestparamsheadersresultimagesr	   )r   r!   r&   generate_VRFrequest_json)r)   pageurlr;   r<   dataimages          r   r>    MangafireChapterExtractor.images6   s    ;tyyk4??2CD1T__4E&FGH%'78  W E h1
1 1Xt1
 	
 
s   -B)r&   r!   N)r   r   r   r   r   directory_fmtfilename_fmtarchive_fmtBASE_PATTERNpatternexampler1   r>   r   r   r   r   r   r      s?    0NM	!  	)  3 3GCG
	
r   r   c                   0    \ rS rSrSr\r\S-   rSr	S r
Srg)MangafireMangaExtractorB   zExtractor for mangafire mangaz/manga/([\w-]+)\.(\w+)z#https://mangafire.to/manga/MANGA.IDc           	      >   U R                   u  p#U R                  S5      =(       d    Sn[        X SU 35      n[        XSU45      nUR	                  5        Vs/ s H7  nU R
                  [        R                  " USS5      -   0 UE[        U5      E4PM9     sn$ s  snf )Nr-   en.r   href="r   )	r    configr'   r"   valuesr   r   r%   r(   )r)   rA   
manga_slugr,   r-   mangar/   r0   s           r   r/    MangafireMangaExtractor.chaptersH   s    #{{
{{6"*dDL("<="4It)DE #//+

 ,	 YY68S99 <<'<  ,
 	
 
s   >Br   N)r   r   r   r   r   r   chapterclassrI   rJ   rK   r/   r   r   r   r   rM   rM   B   s    ',L66G3G
r   rM   )keyargc                    Uc,  U R                    SU 3nU R                  U5      R                  nUR                  S5      u  pEn[        R                  " U5      n[        R
                  " U" SS5      SS5      U" SS5      R                  S	S
5      R                  5       [        R                  " U" SS5      5      UU[        R                  " U" SS5      5      R                  S5      [        R                  " U" SS5      5      [        R                  " [        R                  " U" SS5      5      5      R                  S5      [        R                  " U" SS5      5      [        R                  " U" SS5      5      S S S2   [        R                  " [        R                  " U" SS5      5      5      R                  S5      [        R                  " [        R                  " U" SS5      5      5      [        R                  " U" SS5      5      S.n[        US   =n	5      S:X  a  U	S   (       d  SUS'   [        US   =n	5      S:X  a  U	S   (       d  SUS'   U$ ) Nz/manga/rQ   zclass="poster">z</div>zsrc="r   z<p><r*    zitemprop="name">z<h6>z; zclass="min-info">z</a>z<span>Author:</span>z , z<span>Published:</span>z<span>Genres:</span>r   z<span>Mangazines:</span>zclass="score">z / zid="synopsis">z<script>)coverstatusrV   r,   rU   manga_titlesr!   author	publishedtags	publisherscoredescriptionr`   r   r	   r   rc   )r   requestr   
rpartitionextract_fromr%   replacetitleunescapesplitremove_html
split_htmlparse_floatlen)
r)   r+   rA   rB   slugr*   midr%   rV   lsts
             r   r'   r'   X   s   |7:,/||C %%((-LDST"D4x)*138uc"**34::<mmD%% &dC' %+  ") *-- 0 0"H2. !/ 005e%%d%x'1 2"H!. //2s4]]4#3#3D&52 $3 449E%L!!$"2"24e4% #& '''j)* +-E4 %/!3"a'Ah
%$$3%*3q6kLr   c                 0   Uu  p#nU R                    SU SU SU 3nS[        U SU SU 35      0nSS0nU R                  XVUS9nU SU S3n	[        R                  " US   S	   S
S5       V
s0 s H  n
[        R
                  " XS5      U
_M     sn
$ s  sn
f )Nr4   r5   r6   r7   r8   r9   r:   r=   htmlz<a >r   )r   r?   r@   r   extract_iterr%   )r)   
manga_infor,   r!   r-   rB   r;   r<   rC   needler0   s              r   r"   r"      s    %HDYYK{8*AdV1TF
;C\XJavQtf"=>?F!#34GSADz4&"F ''Xv(>sKKF 			&#&.K  s   ."Bc                    [         R                  " U SS5      R                  SS5      u  pnUR                  S5      (       a  [         R                  " U SS5      n[         R                  " [         R                  " U SS5      5      n[         R                  " U5      USS	UU[         R
                  " [         R                  " U S
S5      5      US.$ [         R                  " U SS5      R                  S5      u  pgn[         R                  " U5      Xx-   U[         R                  " [         R                  " U SS5      5      [         R
                  " [         R                  " U S
S5      5      US.$ )NrR   r   r5   r   volzdata-number="r   r	    ztitle=")volume	volume_idr   chapter_minorchapter_stringr&   rj   r-   rQ   )r   r   r   r&   rj   r-   )r   r%   rsplit
startswith	parse_intrk   	partition)	infor*   r-   r.   r}   r~   r   sepminors	            r   r(   r(      s    IIdHc:AA#qIA\u%%4#6NN499T;#DE	"nnV4' *'"mmDIIdIs,KL"	
 		
 ))D/3?II#NG%..1+&..4c)JK--		$	3(GH r   c                 v   [         R                  " U 5      R                  5       n [        [        [
        [        4[        [        [        [        4[        [        [        [        4[        [         ["        [$        4[&        [(        [*        [,        44 HZ  u  pp4[/        [1        [2        R4                  " U5      U 5      [2        R4                  " U5      [2        R4                  " U5      U5      n M\     [2        R6                  " [9        U 5      SS9R;                  S5      R=                  SS5      R=                  SS5      $ )NF)newline   =   +   -   /   _)r   quoteencodekey_lseed_Aprefix_O
schedule_ckey_gseed_Vprefix_v
schedule_ykey_Bseed_Nprefix_L
schedule_bkey_mseed_Pprefix_p
schedule_jkey_Fseed_kprefix_W
schedule_e	transformrc4binascii
a2b_base64
b2a_base64bytesrstripri   )inputkey_b64seed_b64
prefix_b64schedules        r   r?   r?      s    JJu$$&E 
*-	*-	*-	*-	*-4/: ##G,e4)
+	
4 uU|U;BBgdD!''$"56r   c           	          [        U5      n/ n[        U 5       HP  u  pgXd:  a  UR                  X&   =(       d    S5        UR                  X6S-     " XqUS-     -  S-  5      S-  5        MR     U$ )Nr	   
          )rp   	enumerateappend)r   seedprefixr   
prefix_lenoutidxcs           r   r   r      sn    VJ
CE"JJv{'a(

8"H%qb>'9S&@ACGH # Jr   c                 H   [        U 5      nSn[        [        S5      5      n[        S5       H"  nX4U   -   XU-     -   S-  nXC   XE   sXE'   XC'   M$     / nS=pSU HD  nUS-   S-  nX4U   -   S-  nXC   XE   sXE'   XC'   XDU   XC   -   S-     nUR                  Xx-  5        MF     U$ )Nr	      r   r   )rp   listranger   )	keyr   lkeyjsir   r   ks	            r   r   r      s    s8D	AU3ZA3Z1XH%,T14
ad  CIAUcM1XT14
adtad{c!"

15  Jr   c                    ^  U 4S j$ )Nc                    > U T-   S-  $ Nr   r   r   ns    r   <lambda>add8.<locals>.<lambda>       a!es]r   r   r   s   `r   add8r      	    ""r   c                    ^  U 4S j$ )Nc                    > U T-
  S-   S-  $ )Nr   r   r   r   s    r   r   sub8.<locals>.<lambda>   s    a!eckS(r   r   r   s   `r   sub8r      s	    ((r   c                    ^  U 4S j$ )Nc                    > U T-  S-  $ r   r   r   s    r   r   xor8.<locals>.<lambda>   r   r   r   r   s   `r   xor8r      r   r   c                    ^  U 4S j$ )Nc                 &   > U T-  U ST-
  -	  -  S-  $ N   r   r   r   s    r   r   rotl8.<locals>.<lambda>       qAv!A,/36r   r   r   s   `r   rotl8r      	    66r   c                    ^  U 4S j$ )Nc                 &   > U T-	  U ST-
  -  -  S-  $ r   r   r   s    r   r   rotr8.<locals>.<lambda>   r   r   r   r   s   `r   rotr8r      r   r                  r   z,FgxyJUQDPUGSzwbAq/ToWn4/e8jYzvabE+dLMb1XU1o=z,CQx3CLwswJAnM1VxOqX+y+f3eUns03ulxv8Z+0gUyik=z,fAS+otFLkKsKAJzu3yU+rGOlbbFVq+u+LaS6+s1eCJs=z,Oy45fQVK9kq9019+VysXVlz1F9S1YwYKgXyzGlZrijo=z,aoDIdXezm2l3HrcnQdkPJTDT8+W6mcl2/02ewBHfPzg=z,yH6MXnMEcDVWO/9a6P9W92BAh1eRLVFxFlWTHUqQ474=z,RK7y4dZ0azs9Uqz+bbFB46Bx2K9EHg74ndxknY9uknA=z,rqr9HeTQOg8TlFiIGZpJaxcvAaKHwMwrkqojJCpcvoc=z,/4GPpmZXYpn5RpkP7FC/dt8SXz7W30nUZTe8wb+3xmU=z,wsSGSBXKWA9q1oDJpjtJddVxH+evCfL5SO9HZnUDFU8=zl9PavRg=zMl2v7ag1Jg==zi/Va0UxrbMo=zWFjKAHGEkQM=5Rr27rWd)N)-r   commonr   r   r|   r   r   cacher   r   rI   r   r   rM   r'   r"   r(   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      sh   + 4   7" "&
/? &
R
m^ 
, 
& &R 
  
 D6*(#)#77
 	IuQxq49eAh	!HeAhS	58U1X

 	HeAhR%(DH	!Hd2ha%(E!H

 	IuQxb49eAhItBxq58U1X

 	HeAha%(DI	!Hd3iq58U1X

 
!HeAha%(E!H	!HeAha$s)U1X
 	76666	7	7	7	7	7r   