
    yf0                         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e      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    N   )InfoExtractor   )compat_urlparse)get_element_by_id
clean_htmlExtractorErrorInAdvancePagedListremove_startc            
       b    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Zy)
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   c           
         g }| j                   D ]  }|d   |j                  dd      d|z  ddd}| j                  d|d	|d
   z  || j                               }|dk(  r|st	        dd      |j                  d      s|j                  d      s|j                  ||d
   |d
   |d   |j                  d      d        |S )Nr   r    zMUSIC_%sconvert_urlurl)r   r   ridtyperesponsez http://antiserver.kuwo.cn/anti.szDownload %s url infor   )notequeryheadersIPDenyz#This song is blocked in this regionTexpectedzhttp://zhttps://r   r   )r(   	format_idr   qualityr   )_FORMATSget_download_webpagegeo_verification_headersr	   
startswithappend)selfsong_idtolerate_ip_denyformatsfile_formatr-   song_urls          7/usr/lib/python3/dist-packages/yt_dlp/extractor/kuwo.py_get_formatszKuwoBaseIE._get_formats   s    == 	K%e,!oodB/!G+%!E --24{87LLT%B%B%D . H 8#,<$%JUYZZ""9-1D1DZ1P#!,X!6)(3*<8&??51  '	6     N)F)__name__
__module____qualname__r4   rA    rB   r@   r   r      s[    c:U)CWYZU)CWYZU)CWYZb9rDHrB   r   c            	       b    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 Zy)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)rK   r   rL   rO   rM   rN   r   r   r(   rQ   paramsz3http://www.kuwo.cn/yinyue/3197154?catalog=yueku2016T)r(   only_matchingc                    | j                  |      }| j                  ||dd      \  }}||j                  vsd|v rt        dd      | j	                  d|d	      }t        | j	                  d
|dd      d      }t        t        d|            }|dk(  rd }| j                  |      }| j	                  d|dd      }	d }
|	A| j                  d|	z  |dd      }| j	                  d|dd      }
|
r|
j                  dd      }
||||
||dS )NzDownload song detail infozUnable to get song detail infor,   errnoteuK   对不起，该歌曲由于版权问题已被下线，将返回网站首页rP   Tr0   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/%s/zDownload album detail infozUnable to get album detail infou"   发行时间：(\d{4}-\d{2}-\d{2})zpublish time-r&   )rK   rL   rM   rN   rO   r=   )	_match_id_download_webpage_handler(   r	   _html_search_regexr   r   r   rA   r6   replace)r:   r(   r;   webpageurlh	song_namesinger_namelrc_contentr=   album_idpublish_timealbum_info_pages               r@   _real_extractzKuwoIE._real_extractZ   ss   ..%55:4 6 6 $(("&sw~&~ !Ydhii++.F	"4#:#:O]% $; $12:< !!2<!IJ("K##G,**>Zu + . "44.9719 5 ;O
  225e 3 -L +33C< "'&
 	
rB   N)	rC   rD   rE   _WORKINGIE_NAMEIE_DESC
_VALID_URL_TESTSrm   rF   rB   r@   rH   rH   8   s    HGGBJ2#"%A
 I 4A%
 i
 E1F:+
rB   rH   c                   6    e Zd ZdZdZdZdZddddd	d
dZd Zy)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rK   rL   rO   r   )r(   rQ   playlist_countc                 P   | j                  |      }| j                  ||dd      }| j                  d|d      }t        t	        t        d|            d|z        }t        j                  d|      D cg c]  }| j                  |d	       }}| j                  ||||      S c c}w )
NzDownload album infozUnable to get album inforZ   z1<div[^>]+class="comm"[^<]+<h1[^>]+title="([^"]+)"z
album nameintro   %s简介：zF<p[^>]+class="listen"><a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+/)"Kuwo)
ra   r6   rc   r   r   r   refindall
url_resultplaylist_result)r:   r(   rj   re   
album_namealbum_intror?   entriess           r@   rm   zKuwoAlbumIE._real_extract   s    >>#&(( 5. ) 0 ,,@'
 #(':;J&(
 ?AjjY?
2:DOOHf-
 

 ##GXz;OO
s   4B#N	rC   rD   rE   rn   ro   rp   rq   _TESTrm   rF   rB   r@   rt   rt      s9    HG%GCJ10A

 EPrB   rt   c                   2    e Zd ZdZdZdZdZdddidd	Zd
 Zy)KuwoChartIEFz
kuwo:chartu   酷我音乐 - 排行榜z5https?://yinyue\.kuwo\.cn/billboard_(?P<id>[^.]+).htmu9   http://yinyue.kuwo.cn/billboard_香港中文龙虎榜.htmrK   u   香港中文龙虎榜   r(   rQ   playlist_mincountc                     | j                  |      }| j                  ||dd      }t        j                  d|      D cg c]  }| j	                  |d       }}| j                  ||      S c c}w )NzDownload chart infozUnable to get chart inforZ   z.<a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+)r{   )ra   r6   r|   r}   r~   r   )r:   r(   chart_idre   r?   r   s         r@   rm   zKuwoChartIE._real_extract   s    >>#&(( 5. ) 0
 ?AjjA7?L
2:DOOHf-
 
 ##GX66	
s   A,Nr   rF   rB   r@   r   r      s5    HG(GIJJ)
 E
