o
    i0                     @   s   d dl Z d dl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 )    N   )InfoExtractor   )ExtractorErrorInAdvancePagedList
clean_htmlget_element_by_id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
preferencemp3-320mp3320kmp3i@  P   )r   r   brabrr   zmp3-192192kmp3   F   zmp3-128128kmp3   <   wma   aac0   
   )r   r   r   r   Fc              
   C   s   g }| j D ]I}|d |ddd| ddd}| jd|d	|d
 ||  d}|dkr5|s5tddd|drN|||d
 |d
 |d |dd q|S )Nr   r    MUSIC_convert_urlurl)r   r   ridtyperesponsez http://antiserver.kuwo.cn/anti.szDownload {} url infor   )notequeryheadersIPDenyz#This song is blocked in this regionTexpected)zhttp://zhttps://r   r   )r%   	format_idr   qualityr   )_FORMATSget_download_webpager   geo_verification_headersr   
startswithappend)selfsong_idtolerate_ip_denyformatsfile_formatr*   song_url r=   I/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/kuwo.py_get_formats   s2   


zKuwoBaseIE._get_formatsN)F)__name__
__module____qualname__r1   r?   r=   r=   r=   r>   r
      s    

	r
   c                	   @   sd   e Zd 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 ) KuwoIEFz	kuwo:songu   酷我音乐z.https?://(?:www\.)?kuwo\.cn/yinyue/(?P<id>\d+)z!http://www.kuwo.cn/yinyue/635632/635632r   u   爱我别走u	   张震岳20080122z$md5:ed13f58e3c3bf3f7fd9fbc4e5a7aa75c)idr   titlecreatorupload_datedescription6this song has been offline because of copyright issues)r%   	info_dictskipz"http://www.kuwo.cn/yinyue/6446136/6446136r   u   心z$md5:5d0e947b242c35dc0eb1d2fce9fbf02cIU20150518)rF   r   rG   rJ   rH   rI   r   r   r%   rL   paramsz3http://www.kuwo.cn/yinyue/3197154?catalog=yueku2016T)r%   only_matchingc                 C   s   |  |}| j||ddd\}}||jvsd|v rtddd| d|d	}t| jd
|dddd}ttd|}|dkr?d }| |}| jd|ddd}	d }
|	d urq| j	d|	 d|ddd}| jd|ddd}
|
rq|

dd}
||||
||dS )NzDownload song detail infozUnable to get song detail infor)   errnoteuK   对不起，该歌曲由于版权问题已被下线，将返回网站首页rK   Tr-   z<p[^>]+id="lrcName">([^<]+)</p>z	song namez@<a[^>]+href="http://www\.kuwo\.cn/artist/content\?name=([^"]+)">singer nameF)fatalu   歌手
lrcContent   暂无z/<a[^>]+href="http://www\.kuwo\.cn/album/(\d+)/"zalbum idzhttp://www.kuwo.cn/album//zDownload album detail infozUnable to get album detail infou"   发行时间：(\d{4}-\d{2}-\d{2})zpublish time-r"   )rF   rG   rH   rI   rJ   r:   )	_match_id_download_webpage_handler%   r   _html_search_regexr	   r   r   r?   r3   replace)r7   r%   r8   webpageurlh	song_namesinger_namelrc_contentr:   album_idpublish_timealbum_info_pager=   r=   r>   _real_extractZ   sX   


zKuwoIE._real_extractN)	r@   rA   rB   _WORKINGIE_NAMEIE_DESC
_VALID_URL_TESTSrh   r=   r=   r=   r>   rC   8   s>    	rC   c                   @   8   e Zd ZdZdZdZdZddddd	d
dZdd ZdS )KuwoAlbumIEFz
kuwo:albumu   酷我音乐 - 专辑z/https?://(?:www\.)?kuwo\.cn/album/(?P<id>\d+?)/z http://www.kuwo.cn/album/502294/502294u   Made Series 《M》z$md5:d463f0d8a0ff3c3ea3d6ed7452a9483frF   rG   rJ   r   )r%   rL   playlist_countc                    sn     |} j||ddd} d|d}tttd|| d} fdd	td
|D } ||||S )NzDownload album infozUnable to get album inforT   z1<div[^>]+class="comm"[^<]+<h1[^>]+title="([^"]+)"z
album nameintro	   简介：c                       g | ]}  |d qS Kuwo
url_result.0r<   r7   r=   r>   
<listcomp>       z-KuwoAlbumIE._real_extract.<locals>.<listcomp>zF<p[^>]+class="listen"><a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+/)")	r\   r3   r^   r	   r   r   refindallplaylist_result)r7   r%   re   r`   
album_namealbum_introentriesr=   r|   r>   rh      s(   

zKuwoAlbumIE._real_extractN	r@   rA   rB   ri   rj   rk   rl   _TESTrh   r=   r=   r=   r>   ro          
ro   c                   @   s4   e Zd ZdZdZdZdZdddidd	Zd
d ZdS )KuwoChartIEFz
kuwo:chartu   酷我音乐 - 排行榜z5https?://yinyue\.kuwo\.cn/billboard_(?P<id>[^.]+).htmu9   http://yinyue.kuwo.cn/billboard_香港中文龙虎榜.htmrF   u   香港中文龙虎榜   r%   rL   playlist_mincountc                    sB     |} j||ddd} fddtd|D } ||S )NzDownload chart infozUnable to get chart inforT   c                    ru   rv   rx   rz   r|   r=   r>   r}      r~   z-KuwoChartIE._real_extract.<locals>.<listcomp>z.<a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+))r\   r3   r   r   r   )r7   r%   chart_idr`   r   r=   r|   r>   rh      s   

