3
b`0                 @   s   d dl mZ d dlZddlmZ ddlmZ ddlmZ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G dd deZdS )    )unicode_literalsN   )InfoExtractor   )compat_urlparse)get_element_by_id
clean_htmlExtractorErrorInAdvancePagedListremove_startc            
   @   sd   e Zd Zdddddddddd	d
ddddd	dddddd	dddddddddgZdddZdS )
KuwoBaseIEaped   )formatext
preferencezmp3-320mp3Z320kmp3i@  P   )r   r   brabrr   zmp3-192Z192kmp3   F   zmp3-128Z128kmp3   <   wma   aac0   
   )r   r   r   r   Fc             C   s   g }x| j D ]}|d |jddd| ddd}| jd|d	|d
  || j d}|dkrj| rjtddd|jds~|jdr|j||d
 |d
 |d |jdd qW |S )Nr   r    zMUSIC_%sZconvert_urlurl)r   r   Zridtyperesponsez http://antiserver.kuwo.cn/anti.szDownload %s url infor   )notequeryheadersZIPDenyz#This song is blocked in this regionT)expectedzhttp://zhttps://r   r   )r    	format_idr   r   r   )_FORMATSget_download_webpagegeo_verification_headersr	   
startswithappend)selfsong_idtolerate_ip_denyformatsZfile_formatr$   song_url r3   EC:\Users\Broad\Desktop\All-Down\binaries\youtube_dl\extractor\kuwo.py_get_formats   s*    
zKuwoBaseIE._get_formatsN)F)__name__
__module____qualname__r(   r5   r3   r3   r3   r4   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ddddddiddddgZdd ZdS )KuwoIEz	kuwo:songu   酷我音乐z.https?://(?:www\.)?kuwo\.cn/yinyue/(?P<id>\d+)z!http://www.kuwo.cn/yinyue/635632/Z635632r   u   爱我别走u	   张震岳Z20080122z$md5:ed13f58e3c3bf3f7fd9fbc4e5a7aa75c)idr   titlecreatorupload_datedescriptionz6this song has been offline because of copyright issues)r    	info_dictskipz"http://www.kuwo.cn/yinyue/6446136/Z6446136r   u   心z$md5:5d0e947b242c35dc0eb1d2fce9fbf02cZIU20150518)r:   r   r;   r>   r<   r=   r   zmp3-320)r    r?   paramsz3http://www.kuwo.cn/yinyue/3197154?catalog=yueku2016T)r    only_matchingc             C   s   | j |}| j||ddd\}}||j ks4d|kr@tddd| jd|d	}t| jd
|dddd}ttd|}|dkrd }| j|}| j	| | jd|ddd}	d }
|	d k	r| j
d|	 |ddd}| jd|ddd}
|
r|
jdd}
||||
||dS )NzDownload song detail infozUnable to get song detail info)r#   errnoteuK   对不起，该歌曲由于版权问题已被下线，将返回网站首页z6this song has been offline because of copyright issuesT)r&   z<p[^>]+id="lrcName">([^<]+)</p>z	song namez@<a[^>]+href="http://www\.kuwo\.cn/artist/content\?name=([^"]+)">zsinger nameF)fatalu   歌手Z
lrcContentu   暂无z/<a[^>]+href="http://www\.kuwo\.cn/album/(\d+)/"zalbum idzhttp://www.kuwo.cn/album/%s/zDownload album detail infozUnable to get album detail infou"   发行时间：(\d{4}-\d{2}-\d{2})zpublish time-r   )r:   r;   r<   r=   r>   r1   )	_match_id_download_webpage_handlegeturlr	   _html_search_regexr   r   r   r5   _sort_formatsr*   replace)r.   r    r/   webpageurlh	song_namesinger_nameZlrc_contentr1   album_idZpublish_timeZalbum_info_pager3   r3   r4   _real_extract\   sH    




zKuwoIE._real_extractN)r6   r7   r8   IE_NAMEIE_DESC
_VALID_URL_TESTSrR   r3   r3   r3   r4   r9   ;   s,   

r9   c               @   s4   e Zd ZdZdZdZdddddd	d
Zdd ZdS )KuwoAlbumIEz
kuwo:albumu   酷我音乐 - 专辑z/https?://(?:www\.)?kuwo\.cn/album/(?P<id>\d+?)/z http://www.kuwo.cn/album/502294/Z502294u   Made Series 《M》z$md5:d463f0d8a0ff3c3ea3d6ed7452a9483f)r:   r;   r>   r   )r    r?   playlist_countc                sl    j |} j||ddd} jd|d}tttd|d| } fdd	tjd
|D } j||||S )NzDownload album infozUnable to get album info)r#   rD   z1<div[^>]+class="comm"[^<]+<h1[^>]+title="([^"]+)"z
album nameintrou   %s简介：c                s   g | ]} j |d qS )Kuwo)
url_result).0r2   )r.   r3   r4   
<listcomp>   s    z-KuwoAlbumIE._real_extract.<locals>.<listcomp>zF<p[^>]+class="listen"><a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+/)")	rG   r*   rJ   r   r   r   refindallplaylist_result)r.   r    rQ   rM   
album_nameZalbum_introentriesr3   )r.   r4   rR      s    


zKuwoAlbumIE._real_extractN)r6   r7   r8   rS   rT   rU   _TESTrR   r3   r3   r3   r4   rW      s   rW   c               @   s0   e Zd ZdZdZdZdddiddZd	d
 ZdS )KuwoChartIEz
kuwo:chartu   酷我音乐 - 排行榜z5https?://yinyue\.kuwo\.cn/billboard_(?P<id>[^.]+).htmu9   http://yinyue.kuwo.cn/billboard_香港中文龙虎榜.htmr:   u   香港中文龙虎榜   )r    r?   playlist_mincountc                sB    j |} j||ddd} fddtjd|D } j||S )NzDownload chart infozUnable to get chart info)r#   rD   c                s   g | ]} j |d qS )rZ   )r[   )r\   r2   )r.   r3   r4   r]      s    z-KuwoChartIE._real_extract.<locals>.<listcomp>z.<a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+))rG   r*   r^   r_   r`   )r.   r    Zchart_idrM   rb   r3   )r.   r4   rR      s    
zKuwoChartIE._real_extractN)r6   r7   r8   rS   rT   rU   rc   rR   r3   r3   r3   r4   rd      s   rd   c               @   sJ   e Zd ZdZdZdZdddddd	d
ddddddgZdZdd ZdS )KuwoSingerIEzkuwo:singeru   酷我音乐 - 歌手z2https?://(?:www\.)?kuwo\.cn/mingxing/(?P<id>[^/]+)z'http://www.kuwo.cn/mingxing/bruno+mars/z
bruno+marsu   Bruno Mars)r:   r;   iI  )r    r?   rf   z)http://www.kuwo.cn/mingxing/Ali/music.htmZAli_   zRegularly stalls travis build)r    r?   rf   r@      c                sx   j jddd}jd|d}jd|d tjd|d	} fd
d}t||j}j||S )NzDownload singer infozUnable to get singer info)r#   rD   z<h1>([^<]+)</h1>zsinger namezdata-artistid="(\d+)"z	artist idzdata-page="(\d+)"z
page countc          	      sJ   j dd| d  d| d   | jdd}fddtjd	|D S )
Nz+http://www.kuwo.cn/artist/contentMusicsAjaxzDownload song list page #%dr   z Unable to get song list page #%d)ZartistIdpnrn)r#   rD   r$   c                s    g | ]} j tj|d qS )rZ   )r[   r   urljoin)r\   r2   )r.   r    r3   r4   r]      s   zAKuwoSingerIE._real_extract.<locals>.page_func.<locals>.<listcomp>z0<div[^>]+class="name"><a[^>]+href="(/yinyue/\d+))r*   	PAGE_SIZEr^   r_   )page_numrM   )	artist_idr.   	singer_idr    r3   r4   	page_func   s    
z-KuwoSingerIE._real_extract.<locals>.page_func)rG   r*   rJ   intr
   rm   r`   )r.   r    rM   rP   Z
page_countrq   rb   r3   )ro   r.   rp   r    r4   rR      s    


zKuwoSingerIE._real_extractN)	r6   r7   r8   rS   rT   rU   rV   rm   rR   r3   r3   r3   r4   rg      s   
rg   c               @   s4   e Zd ZdZdZdZdddddd	d
Zdd ZdS )KuwoCategoryIEzkuwo:categoryu   酷我音乐 - 分类z3https?://yinyue\.kuwo\.cn/yy/cinfo_(?P<id>\d+?).htmz(http://yinyue.kuwo.cn/yy/cinfo_86375.htmZ86375u   八十年代精选u*   这些都是属于八十年代的回忆！)r:   r;   r>      )r    r?   rf   c                s    j |} j||ddd} jd|d}ttd|j d| }|dkrNd } j jd	|d
|} fdd|d D } j||||S )NzDownload category infozUnable to get category info)r#   rD   z&<h1[^>]+title="([^<>]+?)">[^<>]+?</h1>zcategory namerY   u   %s简介：u   暂无zvar\s+jsonm\s*=\s*([^;]+);zcategory songsc                s    g | ]} j d |d  dqS )zhttp://www.kuwo.cn/yinyue/%s/ZmusicridrZ   )r[   )r\   song)r.   r3   r4   r]   "  s   z0KuwoCategoryIE._real_extract.<locals>.<listcomp>Z	musiclist)rG   r*   rJ   r   r   strip_parse_jsonr`   )r.   r    category_idrM   category_nameZcategory_descZjsonmrb   r3   )r.   r4   rR     s     



