o
    i                     @   s   d dl mZ ddlmZmZmZmZ G dd deZG dd deZG dd	 d	eZ	G d
d deZ
G dd de
ZG dd de
ZdS )   )InfoExtractor   )date_from_strformat_fieldtry_getunified_strdatec                   @      e Zd Zdd ZdS )MusicdexBaseIEc                 C   s   i dt |d|dd|dd|dd|ddt|dd	d
|d
ddd |dp5g D d|dd|dddd |dpNg D ddd |dp[g D dt|dd	d|ddt|dd dt ddS )Nidtitlenametrackdescriptiontrack_numbernumberurlhttps://www.musicdex.org/%sdurationgenresc                 S      g | ]}| d qS r   get.0genre r   M/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/musicdex.py
<listcomp>       z/MusicdexBaseIE._return_info.<locals>.<listcomp>
like_countlikes_count
view_countplaysartistsc                 S   r   r   r   r   artistr   r   r   r      r   album_artistsc                 S   r   r   r   r%   r   r   r   r      r   	thumbnailimagealbumrelease_yearc                 S      t t| d jS Nrelease_dater   r   yearxr   r   r   <lambda>       z-MusicdexBaseIE._return_info.<locals>.<lambda>extractor_key	extractorMusicdexSong)strr   r   r   MusicdexSongIEie_key)self
track_json
album_jsonvideo_idr   r   r   _return_info   sF   





	


zMusicdexBaseIE._return_infoN)__name__
__module____qualname__r?   r   r   r   r   r	   
       r	   c                   @   sP   e Zd ZdZddddddddd	geed
gd
gddddddidgZdd ZdS )r9   z2https?://(?:www\.)?musicdex\.org/track/(?P<id>\d+)z1https://www.musicdex.org/track/306/dual-existence306mp3zdual existencez#NIPPONSEI @ IRC.RIZON.NETr   i AnimefripSidezShttps://www.musicdex.org/storage/album/9iDIam1DHTVqUG4UclFIEq1WAFGXfPW4y0TtZa91.pngz6To Aru Kagaku no Railgun T OP2 Single - dual existencei  )r
   extr   r   r   r   r   r   r    r"   r$   r'   r(   r*   r+   skip_downloadT)r   	info_dictparamsc                 C   s:   |  |}| d| d|d }| ||dpi |S )Nz'https://www.musicdex.org/secure/tracks/?defaultRelations=truer   r*   )	_match_id_download_jsonr?   r   )r;   r   r>   	data_jsonr   r   r   _real_extract:   s   
zMusicdexSongIE._real_extractNr@   rA   rB   
_VALID_URLint_TESTSrP   r   r   r   r   r9   !   s,    r9   c                
   @   s:   e Zd ZdZddddgedgddd	d
dgZdd ZdS )MusicdexAlbumIEz2https?://(?:www\.)?musicdex\.org/album/(?P<id>\d+)zzhttps://www.musicdex.org/album/56/tenmon-and-eiichiro-yanagi-minori/ef-a-tale-of-memories-original-soundtrack-2-fortissimo   56OSTz!TENMON & Eiichiro Yanagi / minoriz:ef - a tale of memories Original Soundtrack 2 ~fortissimo~i  zShttps://www.musicdex.org/storage/album/2rSHkyYBYfB7sbvElpEyTMcUn6toY7AohOgJuDlE.jpg)r
   r   r"   r$   r   r+   r(   r   playlist_mincountrJ   c                    s    |}d| d|d   fdd dpg D }d| d d	d
d  dp3g D  ddd  dpBg D t ddt dd |d
S )Nz'https://www.musicdex.org/secure/albums/rL   r*   c                    s(   g | ]}| d r| |d  qS )r
   r   r?   r   r   rO   r;   r   r   r   V   s    
z1MusicdexAlbumIE._real_extract.<locals>.<listcomp>tracksplaylistr   r   c                 S   r   r   r   r   r   r   r   r   ^   r   r   r#   c                 S   r   r   r   r%   r   r   r   r   `   r   r$   r)   r   c                 S   r,   r-   r/   r1   r   r   r   r3   b   r4   z/MusicdexAlbumIE._real_extract.<locals>.<lambda>)
_typer
   r   r   r   r"   r$   r(   r+   entries)rM   rN   r   r   r   )r;   r   playlist_idra   r   r]   r   rP   R   s(   

zMusicdexAlbumIE._real_extractNrQ   r   r   r   r   rU   A   s    rU   c                   @   r   )MusicdexPageIEc                 c   sJ    | j | }|r#| ||d }|dpg E d H  |d}|sd S d S )N
paginationdatanext_page_url)_API_URLrN   r   )r;   rb   rf   rO   r   r   r   _entriesh   s   

zMusicdexPageIE._entriesN)r@   rA   rB   rh   r   r   r   r   rc   g   rC   rc   c                   @   s4   e Zd ZdZdZdddedddd	gZd
d ZdS )MusicdexArtistIEz3https?://(?:www\.)?musicdex\.org/artist/(?P<id>\d+)z8https://www.musicdex.org/secure/artists/%s/albums?page=1z+https://www.musicdex.org/artist/11/fripsiderV   11rG   zThttps://www.musicdex.org/storage/artist/ZmOz0lN2vsweegB660em3xWffCjLPmTQHqJls5Xx.jpg)r
   r"   r   r(   rY   c                    s~    |}d| |d }g }|D ] | fdd dp'g D  qd||d|dt|d	d
|dS )Nz(https://www.musicdex.org/secure/artists/r&   c                 3   s,    | ]}| d r| |d  V  qdS )r
   Nr[   r\   r*   r;   r   r   	<genexpr>   s   * z1MusicdexArtistIE._real_extract.<locals>.<genexpr>r^   r_   r   r#   image_smallr   )r`   r
   r   r"   r(   ra   )rM   rN   rh   extendr   r   r;   r   rb   rO   ra   r   rk   r   rP      s   
&
zMusicdexArtistIE._real_extractNr@   rA   rB   rR   rg   rS   rT   rP   r   r   r   r   ri   p   s    ri   c                   @   s6   e Zd ZdZdZdddedddd	d
gZdd ZdS )MusicdexPlaylistIEz5https?://(?:www\.)?musicdex\.org/playlist/(?P<id>\d+)zHhttps://www.musicdex.org/secure/playlists/%s/tracks?perPage=10000&page=1z(https://www.musicdex.org/playlist/9/testI   9TestzShttps://www.musicdex.org/storage/album/jXATI79f0IbQ2sgsKYOYRCW3zRwF3XsfHhzITCuJ.jpgz$Test 123 123 21312 32121321321321312)r
   r"   r   r(   r   rY   c              	      sj     |} d| |d } fdd |pg D }d||d|d|dt|dd	|d
S )Nz*https://www.musicdex.org/secure/playlists/r_   c                    s2   g | ]}| d r || dpi |d  qS )r
   r*   r[   r\   r;   r   r   r      s    
"z4MusicdexPlaylistIE._real_extract.<locals>.<listcomp>r   r   r#   r)   r   )r`   r
   r   r   r"   r(   ra   )rM   rN   rh   r   r   ro   r   ru   r   rP      s   


z MusicdexPlaylistIE._real_extractNrp   r   r   r   r   rq      s    rq   N)commonr   utilsr   r   r   r   r	   r9   rU   rc   ri   rq   r   r   r   r   <module>   s     &	 