
    i&                         S r SSKJrJrJrJr  SSKJrJr  SSK	J
r
  Sr " S S5      r " S	 S
\\5      r " S S\\5      r " S S\\5      r\
" SS9S 5       rS rg)z!Extractors for https://comick.io/   )GalleryExtractorChapterExtractorMangaExtractorMessage   )text	exception)memcachez"(?:https?://)?(?:www\.)?comick\.ioc                        \ rS rSrSrSrSrSrg)
ComickBase   z#Base class for comick.io extractorscomickhttps://comick.io N)__name__
__module____qualname____firstlineno____doc__categoryroot__static_attributes__r       H/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/comick.pyr   r      s    -HDr   r   c                   B    \ 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)ComickCoversExtractor   z$Extractor for comick.io manga coverscovers)z
{category}z{manga}Coversz{volume:>02}_{lang}.{extension}zc_{id}z/comic/([\w-]+)/coverz#https://comick.io/comic/MANGA/coverc                 J    [        X R                  S   5      nUS   U l        U$ )N    
manga_slug)_manga_infogroupsslug)selfpagemangas      r   metadataComickCoversExtractor.metadata!   s%    D++a.1,'	r   c                 j   U R                    SU R                   S3nU R                  U5      R                  nU R	                  U5      nUS   S   S   S   nUR                  5         U Vs/ s H;  nSUS   -   US	   US
   US   US   US   [        R                  " US   5      US.4PM=     sn$ s  snf )N/comic/z/coverprops	pagePropscomic	md_covershttps://meo.comick.pictures/b2keyidwhslocalevol)r3   widthheightsizelangvolumecover)r   r%   requestr   _extract_nextdatareverse	parse_int)r&   r'   urldatar   r>   s         r   imagesComickCoversExtractor.images&   s    7499+V4||C %%%%d+g{+G4[A  
   ,eGn<+***/..u6?   
 	
 
s   +AB0)r%   N)r   r   r   r   r   subcategorydirectory_fmtfilename_fmtarchive_fmtBASE_PATTERNpatternexampler)   rE   r   r   r   r   r   r      s3    .K7M4LK55G3G