zKuwoCategoryIE._real_extractN)r6   r7   r8   rS   rT   rU   rc   rR   r3   r3   r3   r4   rs     s   rs   c               @   sX   e Zd ZdZdZdZdddddd	d
didZejddddddddg Zdd Z	dS )KuwoMvIEzkuwo:mvu   酷我音乐 - MVz,https?://(?:www\.)?kuwo\.cn/mv/(?P<id>\d+?)/zhttp://www.kuwo.cn/mv/6480076/Z6480076mp4z
My HouseMVZ2PM)r:   r   r;   r<   r   mv)r    r?   rB   mkv   )r   r   r      c       	      C   s   | j |}| j||d| d| d}tjd|}|rJ|jd}|jd}ntd| j|dd	}| jd
| |d| d}|j|dd | j| ||||dS )NzDownload mv detail info: %sz Unable to get mv detail info: %s)r#   rD   zH<h1[^>]+title="(?P<song>[^"]+)">[^<]+<span[^>]+title="(?P<singer>[^"]+)"ru   Zsingerz#Unable to find song or singer namesT)r0   z+http://www.kuwo.cn/yy/st/mvurl?rid=MUSIC_%szDownload %s MV URL)r#   r|   )r    r'   )r:   r;   r<   r1   )	rG   r*   r^   searchgroupr	   r5   r-   rK   )	r.   r    r/   rM   mobjrO   rP   r1   Zmv_urlr3   r3   r4   rR   @  s.    




zKuwoMvIE._real_extractN)
r6   r7   r8   rS   rT   rU   rc   r   r(   rR   r3   r3   r3   r4   rz   (  s   
rz   )
__future__r   r^   commonr   compatr   utilsr   r   r	   r
   r   r   r9   rW   rd   rg   rs   rz   r3   r3   r3   r4   <module>   s   	*P$9'