
    i                         S r SSKJrJrJrJr  SSKJrJr  Sr	 " S S5      r
 " S S	\
\5      r " S
 S\
\5      r " S S\
\5      r " S S\5      r " S S\5      rg)z)Extractors for https://dynasty-scans.com/   )ChapterExtractorMangaExtractor	ExtractorMessage   )textutilz*(?:https?://)?(?:www\.)?dynasty-scans\.comc                   &    \ rS rSrSrSrSrS rSrg)DynastyscansBase   z&Base class for dynastyscans extractorsdynastyscanszhttps://dynasty-scans.comc                    U R                    SU 3n[        R                  " U R                  U5      R                  5      nU" SS5      nU" SS5      nU" SS5      nU" SS5      nS	U;   a  [        R                  " US
S5      OSnU R                   U-   [        R
                  " U5      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.$ )Nz/images/zclass='create_at'></span>class='tags'>zclass='btn-group'></div>z src=""zSource<zhref=" )urlimage_idtagsdatesource)	rootr   extract_fromrequestextr	parse_int
split_htmlremove_htmlunescape)selfr   r   r   r   r   srcs          N/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/dynastyscans.py_parse_image_page"DynastyscansBase._parse_image_page   s    8H:.  c!2!7!78()4OY/'28S!/8C/?diiXs+R 		Cx0-((.c*
 	
     N)	__name__
