U
    $Pf                     @   s   d dl mZ ddlmZ ddlmZ ddl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 )    )unicode_literals   )InfoExtractor   )compat_urllib_parse_unquote)int_or_nonec                       s@   e Zd ZdZ fddZdddZdddZed	d
 Z  Z	S )XiamiBaseIEz1https://emumo.xiami.com/song/playlist/cat/json/idc                    s(   t t| j||}d|kr$| d |S )Nz3>Xiami is currently not available in your country.<z0Xiami is currently not available in your country)superr   _download_webpage_handleZraise_geo_restricted)selfargskwargsZwebpage	__class__ >/tmp/pip-unpacked-wheel-7zdooeg3/youtube_dl/extractor/xiami.pyr
      s    
z$XiamiBaseIE._download_webpage_handleNc           	      C   s   | dp| dp|d }| dp8| dp8| d}|rJd||f n|}| |d }i }| d	pr| d
}|r|drd|ig|d< | dp|||| dp| dt| d| dddd |t| d| dp| d||dS )NZsongNamenameZsubNameartistZartist_nameZsingersz%s - %slocationZ	lyric_urlZlyrichttpurloriginZsong_idZpicZ	album_piclength ;r   trackZ
album_nametitle)idr   r   	thumbnaildurationcreatorr   track_numberalbumr   	subtitles)get_decrypt
startswithr   split)	r   r   Ztrack_idZ
track_namer   r   Z	track_urlr#   Z
lyrics_urlr   r   r   _extract_track   s(    zXiamiBaseIE._extract_trackc                    sH   j dj |rd| ndf  d|id} fdd|d d	 D S )
Nz%s/%s%sz/type/%sr   ZReferer)headersc                    s   g | ]} | qS r   )r(   ).0r   item_idr   r   r   
<listcomp>1   s   z/XiamiBaseIE._extract_tracks.<locals>.<listcomp>dataZ	trackList)Z_download_json_API_BASE_URL)r   r,   ZreferertypZplaylistr   r+   r   _extract_tracks+   s     
zXiamiBaseIE._extract_tracksc           	      C   s   t | d }| dd  } t| | }t| ||  }t }td|D ]6}|}||k r\|d7 }|| d| f7 }| |d  } qDd}td|d D ]4}td|D ]$}t|| |kr||| | 7 }qqt|ddS )Nr   r   r   ^0)intlentupleranger   replace)	r   nZshort_lengthZlong_numlir   Zansjr   r   r   r%   5   s"    zXiamiBaseIE._decrypt)N)N)
__name__
__module____qualname__r/   r
   r(   r1   staticmethodr%   __classcell__r   r   r   r   r   	   s   


r   c                   @   s   e Zd ZdZdZdZdddddd	d
dddddddigid
dddddddd	ddddddddigid
ddddddd	dddd d!dd"
d#d$id%d&d$d'gZd(d) Zd*S )+XiamiSongIEz
xiami:songu   虾米音乐z3https?://(?:www\.)?xiami\.com/song/(?P<id>[^/?#&]+)z$http://www.xiami.com/song/1775610518Z 521dd6bea40fd5c9c69f913c232cb57eZ
1775610518Zmp3zHONNE - Womanz.re:http://img\.xiami\.net/images/album/.*\.jpgi	  ZHONNEZWomanr   extZlrc)
r   rC   r   r   r   r    r   r"   r   r#   Georestricted)r   md5	info_dictskipz$http://www.xiami.com/song/1775256504Z 932a3abd45c6aa2b1fdbe028fcb4c4fcZ
1775256504u   戴荃 - 悟空   u   戴荃u   悟空z$http://www.xiami.com/song/1775953850Z
1775953850u6   До Скону - Чума Пожирает Землюi  u   До Сконуu$   Чума Пожирает Землю   u   Ад)
r   rC   r   r   r   r    r   r!   r"   r   Zskip_downloadT)r   rF   paramsz%http://www.xiami.com/song/xLHGwgd07a1r   Zonly_matchingc                 C   s   |  | ||d S )Nr   )r1   	_match_id)r   r   r   r   r   _real_extract   s    zXiamiSongIE._real_extractN)r=   r>   r?   IE_NAMEIE_DESC
_VALID_URL_TESTSrM   r   r   r   r   rB   J   s|      >rB   c                   @   s   e Zd Zdd ZdS )XiamiPlaylistBaseIEc                 C   s"   |  |}| | ||| j|S )N)rL   Zplaylist_resultr1   _TYPE)r   r   r,   r   r   r   rM      s    
z!XiamiPlaylistBaseIE._real_extractN)r=   r>   r?   rM   r   r   r   r   rR      s   rR   c                   @   s@   e Zd ZdZdZdZdZdddidd	d
ddddddgZdS )XiamiAlbumIEzxiami:albumu   虾米音乐 - 专辑z4https?://(?:www\.)?xiami\.com/album/(?P<id>[^/?#&]+)1z%http://www.xiami.com/album/2100300444r   Z
2100300444
   rD   r   rF   Zplaylist_countrG   zGhttp://www.xiami.com/album/512288?spm=a1z1s.6843761.1110925389.6.hhE9p9TrK   z&http://www.xiami.com/album/URVDji2a506Nr=   r>   r?   rN   rO   rP   rS   rQ   r   r   r   r   rT      s$    rT   c                   @   s8   e Zd ZdZdZdZdZdddidd	d
dddgZdS )XiamiArtistIEzxiami:artistu   虾米音乐 - 歌手z5https?://(?:www\.)?xiami\.com/artist/(?P<id>[^/?#&]+)2z3http://www.xiami.com/artist/2132?spm=0.0.0.0.dKaScpr   Z2132   rD   rW   z(http://www.xiami.com/artist/bC5Tk2K6eb99TrK   NrX   r   r   r   r   rY      s    rY   c                   @   s.   e Zd ZdZdZdZdZdddidd	d
ZdS )XiamiCollectionIEzxiami:collectionu   虾米音乐 - 精选集z6https?://(?:www\.)?xiami\.com/collect/(?P<id>[^/?#&]+)3zJhttp://www.xiami.com/collect/156527391?spm=a1z1s.2943601.6856193.12.4jpBnrr   Z	156527391   rD   )r   rF   Zplaylist_mincountrG   N)r=   r>   r?   rN   rO   rP   rS   Z_TESTr   r   r   r   r\      s    r\   N)
__future__r   commonr   compatr   utilsr   r   rB   rR   rT   rY   r\   r   r   r   r   <module>   s   AF