
    i@                     p    S 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
g)z'Extractors for https://comic.naver.com/   )GalleryExtractor	ExtractorMessage   )textzA(?:https?://)?comic\.naver\.com/(webtoon|challenge|bestChallenge)c                        \ rS rSrSrSrSrSrg)NaverWebtoonBase   z)Base class for comic.naver.com extractorsznaver-webtoonzhttps://comic.naver.com N)__name__
__module____qualname____firstlineno____doc__categoryroot__static_attributes__r       N/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/naverwebtoon.pyr	   r	      s    3H$Dr   r	   c                   D    \ 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)NaverWebtoonEpisodeExtractor   episode)z
{category}z{comic}z#{episode:>03}-{num:>02}.{extension}z{title_id}_{episode}_{num}z/detail(?:\.nhn)?\?([^#]+)z9https://comic.naver.com/webtoon/detail?titleId=12345&no=1c                    UR                  5       u  p#U R                   SU SU 3n[        R                  " XU5        [        R
                  " U5      nUR                  S5      U l        UR                  S5      U l        g )N/z/detail?titleIdno)	groupsr   r   __init__r   parse_querygettitle_idr   )selfmatchpathqueryurls        r   r   %NaverWebtoonEpisodeExtractor.__init__!   sh    lln1TF(5'2!!$s3  '		),yyr   c                    [         R                  " U5      nU R                  U R                  U" SS5      [         R                  " U" SS5      SS5       Vs/ s H  o3R                  5       PM     snU" SS5      [         R                  " U" SS5      S	S5       Vs/ s H  oDR                  5       PM     sn[         R                  " U" S
S5      S	S5       Vs/ s H  oDR                  5       PM     snS.$ s  snf s  snf s  snf )NztitleName: ""z
tagList: [z],z"tagName":"z"subtitle":"z"writers":[]z"name":"z"painters":[)r"   r   comictagstitleauthorartist)r   extract_fromr"   r   extract_iterstrip)r#   pageextrtas        r   metadata%NaverWebtoonEpisodeExtractor.metadata*   s      &^S1,0,=,=\4(--> ? ->q -> ?^S1,0,=,=]C(*c-; < -;q -; <,0,=,=^S):s-< = -<q -< =
 	
?<=s   C4
C9C>c                     [         R                  " USS5      n[         R                  " USS5       Vs/ s H  nSU;  d  M  US 4PM     sn$ s  snf )Nzid="comic_view_area"z</div>z
<img src="r*   z/static/)r   r5   r2   )r#   r4   	view_arear'   s       r   images#NaverWebtoonEpisodeExtractor.images9   sY    IId$:HE	 ((L#F
F$ S$KF
 	
 
s   
AA)r   r"   N)r   r   r   r   subcategorydirectory_fmtfilename_fmtarchive_fmtBASE_PATTERNpatternexampler   r8   r<   r   r   r   r   r   r      s5    K-M8L.K::GIG'

r   r   c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
NaverWebtoonComicExtractorB   r,   Tz/list(?:\.nhn)?\?([^#]+)z2https://comic.naver.com/webtoon/list?titleId=12345c                 <   [         R                  " X5        UR                  5       u  U l        n[        R
                  " U5      nUR                  S5      U l        [        R                  " UR                  S5      S5      U l	        UR                  SS5      U l
        g )Nr   r4   r   sortASC)r   r   r   r%   r   r    r!   r"   	parse_intpage_norI   )r#   r$   r&   s      r   r   #NaverWebtoonComicExtractor.__init__H   so    4' <<>	5  '		),~~eii&7;IIfe,	r   c              #     #    U R                   S-   nSS0nU R                  U R                  U R                  S.n U R	                  XUS9nUS   R                  5       R                  SSS	5      nU R                    S
U SUS    S3nUS    H0  n[        US'   [        R                  U[        US   5      -   U4v   M2     US   S   US'   US   (       d  g M  7f)Nz/api/article/listAcceptz!application/json, text/plain, */*)r   r4   rI   )headersparamswebtoonLevelCode_cCr   r   z/detail?titleId=r   z&no=articleList
_extractorr   pageInfonextPager4   )r   r"   rL   rI   request_jsonlowerreplacer   r   Queuestr)r#   r'   rP   rQ   datar%   basearticles           r   items NaverWebtoonComicExtractor.itemsP   s     ii--9
 }}||yy
 $$S&$ID*+113;;D#qIDii[$'7Y7HMD.(D%mmTC,>%>GG / "*-j9F6N&> s   CC)rL   r%   rI   r"   N)r   r   r   r   r>   categorytransferrB   rC   rD   r   ra   r   r   r   r   rF   rF   B   s'    K88GBG-r   rF   N)r   commonr   r   r    r   rB   r	   r   rF   r   r   r   <module>rf      sD    . 8 8 6% %&
#35E &
R%!19 %r   