
    iO"                         S r SSKJrJrJr  SSKJr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SSSS.rg)z%Extractors for https://mangapark.net/   )ChapterExtractor	ExtractorMessage   )textutil	exception)memcachezs(?:https?://)?(?:www\.)?(?:(?:manga|comic|read)park\.(?:com|net|org|me|io|to)|parkmanga\.(?:com|net|org)|mpark\.to)c                   R    \ rS rSrSrSrS r\" SS9S 5       rS r	S	 r
S
 rS rSrg)MangaparkBase   z#Base class for mangapark extractors	mangaparkc                 ~    [         R                  " S5      R                  U5      nU(       a  UR                  5       $ S$ )NzR(?i)(?:vol(?:\.|ume)?\s*(\d+)\s*)?ch(?:\.|apter)?\s*(\d+)([^\s:]*)(?:\s*:\s*(.*))?)    r    r   )r   rematchgroups)selftitler   s      K/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/mangapark.py_parse_chapter_title"MangaparkBase._parse_chapter_title   s8     

 %, 	 "'u||~:N:    r   )keyargc                 4    SU0nU R                  SU5      S   $ )NgetComicNodeIdGet_comicNodedata_request_graphqlr   manga_id	variabless      r   _extract_mangaMangaparkBase._extract_manga"   s*     h
	 $$_i@HHr   c                 4    SU0nU R                  SU5      S   $ )NgetChapterNodeIdGet_chapterNoder   r    )r   
chapter_idr$   s      r   _extract_chapterMangaparkBase._extract_chapter)   s)    

	 $$%6	B6JJr   c                 .    SU0nU R                  SU5      $ )NcomicIdGet_comicChapterListr    r"   s      r   _extract_chapters_all#MangaparkBase._extract_chapters_all/   s$    x
	 $$%;YGGr   c                 .    SU0nU R                  SU5      $ )NsourceIdget_content_source_chapterListr    )r   	source_idr$   s      r   _extract_chapters_source&MangaparkBase._extract_chapters_source5   s(    	
	 $$,i9 	9r   c                     U R                   S-   n[        U   UUS.nU R                  USUS9S   R                  5       S   $ )Nz/apo/)queryr$   operationNamePOST)methodjsonr   r   )rootQUERIESrequest_jsonpopitem)r   opnamer$   urlr   s        r   r!   MangaparkBase._request_graphql<   s]    ii'!$V_&#

   T ! ++133:79Q@ 	@r    N)__name__
__module____qualname____firstlineno____doc__categoryr   r
   r%   r+   r0   r6   r!   __static_attributes__rE   r   r   r   r      sA    -H; QI IKH9@r   r   c                   8    \ rS rSrSr\S-   rSrS rS r	S r
