U
    g                     @   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                   @   s   e Zd Zdd ZdS )MusicdexBaseIEc                 C   s   t ||d|d|d|dt|dd|ddd |d	pJg D |d
|ddd |dppg D dd |dpg D t|dd|dt|dd t ddS )Nnamedescriptionnumberurlhttps://www.musicdex.org/%sdurationc                 S   s   g | ]}| d qS r	   get.0Zgenre r   =/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/musicdex.py
<listcomp>   s     z/MusicdexBaseIE._return_info.<locals>.<listcomp>genresZlikes_countplaysc                 S   s   g | ]}| d qS r   r   r   artistr   r   r   r      s     artistsc                 S   s   g | ]}| d qS r   r   r   r   r   r   r      s     imagec                 S   s   t t| d jS NZrelease_dater   r   yearxr   r   r   <lambda>       z-MusicdexBaseIE._return_info.<locals>.<lambda>ZMusicdexSong)idtitletrackr
   track_numberr   r   r   
like_count
view_countr   album_artists	thumbnailalbumrelease_yearZextractor_keyZ	extractor)strr   r   r   MusicdexSongIEZie_key)selfZ
track_jsonZ
album_jsonvideo_idr   r   r   _return_info   s$    

zMusicdexBaseIE._return_infoN)__name__
__module____qualname__r2   r   r   r   r   r   
   s   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 )r/   z2https?://(?:www\.)?musicdex\.org/track/(?P<id>\d+)z1https://www.musicdex.org/track/306/dual-existenceZ306Zmp3zdual existencez#NIPPONSEI @ IRC.RIZON.NETr   i Z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-   Zskip_downloadT)r   	info_dictparamsc                 C   s:   |  |}| d| d|d }| ||dp4i |S )Nz'https://www.musicdex.org/secure/tracks/?defaultRelations=truer&   r,   )	_match_id_download_jsonr2   r   )r0   r   r1   	data_jsonr   r   r   _real_extract:   s    

 zMusicdexSongIE._real_extractNr3   r4   r5   
_VALID_URLint_TESTSr>   r   r   r   r   r/   !   s*   r/   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   Z56Z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   Zplaylist_mincountr8   c                    s    |}d| d|d   fdd dp:g D }d| d d	d
d  dpfg D  ddd  dpg D t ddt dd |d
S )Nz'https://www.musicdex.org/secure/albums/r:   r,   c                    s(   g | ] }| d r| |d  qS )r$   r   r2   r   r&   r=   r0   r   r   r   V   s    
z1MusicdexAlbumIE._real_extract.<locals>.<listcomp>tracksplaylistr	   r
   c                 S   s   g | ]}| d qS r   r   r   r   r   r   r   ^   s     r   r   c                 S   s   g | ]}| d qS r   r   r   r   r   r   r   `   s     r   r   r   c                 S   s   t t| d jS r   r   r    r   r   r   r"   b   r#   z/MusicdexAlbumIE._real_extract.<locals>.<lambda>)
_typer$   r%   r
   r   r)   r   r+   r-   entries)r;   r<   r   r   r   )r0   r   playlist_idrL   r   rH   r   r>   R   s*    

 
zMusicdexAlbumIE._real_extractNr?   r   r   r   r   rC   A   s   rC   c                   @   s   e Zd Zdd ZdS )MusicdexPageIEc                 c   sB   | j | }|r>| ||d }|dp*g E d H  |d}q
d S )NZ
paginationdatanext_page_url)_API_URLr<   r   )r0   rM   rP   r=   r   r   r   _entriesh   s
    
zMusicdexPageIE._entriesN)r3   r4   r5   rR   r   r   r   r   rN   g   s   rN   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/fripsiderD   Z11r6   zThttps://www.musicdex.org/storage/artist/ZmOz0lN2vsweegB660em3xWffCjLPmTQHqJls5Xx.jpg)r$   r)   r%   r+   rE   c                    s~    |}d| |d }g }|D ]( | fdd dpNg 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$   NrF   rG   r,   r0   r   r   	<genexpr>   s     
 z1MusicdexArtistIE._real_extract.<locals>.<genexpr>rI   rJ   r	   r   Zimage_smallr   )rK   r$   r%   r)   r+   rL   )r;   r<   rR   extendr   r   r0   r   rM   r=   rL   r   rT   r   r>      s    
&
zMusicdexArtistIE._real_extractNr3   r4   r5   r@   rQ   rA   rB   r>   r   r   r   r   rS   p   s   rS   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   9ZTestzShttps://www.musicdex.org/storage/album/jXATI79f0IbQ2sgsKYOYRCW3zRwF3XsfHhzITCuJ.jpgz$Test 123 123 21312 32121321321321312)r$   r)   r%   r+   r
   rE   c              	      sj     |} d| |d } fdd |p6g D }d||d|d|dt|dd	|d
S )Nz*https://www.musicdex.org/secure/playlists/rJ   c                    s2   g | ]*}| d r || dp$i |d  qS )r$   r,   rF   rG   r0   r   r   r      s    
z4MusicdexPlaylistIE._real_extract.<locals>.<listcomp>r	   r
   r   r   r   )rK   r$   r%   r
   r)   r+   rL   )r;   r<   rR   r   r   rW   r   r\   r   r>      s    


z MusicdexPlaylistIE._real_extractNrX   r   r   r   r   rY      s   rY   N)commonr   utilsr   r   r   r   r   r/   rC   rN   rS   rY   r   r   r   r   <module>   s    &	 