
    i?                     D    S r SSKJrJrJr  SSKJrJr   " S S\\5      rg)z/Extractors for https://downloads.khinsider.com/   )	ExtractorMessageAsynchronousMixin   )text	exceptionc                   R    \ 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Srg)KhinsiderSoundtrackExtractor   z,Extractor for soundtracks from khinsider.com	khinsider
soundtrackzhttps://downloads.khinsider.com)z
{category}z{album[name]}z{filename}.{extension}zH(?:https?://)?downloads\.khinsider\.com/game-soundtracks/album/([^/?#]+)z<https://downloads.khinsider.com/game-soundtracks/album/TITLEc                 D    [         R                  " X5        US   U l        g )Nr   )r   __init__album)selfmatchs     K/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/khinsider.pyr   %KhinsiderSoundtrackExtractor.__init__   s    4'1X
    c              #   |  #    U R                   S-   U R                  -   nU R                  USS9R                  nSU;  a  [        R
                  " S5      eU R                  U5      n[        R                  SU4v   U R                  SS5      (       ac  [        U R                  U5      S	5       HD  u  pA[        R                  " XUS
S.5      nUR                  U5        [        R                  X4v   MF     U R                  U5       H1  nUR                  U5        SUS'   [        R                  US   U4v   M3     g 7f)Nz/game-soundtracks/album/utf-8encodingzDownload all songs at once:r    coversFr   cover)urlnumtypetrackr   r   )rootr   requestr   r   NotFoundErrormetadatar   	Directoryconfig	enumerate_extract_coversnameext_from_urlupdateUrl_extract_tracks)r   r   pagedatar   r   r    s          r   items"KhinsiderSoundtrackExtractor.items   s    ii44tzzA||C'|277(4)),77}}T"T));;x''%d&:&:4&@!D--S'BDT"kk3--	 E ))$/ELL#E&M++uU|U22 0s   D:D<c                 f   [         R                  " U5      nS[         R                  " U" SS5      5      [         R                  " U" SS5      5      S S S2   U" SS5      U" SS5      [         R                  " U" S	S
5      5      [         R                  " U" SS
5      5      [         R
                  " U" SS5      5      [         R                  " U" SS5      S S 5      U" SS5      [         R                  " U" SS5      5      [         R                  " U" SS
5      5      U" SS5      R                  5       S.0$ )Nr   z<h2><zPlatforms: z<br>r   z	Year: <b>zCatalog Number: <b>z Developed by: </z Published by: zNumber of Files: <b>zTotal Filesize: <b>zDate Added: <b>zAlbum type: <b>z</b>zUploaded by: z<h2>Description</h2>)nameplatformyearcatalog	developer	publishercountsizedater   uploaderdescription)r   extract_fromunescape
split_htmlremove_html	parse_intparse_bytesstrip)r   r-   extrs      r   r$   %KhinsiderSoundtrackExtractor.metadata4   s     &]]4#45]F(CDSqSIc*137))$/@$*GH))$/@$*GH^^D)?$EF%%d+@#&Fs&KL+S1%%d+<f&EF((ot)DE 6?EEG
  	r   c              #   ~  #    U R                  SS5      nU(       a=  [        U[        5      (       a(  US:X  a  S nOUR                  5       R	                  S5      n[
        R                  " USS5      n[        [
        R                  " USS5      S	5       H  u  p4[
        R                  " U R                  U5      nU R                  US
S9R
                  nS =pV[
        R                  " USS5       H9  n[
        R                  " XCUS.5      nUc  UnU(       a  US   U;   d  M3  SnUv   M;     U(       d  M  Uv   M     g 7f)Nformat)mp3all,z<table id="songlist">z</table>z#<td class="clickable-row"><a href=""r   r   r   z<p><a href=")r   r   	extensionF)r&   
isinstancestrlowersplitr   rG   r'   extract_iterurljoinr!   r"   r)   )r   r-   fmtr   r   r    firsts          r   r,   ,KhinsiderSoundtrackExtractor._extract_tracksE   s    kk(H-:c3''e|iik'',yy6
C!$"3"3;S#BCDFHC,,tyy#.C<<g<6;;D  E((~sC--cs3KL=!EeK0C7!EK D uFs   DD=!D=4	D=c           
          [         R                  " USS5       Vs/ s H/  n[         R                  " [         R                  " USS5      5      PM1     sn$ s  snf )Nz class="albumImager3   z href="rN   )r   rT   rA   rG   )r   r-   r   s      r   r(   ,KhinsiderSoundtrackExtractor._extract_covers^   sO     **41EtL
L MM$))E9c:;L
 	
 
s   6A)r   N)__name__
__module____qualname____firstlineno____doc__categorysubcategoryr!   directory_fmtarchive_fmtpatternexampler   r/   r$   r,   r(   __static_attributes__ r   r   r
   r
      sE    6HK,D3M*K4G/G3*"2
r   r
   N)	r_   commonr   r   r   r   r   r   r
   rg   r   r   <module>ri      s$    6 9 9 S
#4i S
r   