Srg	)
MangaparkChapterExtractorG   z/Extractor for manga-chapters from mangapark.netz4/(?:title/[^/?#]+/|comic/\d+/[^/?#]+/[^/?#]+-i)(\d+)z0https://mangapark.net/title/MANGA/12345-en-ch.01c                 n    [         R                  " US   5      U l        [        R                  " XS5        g )Nr   F)r   root_from_urlr>   r   __init__r   r   s     r   rR   "MangaparkChapterExtractor.__init__M   s(    &&uQx0	!!$u5r   c                 @   U R                  U R                  S   5      nU R                  US   S   5      nUS   S   U l        U R	                  US   5      u  pEpgUR                  S5      =(       d    SnUS	   [        R                  " US   5      US
   US   US   [        R                  " U5      [        R                  " U5      U[        R                  " US   5      U=(       d    SU[        R                  " U5      US   US   U R                  US   S-  5      S.$ )Nr   	comicNodeid	imageFileurlListdnamelangennameartistsauthorsgenresr   srcTitler3   
dateCreate  )mangar#   artistauthorgenrevolumechapterchapter_minorr*   r   r[   languagesourcer5   date)r+   r   r%   _urlsr   getr   	parse_intr   code_to_languageparse_timestamp)	r   _ri   rd   volchminorr   r[   s	            r   metadata"MangaparkChapterExtractor.metadataQ   s   ''A7##GK$8$>?[))4
 $ 9 9'':J K{{6"*d  -..t5	*	*/..-..,"..7+2//5!*-!*-..w|/Dt/KL
 	
r   c                 H    U R                    Vs/ s H  o"S 4PM     sn$ s  snf )N)rn   )r   rs   rC   s      r   images MangaparkChapterExtractor.imagesk   s     '+zz2zdz222s   )rn   r>   N)rF   rG   rH   rI   rJ   BASE_PATTERNpatternexamplerR   rw   rz   rL   rE   r   r   rN   rN   G   s'    9FGG@G6
43r   rN   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g)MangaparkMangaExtractoro   z&Extractor for manga from mangapark.netrd   z)/(?:title|comic)/(\d+)(?:[/-][^/?#]*)?/?$z'https://mangapark.net/title/12345-MANGAc                     [         R                  " US   5      U l        [        US   5      U l        [
        R                  " X5        g )Nr   r   )r   rQ   r>   intr#   r   rR   rS   s     r   rR    MangaparkMangaExtractor.__init__u   s5    &&uQx0	E!H4'r   c              #   
  #    U R                  5        H  nUS   nU R                  US   -   nU R                  US   5      u  p4pVUR                  S5      =(       d    SnU R                  [
        R                  " U5      [
        R                  " U5      UUS   US   =(       d    U=(       d    SU[        R                  " U5      US	   US
   U R                  US   S-  5      [        S.n[        R                  X(4v   M     g 7f)Nr   urlPathrZ   r[   r\   rW   r   r   ra   r3   rb   rc   )r#   rh   ri   rj   r*   r   r[   rk   rl   r5   rm   
_extractor)chaptersr>   r   ro   r#   r   rp   r   rq   rr   rN   r   Queue)	r   ri   rC   rt   ru   rv   r   r[   r   s	            r   itemsMangaparkMangaExtractor.itemsz   s     }}GfoG))gi00C$($=$=gg>N$O!CU;;v&.$D #mm"nnS1"nnR0!&%dm%g.=%=2""33D9%j1%j1"22L)D027D --**- 's   DDc                 <   U R                  S5      =n(       a?  U R                  U5      nU R                  R                  SU5        U R	                  U5      nOU R                  U R                  S   5      nU R                  S5      (       a  UR                  5         U$ )Nrl   z$Requesting chapters for source_id %sr   zchapter-reverse)config_select_sourcelogdebugr6   r0   r   reverse)r   rl   r5   r   s       r   r    MangaparkMangaExtractor.chapters   s    [[**6*++F3IHHNNA9M44Y?H11$++a.AH;;())r   c                 x   [        U[        5      (       a  U$ UR                  S5      u  p#nUR                  5       nU R                  S/SS.nU R                  SU5       H?  nUS   nU(       a  US   R                  5       U:X  d  M(  U(       a  US   U:X  d  M:  US	   s  $    [        R                  " S
U S35      e)N:normalT)r.   	dbStatusshaveChapterget_content_comic_sourcesr   ra   r[   rW   'z%' does not match any available source)
isinstancer   	partitionlowerr#   r!   r	   AbortExtraction)r   rl   grouprs   r[   r$   itemr   s           r   r   &MangaparkMangaExtractor._select_source   s    fc""M))#.$  ==$:
	
 ))+Y8D<DT*-335>V 4Dz!8 ''x<=? 	?r   )r#   r>   N)rF   rG   rH   rI   rJ   subcategoryr|   r}   r~   rR   r   r   r   rL   rE   r   r   r   r   o   s.    0KIIG7G(
+2
?r   r   a  
query Get_comicChapterList($comicId: ID!) {
    get_comicChapterList(comicId: $comicId) {
        data {
            id
            dname
            title
            lang
            urlPath
            srcTitle
            sourceId
            dateCreate
        }
    }
}
ah  
query Get_chapterNode($getChapterNodeId: ID!) {
    get_chapterNode(id: $getChapterNodeId) {
        data {
            id
            dname
            lang
            sourceId
            srcTitle
            dateCreate
            comicNode{
                id
            }
            imageFile {
                urlList
            }
        }
    }
}
z
query Get_comicNode($getComicNodeId: ID!) {
    get_comicNode(id: $getComicNodeId) {
        data {
            id
            name
            artists
            authors
            genres
        }
    }
}
a  
  query get_content_source_chapterList($sourceId: Int!) {
    get_content_source_chapterList(
      sourceId: $sourceId
    ) {

  id
  data {


  id
  sourceId

  dbStatus
  isNormal
  isHidden
  isDeleted
  isFinal

  dateCreate
  datePublic
  dateModify
  lang
  volume
  serial
  dname
  title
  urlPath

  srcTitle srcColor

  count_images

  stat_count_post_child
  stat_count_post_reply
  stat_count_views_login
  stat_count_views_guest

  userId
  userNode {

  id
  data {

id
name
uniq
avatarUrl
urlPath

verified
deleted
banned

dateCreate
dateOnline

stat_count_chapters_normal
stat_count_chapters_others

is_adm is_mod is_vip is_upr

  }

  }

  disqusId


  }

    }
  }
a  
  query get_content_comic_sources($comicId: Int!, $dbStatuss: [String] = [], $userId: Int, $haveChapter: Boolean, $sortFor: String) {
    get_content_comic_sources(
      comicId: $comicId
      dbStatuss: $dbStatuss
      userId: $userId
      haveChapter: $haveChapter
      sortFor: $sortFor
    ) {

id
data{

  id

  dbStatus
  isNormal
  isHidden
  isDeleted

  lang name altNames authors artists

  release
  genres summary{code} extraInfo{code}

  urlCover600
  urlCover300
  urlCoverOri

  srcTitle srcColor

  chapterCount
  chapterNode_last {
    id
    data {
      dateCreate datePublic dateModify
      volume serial
      dname title
      urlPath
      userNode {
        id data {uniq name}
      }
    }
  }
}

    }
  }
)r/   r)   r   r4   r   N)rJ   commonr   r   r   r   r   r   r	   cacher
   r|   r   rN   r   r?   rE   r   r   <module>r      sr    , 8 8 $ $ /@ /@d%3/? %3PD?mY D?P"*I'V0"Aqr   