zKuwoChartIE._real_extractNr   r=   r=   r=   r>   r      s    r   c                   @   sN   e Zd 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 )KuwoSingerIEFzkuwo:singeru   酷我音乐 - 歌手z2https?://(?:www\.)?kuwo\.cn/mingxing/(?P<id>[^/]+)z'http://www.kuwo.cn/mingxing/bruno+mars/z
bruno+marsu   Bruno Mars)rF   rG   iI  r   z)http://www.kuwo.cn/mingxing/Ali/music.htmAli_   zRegularly stalls travis build)r%   rL   r   rM      c                    sx    jddd}d|d}d|d td|d	} fd
d}t||j}||S )NzDownload singer infozUnable to get singer inforT   z<h1>([^<]+)</h1>rV   zdata-artistid="(\d+)"z	artist idzdata-page="(\d+)"z
page countc              	      sN   j dd| d  d| d   | jdd}fddtd	|D S )
Nz+http://www.kuwo.cn/artist/contentMusicsAjaxzDownload song list page #r   zUnable to get song list page #)artistIdpnrn)r)   rU   r*   c                    s"   g | ]}  tj|d qS rv   )ry   urllibparseurljoinrz   )r7   r%   r=   r>   r}          zAKuwoSingerIE._real_extract.<locals>.page_func.<locals>.<listcomp>z0<div[^>]+class="name"><a[^>]+href="(/yinyue/\d+))r3   	PAGE_SIZEr   r   )page_numr`   	artist_idr7   	singer_idr%   r=   r>   	page_func   s   z-KuwoSingerIE._real_extract.<locals>.page_func)r\   r3   r^   intr   r   r   )r7   r%   r`   rc   
page_countr   r   r=   r   r>   rh      s"   
zKuwoSingerIE._real_extractN)
r@   rA   rB   ri   rj   rk   rl   rm   r   rh   r=   r=   r=   r>   r      s*    r   c                   @   rn   )KuwoCategoryIEFzkuwo:categoryu   酷我音乐 - 分类z3https?://yinyue\.kuwo\.cn/yy/cinfo_(?P<id>\d+?).htmz(http://yinyue.kuwo.cn/yy/cinfo_86375.htm86375u   八十年代精选u*   这些都是属于八十年代的回忆！rq      r   c                    s     |} j||ddd} d|d}ttd| | d}|dkr(d }  d	|d
|} fdd|d D } ||||S )NzDownload category infozUnable to get category inforT   z&<h1[^>]+title="([^<>]+?)">[^<>]+?</h1>zcategory namers   rt   rY   zvar\s+jsonm\s*=\s*([^;]+);zcategory songsc                    s"   g | ]}  d |d dqS )zhttp://www.kuwo.cn/yinyue/{}/musicridrw   )ry   r   )r{   songr|   r=   r>   r}   "  r   z0KuwoCategoryIE._real_extract.<locals>.<listcomp>	musiclist)r\   r3   r^   r	   r   strip_parse_jsonr   )r7   r%   category_idr`   category_namecategory_descjsonmr   r=   r|   r>   rh     s.   

zKuwoCategoryIE._real_extractNr   r=   r=   r=   r>   r     r   r   c                   @   s`   e Zd ZdZdZdZdZddddd	d
ddidZg ej	ddddddddZ	dd Z
dS )KuwoMvIEFzkuwo:mvu   酷我音乐 - MVz,https?://(?:www\.)?kuwo\.cn/mv/(?P<id>\d+?)/zhttp://www.kuwo.cn/mv/6480076/6480076mp4z
My HouseMV2PM)rF   r   rG   rH   r   mvrQ   mkv   r      c           	      C   s   |  |}| j||d| d| d}td|}|r'|d}|d}ntd| j|dd	}| jd
| |d| dd}||dd ||||dS )NzDownload mv detail info: zUnable to get mv detail info: rT   zH<h1[^>]+title="(?P<song>[^"]+)">[^<]+<span[^>]+title="(?P<singer>[^"]+)"r   singerz#Unable to find song or singer namesT)r9   z)http://www.kuwo.cn/yy/st/mvurl?rid=MUSIC_z	Download z MV URL)r)   r   )r%   r/   )rF   rG   rH   r:   )r\   r3   r   searchgroupr   r?   r6   )	r7   r%   r8   r`   mobjrb   rc   r:   mv_urlr=   r=   r>   rh   B  s6   

zKuwoMvIE._real_extractN)r@   rA   rB   ri   rj   rk   rl   r   r
   r1   rh   r=   r=   r=   r>   r   )  s,    


r   )r   urllib.parser   commonr   utilsr   r   r   r   r	   r
   rC   ro   r   r   r   r   r=   r=   r=   r>   <module>   s    	*P%:(