r   r   c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
ComickChapterExtractor<   z&Extractor for comick.io manga chaptersz{chapter_hid}_{page}z5/comic/([\w-]+)/(\w+(?:-(?:chapter|volume)-[^/?#]+)?)z/https://comick.io/comic/MANGA/ID-chapter-123-enc                 D   U R                   u  p#[        X5      n  [        XU5      nS
U;   a8  US
   nU R                  R                  SU5        UR#                  SS5      u  pnML  US	   n
 U
S   U l        U
S   =n(       a  UR'                  S5      u  pnOSnS=p0 UEUS   [(        R*                  " U
S   5      [(        R*                  " U5      X-   U
S   U
S   UU
S   U R-                  U
S   S S 5      U R-                  U
S   S S 5      U
S   S.E$ ! [        R                   a  nUR
                  R                  S:w  a  e UR
                  R                  R                  SS5      R                  S5      (       al  [        5       R                  S5      (       a  e U R                  R                  S5        Sn[        R                  R                  5         [        X5      n S nAGM  SUR
                  R                  ;   a  [        R                   " S	5      ee S nAff = f)NTi  zContent-Type z	text/html_retry_buildidzUpdating Next.js build IDs   "notFound":truechapter__N_REDIRECTzFollowing redirect to %s/r   	md_imageschap.r!   	chapTitler8   r3   hid
group_name
created_at   
updated_atr<   )titler=   rT   chapter_minor
chapter_idchapter_hidchapter_stringgroupdatedate_updatedr<   )r$   r#   _chapter_infor	   	HttpErrorresponsestatus_codeheadersget
startswithlocalslogdebugcacheclearcontentNotFoundErrorrsplit_images	partitionr   rB   parse_datetime_iso)r&   r'   r%   chstrr(   r-   excrS   path_chrT   sepminors                 r   r)   ComickChapterExtractor.metadataC   s   kkD'%d59" &^,94@!%S!!4y!B+j 7 ")"3"3C"8G%GC

k*r%y1w/!k h i#<(//<0@"0EF"55b6Fs6KL6

 	
C && <<++s2<<''++&,,6J{,CDx||$455HHNN#>?%)N%%++-'3E%)=)==#11)<<s   D H(B:H)1HHc           	      T   U R                   S   R                  S5      (       dK  [        S U R                    5       5      (       a*  U R                  R	                  SU R
                  S   5        gU R                    Vs/ s H  nSUS   -   US   US	   US
   US   S.4PM      sn$ s  snf )Nr!   r2   c              3   L   #    U  H  oR                  S 5      (       + v   M     g7f)r2   N)rm   ).0imgs     r   	<genexpr>0ComickChapterExtractor.images.<locals>.<genexpr>{   s       4>0<GGG$$$s   "$z2%s: Broken Chapter (missing 'b2key' for all pages)r   r   r1   r4   r5   r6   	optimized)r9   r:   r;   r   )rw   rm   allrp   errorr$   )r&   r'   r   s      r   rE   ComickChapterExtractor.imagesz   s    ||A""7++ 4>044> 1> 1>HHNNDA   ||
 $ ,c'l: X X X -	=  $
 	
 
s   =%B%)rw   N)r   r   r   r   r   rJ   rK   rL   rM   r)   rE   r   r   r   r   rO   rO   <   s)    0(K 9 9G?G5
n
r   rO   c                   2    \ rS rSrSr\S-   rSrS rS r	Sr
g)	ComickMangaExtractor   zExtractor for comick.io mangaz/comic/([\w-]+)/?(?:\?([^#]+))?zhttps://comick.io/comic/MANGAc              #     #    [        X R                  S   5      nUS   n[         R                  X!5        U R                  U5       GH%  nUR                  U5        [        US'   US   =n(       aq  U R
                   SU SUS    SU S	US
    3	nUR                  S5      u  pFn[        R                  " US   5      US'   [        R                  " U5      US'   Xg-   US'   OvUS   =n(       aD  U R
                   SU SUS    SU S	US
    3	n[        R                  " U5      US'   SUS'   SUS'   O&U R
                   SU SUS    3nS=US'   US'   SUS'   [        R                  XS4v   GM(     g 7f)Nr!   r"   
_extractorrX   r,   rV   r[   z	-chapter--r<   rY   r8   r=   rT   ra   z-volume-rR   )r#   r$   updatechaptersrO   r   rx   r   rB   r   Queue)	r&   r(   r%   r~   rT   rC   r   r   r=   s	            r   itemsComickMangaExtractor.items   s    D++a.1\"4'--&BIIe5B|V*$w$))GD62e9+YwiqFF&-&7&7&<#e#~~bi88 $w 79&)k?#e9$$))GD62e9+XfXQr&zlD#~~f58 !9&(?#74&"U)=/008r)}&(?#--((- 's   E/E1c              #     #    SnU R                   u  p4SUS    S3nSSSSS	.n[        R                  " US
5      nUR                  S5      =n(       d  U R	                  S5      =n(       a'  [        U[        5      (       d  SR                  U5      nOS nSU0n[        R                  " UR                  S5      S5      =US'   n	UR                  S5      =n
(       a  XS'   O;UR                  S5      =n(       a  XS'   OU R	                  SS5      (       a  SOSUS'   UR                  S5      nUS:X  a  S n U R                  XXUS9nUS   nU(       a-  SnUS   X-  -
  nX:  a  U R                  R                  SU5        Uc  US    S h  vN   O&US    H  nUS   =n(       d  M  UU;   d  M  Uv   M     US   X-  ::  a  g U	S-   =US'   n	M   NC7f)NTzhttps://api.comick.io/comic/	manga_hidz	/chaptersr   emptycorsz	same-site)OriginzSec-Fetch-DestzSec-Fetch-ModezSec-Fetch-Site)r<   r<   ,r'   r   z
date-orderz
chap-orderzchapter-reverseF01re   )paramsrl   limittotalzCollecting %s chaptersr   r\   )r$   r   parse_query_listrm   config
isinstancestrjoinrB   request_jsonrp   info)r&   r(   r   r%   queryrC   rl   r<   r   r'   
date_order
chap_orderre   rD   r   r   r~   r$   s                     r   r   ComickMangaExtractor.chapters   s    kk,U;-?,@	J)%$)	
 %%eY7IIf%%D%4;;v3F+F4+FdC((xx~D$ $uyy/@! DDv<00:0#-<  99\22Z2#-<  {{#4e<<# <  		'"C<E$$S$IDMEW4=HHMM":EB}
+++z*B"$\"222  + G},$(1H,F6NT'  ,s   FGG	G$G,!Gr   N)r   r   r   r   r   rK   rL   rM   r   r   r   r   r   r   r   r      s    '??G-G):6-r   r   )keyargc                    U R                    SU 3nU R                  U5      R                  nU R                  U5      nUS   S   nUS   n/ n/ nSn	US    HJ  n
U
S   n
U
S   nUS	:X  a  UR	                  U
S
   5        M)  US:X  a  UR	                  U
S
   5        ME  U
S
   n	ML     US   =n(       a7  US    Vs/ s H  nUS   S   PM     nnUS    Vs/ s H  nUS   S   PM     nnOS=nn0 SUS   _SUS   _SUS   _SUS   _SUS    Vs/ s H  nUS   PM
     sn_SUS    Vs/ s H  nUS
   PM
     sn_SUS    Vs/ s H  nUS
   PM
     sn_S U_S!U_S"U	_S#U_S$U_S%[        R
                  " US&   5      _S'US(   _S)US)   _S*US+   _S,US-   _US.   US/   [        R                  " US0   5      US1   S2:X  a  S3OS4US5   US6   S7.E$ s  snf s  snf s  snf s  snf s  snf )8Nr,   r-   r.   r/   rR   md_comic_md_genres	md_genresre   GenrenameTheme	mu_comicsmu_comic_categoriesmu_categoriesr`   mu_comic_publishersmu_publishersr   r(   manga_idr3   r   r[   r"   r%   manga_titles	md_titlesartistartistsauthorauthorsgenrethemeformattags	publisher	publishedyeardescriptiondescdemographicoriginiso639_1maturematureContentcontent_ratingfollow_rankbayesian_ratingstatusr   CompleteOngoinglinksbuildId)ratingrankscorer   r   	_build_id)r   r?   r   r@   appendrB   parse_float)r&   r%   rC   r'   rD   r-   r/   r   r   r   itemre   mucr   pr   tas                      r   r#   r#      s   YYKwtf
%C<<!!D!!$'DM+&E'NEEEF*+K WGLLf&gLLf&&\F , ;r1242A /"7+2 	 4 !!6797 '07 	 9	 ywE$K 	U5\ 	eFm	
 	U;-?@-?7-?@ 	eI&67&61V9&67 	eI&67&61V9&67 	% 	% 	& 	$ 	Y 	T^^E&M2 	uV} 	u]+  	%
#!" 	%(#$ ()&""5):#;< %h1 4*).)_/ 49 A77s   7GGG&G Gc                 n    US   nU R                    SUS    SU SU S3nX2S.nU R                  XES9S	   $ )
Nr"   z/_next/data/r   r,   rV   z.json)r%   rT   )r   r.   )r   r   )r&   r(   rz   r%   rC   r   s         r   rh   rh      sX    Dii[U;%7$8TF!E7%)C-FS0==r   N)r   commonr   r   r   r   rR   r   r	   rr   r
   rK   r   r   rO   r   r#   rh   r   r   r   <module>r      sw    ( O O  4 !
J(8 !
HN
Z)9 N
bX-:~ X-v 
4 4n>r   