__module____qualname____firstlineno____doc__categoryr   r$   __static_attributes__r'   r&   r#   r   r      s    0H&D
r&   r   c                   2    \ rS rSrSr\S-   rSrS rS r	Sr
g)	DynastyscansChapterExtractor*   z3Extractor for manga-chapters from dynasty-scans.comz(/chapters/[^/?#]+)z'https://dynasty-scans.com/chapters/NAMEc                 j   [         R                  " U5      n[         R                  " S5      R                  U" SS5      5      nU" SS5      nU" SS5      n[         R                  " US   5      [         R
                  " US	   5      US
   =(       d    S[         R                  " US   =(       d    S5      [         R                  " U5      [         R                  " U5      =(       d    [         R                  " USS5      U R                  U" SS5      S5      [         R                  " U" SS5      5      SSS.
$ )Nz=(?:<a[^>]*>)?([^<]+)(?:</a>)?(?: ch(\d+)([^:<]*))?(?:: (.+))?z<h3 id='chapter-title'><b>z</b>z by z</a>z"icon-print"></i> r   r   r      r      z alt="r   z"icon-calendar"></i> <z	%b %d, %Yr   z<div id='chapter-actions'enEnglish)
mangachapterchapter_minortitleauthorgroupr   r   langlanguage)
r   r   rematchr    r   r   r   parse_datetimer   )r!   pager   rA   r<   r=   s         r#   metadata%DynastyscansChapterExtractor.metadata/   s     &
 %16:
;	 	
 ff%)95 eAh/uQx0"1X^eAhn"5((0))%0 95(C8++D'-./:<!<)> ?!
 	
r&   c                     [         R                  " USS5      n[        R                  " U5       Vs/ s H  nU R                  US   -   S 4PM     sn$ s  snf )Nzvar pages = z;
image)r   r   r	   
json_loadsr   )r!   rC   dataimgs       r#   images#DynastyscansChapterExtractor.imagesI   sV    yy~u5 t,
, YYW%t,,
 	
 
s   Ar'   N)r(   r)   r*   r+   r,   BASE_PATTERNpatternexamplerD   rK   r.   r'   r&   r#   r0   r0   *   s    =33G7G
4
r&   r0   c                   0    \ rS rSr\rSr\S-   rSr	S r
Srg)DynastyscansMangaExtractorQ   Fz(/series/[^/?#]+)z%https://dynasty-scans.com/series/NAMEc                 |    [         R                  " USS5       Vs/ s H  nU R                  U-   0 4PM     sn$ s  snf )Nz<dd>
<a href="r   )r   extract_iterr   )r!   rC   paths      r#   chapters#DynastyscansMangaExtractor.chaptersW   sG     ))$0A3G
G YYr"G
 	
 
s   9r'   N)r(   r)   r*   r+   r0   chapterclassreverserM   rN   rO   rV   r.   r'   r&   r#   rQ   rQ   Q   s!    /LG11G5G
r&   rQ   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)DynastyscansSearchExtractor^   z6Extrator for image search results on dynasty-scans.comsearch)z
{category}Imagesz{image_id}.{extension}zi_{image_id}z/images/?(?:\?([^#]+))?$z&https://dynasty-scans.com/images?QUERYc                 V    [         R                  " X5        US   =(       d    SU l        g )Nr   r   )r   __init__query)r!   rA   s     r#   r`   $DynastyscansSearchExtractor.__init__g   s    4'1X^
r&   c              #      #    [         R                  S0 4v   U R                  5        HB  nU R                  U5      nUS   n[         R                  U[
        R                  " X25      4v   MD     g 7f)Nr   r   )r   	DirectoryrK   r$   Urlr   nameext_from_url)r!   r   rG   r   s       r#   items!DynastyscansSearchExtractor.itemsk   s]     R''H**84E,C++sD$9$9#$EEE &s   A-A/c              #     #    U R                   S-   U R                  R                  SS5      -   nSS0n U R                  XS9R                  n[        R
                  " USS5       S h  vN   S	U;  a  g US==   S-  ss'   MO   N7f)
Nz/images?z[]z%5B%5DrC   r   )paramsz	"/images/r   z
rel="next")r   ra   replacer   r   rT   )r!   r   rj   rC   s       r#   rK   "DynastyscansSearchExtractor.imagesr   s     ii*$tzz'9'9$'II!<<<388D(({C@@@4'6NaN @s   A&B(B)Bra   N)r(   r)   r*   r+   r,   subcategorydirectory_fmtfilename_fmtarchive_fmtrM   rN   rO   r`   rg   rK   r.   r'   r&   r#   r[   r[   ^   s9    @K,M+L K88G6G$F	 r&   r[   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	DynastyscansImageExtractor~   z4Extractor for individual images on dynasty-scans.comrG   z/images/(\d+)z&https://dynasty-scans.com/images/12345c                     U R                   4$ )Nrm   )r!   s    r#   rK   !DynastyscansImageExtractor.images   s    

}r&   r'   N)r(   r)   r*   r+   r,   rn   rM   rN   rO   rK   r.   r'   r&   r#   rs   rs   ~   s    >K--G6Gr&   rs   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	DynastyscansAnthologyExtractor   z'Extractor for dynasty-scans anthologies	anthologyz/anthologies/([^/?#]+)z+https://dynasty-scans.com/anthologies/TITLEc              #     #    U R                    SU R                  S    S3nU R                  USS9n[        US   R                  SS  S.nU R                  S	S5      (       a  U R                  US S
 5      R                  n[        R                  " USS5      nU(       a  [        R                  " U5      SS  OSUS'   [        R                  " USS5      US'   [        R                  " USS5      US'   U H  nUR                  S:w  a  M  US   S   nUS   R                  SS  US'   US   R                  SS  US'   US   R                  SS  R                  5       R                  S5      US'   US   R                  US'   U R                  US   R                  5      US '   U R                  US   R                  5      US!'   [        R                  US"   R                  U4v   M     g 7f)#Nz/anthologies/    z.atomF)xmlnsr3      )
_extractorrz   rD   z<div class='alertr   r   r'   alertz<small>&mdash; z</small>statusz<div class='description'>descriptionentry      r<      	scanlatorr   z, r      r;   r   date_updatedr4   )r   groupsrequest_xmlr0   r   configr   r   r   taglowersplitparse_datetime_isor   Queue)r!   r   r   rI   rC   r   elementcontents           r#   rg   $DynastyscansAnthologyExtractor.items   s    =Q(8>51 7q',,rs+

 ;;z5))<<CR)..DIId$7BE:?DOOE2126RDM!YY'5DN"&))18#=D G{{g%ajmG$QZ__QR0DN '
 4D"1:??12.446<<TBDL#AJOODM2271:??CDL#'#:#:71:??#KD --$66 s   G'G)r'   N)r(   r)   r*   r+   r,   rn   rM   rN   rO   rg   r.   r'   r&   r#   rx   rx      s    1K66G;G7r&   rx   N)r,   commonr   r   r   r   r   r   r	   rM   r   r0   rQ   r[   rs   rx   r'   r&   r#   <module>r      sl    0 H H <
 
2$
#35E $
N

!1> 

 "2I  @!< #7%@ #7r&   