7rB   r   c                   L    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 Z	y)KuwoSingerIEFzkuwo:singeru   酷我音乐 - 歌手z2https?://(?:www\.)?kuwo\.cn/mingxing/(?P<id>[^/]+)z'http://www.kuwo.cn/mingxing/bruno+mars/z
bruno+marsu   Bruno Mars)rK   rL   iI  r   z)http://www.kuwo.cn/mingxing/Ali/music.htmAli_   zRegularly stalls travis build)r(   rQ   r   rR      c                 >     j                         j                  dd      } j                  d|d      } j                  d|d      t         j                  d|d	            } fd
}t	        || j
                        } j                  ||      S )NzDownload singer infozUnable to get singer inforZ   z<h1>([^<]+)</h1>r\   zdata-artistid="(\d+)"z	artist idzdata-page="(\d+)"z
page countc           
          j                  dd| dz   z  d| dz   z  | j                  d      }t        j                  d|      D cg c](  }j	                  t        j                  |      d      * c}S c c}w )	Nz+http://www.kuwo.cn/artist/contentMusicsAjaxzDownload song list page #%dr   z Unable to get song list page #%d)artistIdpnrn)r,   r[   r-   z0<div[^>]+class="name"><a[^>]+href="(/yinyue/\d+)r{   )r6   	PAGE_SIZEr|   r}   r~   r   urljoin)page_numre   r?   	artist_idr:   	singer_idr(   s      r@   	page_funcz-KuwoSingerIE._real_extract.<locals>.page_func   s    ,,= =A N:hlK#,HDNNS	 - UG !#

G!  7 7X FO  s   
-A:)ra   r6   rc   intr
   r   r   )	r:   r(   re   rh   
page_countr   r   r   r   s	   ``     @@r@   rm   zKuwoSingerIE._real_extract   s    NN3'	((!7/ ) 1 ---9 ++$g{<	 00 '<9 :
	 %Y
DNNK##GYDDrB   N)
rC   rD   rE   rn   ro   rp   rq   rr   r   rm   rF   rB   r@   r   r      s_    HG%GFJ8$
 ! ;
  /F" IErB   r   c                   6    e Zd ZdZdZdZdZddddd	d
dZd Zy)KuwoCategoryIEFzkuwo:categoryu   酷我音乐 - 分类z3https?://yinyue\.kuwo\.cn/yy/cinfo_(?P<id>\d+?).htmz(http://yinyue.kuwo.cn/yy/cinfo_86375.htm86375u   八十年代精选u*   这些都是属于八十年代的回忆！rv      r   c                    | j                  |      }| j                  ||dd      }| j                  d|d      }t        t	        d|      j                         d|z        }|dk(  rd }| j                  | j                  d	|d
      |      }|d   D cg c]  }| j                  d|d   z  d       }}| j                  ||||      S c c}w )NzDownload category infozUnable to get category inforZ   z&<h1[^>]+title="([^<>]+?)">[^<>]+?</h1>zcategory namery   rz   r_   zvar\s+jsonm\s*=\s*([^;]+);zcategory songs	musiclistzhttp://www.kuwo.cn/yinyue/%s/musicridr{   )	ra   r6   rc   r   r   strip_parse_jsonr~   r   )	r:   r(   category_idre   category_namecategory_descjsonmsongr   s	            r@   rm   zKuwoCategoryIE._real_extract  s   nnS)((#;1 ) 3 //5wQ %gw/557M)+ H$ M  !8!8)74D"FGRT
 k*
 OO;d:>NNPVW
 
 ##G[-WW	
s   CNr   rF   rB   r@   r   r     s9    HG%GGJ9)G

  EXrB   r   c                   n    e Zd 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   Z	d Z
y)KuwoMvIEFzkuwo:mvu   酷我音乐 - MVz,https?://(?:www\.)?kuwo\.cn/mv/(?P<id>\d+?)/zhttp://www.kuwo.cn/mv/6480076/6480076mp4z
My HouseMV2PM)rK   r   rL   rM   r   mvrV   mkv   r      c                 v   | j                  |      }| j                  ||d|z  d|z        }t        j                  d|      }|r#|j	                  d      }|j	                  d      }nt        d      | j                  |d	      }| j                  d
|z  |d|z        }|j                  |dd       ||||dS )NzDownload mv detail info: %sz Unable to get mv detail info: %srZ   zH<h1[^>]+title="(?P<song>[^"]+)">[^<]+<span[^>]+title="(?P<singer>[^"]+)"r   singerz#Unable to find song or singer namesT)r<   z+http://www.kuwo.cn/yy/st/mvurl?rid=MUSIC_%szDownload %s MV URL)r,   r   )r(   r2   )rK   rL   rM   r=   )ra   r6   r|   searchgroupr	   rA   r9   )	r:   r(   r;   re   mobjrg   rh   r=   mv_urls	            r@   rm   zKuwoMvIE._real_extractB  s    ..%((<wF6@ ) B yyW 

6*I**X.K !FGG##Gd#C''9GC.8 ( : 	
 	 "	
 	
rB   N)rC   rD   rE   rn   ro   rp   rq   r   r   r4   rm   rF   rB   r@   r   r   )  sm    HG!G@J/!	
 d
E ""c:c:& H

rB   r   )r|   commonr   compatr   utilsr   r   r	   r
   r   r   rH   rt   r   r   r   r   rF   rB   r@   <module>r      sy    	 ! $ ' 'TM
Z M
`"P- "PJ7- 747E= 7Et%X] %XP7
z 7
rB   