
    VGh0                         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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   )ExtractorErrorInAdvancePagedList
clean_htmlget_element_by_id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| ddd}| j                  d|d	j                  |d
         || j	                               }|dk(  r|st        dd      |j                  d      s}|j                  ||d
   |d
   |d   |j                  d      d        |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_urls          ^/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/kuwo.py_get_formatszKuwoBaseIE._get_formats   s    == 	K%e,!oodB/y)%!E --24;;K<QRT%B%B%D . H 8#,<$%JUYZZ""#:;#!,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 }
|	B| j                  d|	 d|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//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   sw   ..%55:4 6 6 $(("&sw~&~ !Ydhii++.F	"4#:#:O]% $; $12:< !!2<!IJ("K##G,**>Zu + . "44+H:Q719 5 ;O
  225e 3 -L +33C< "'&
 	
rB   N)	rC   rD   rE   _WORKINGIE_NAMEIE_DESC
_VALID_URL_TESTSrn   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      }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	   简介：zF<p[^>]+class="listen"><a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+/)"Kuwo)
rb   r6   rd   r
   r   r	   refindall
url_resultplaylist_result)r:   r(   rk   rf   
album_namealbum_intror?   entriess           r@   rn   zKuwoAlbumIE._real_extract   s    >>#&(( 5. ) 0 ,,@'
 #(':;l)$&
 ?AjjY?
2:DOOHf-
 

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

 EPrB   ru   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|   )rb   r6   r}   r~   r   r   )r:   r(   chart_idrf   r?   r   s         r@   rn   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    d| dz    | j                  d      }t        j                  d|      D cg c]2  }j	                  t
        j                  j                  |      d      4 c}S c c}w )	Nz+http://www.kuwo.cn/artist/contentMusicsAjaxzDownload song list page #r   zUnable to get song list page #)artistIdpnrn)r,   r[   r-   z0<div[^>]+class="name"><a[^>]+href="(/yinyue/\d+)r|   )r6   	PAGE_SIZEr}   r~   r   urllibparseurljoin)page_numrf   r?   	artist_idr:   	singer_idr(   s      r@   	page_funcz-KuwoSingerIE._real_extract.<locals>.page_func   s    ,,=";HqL> J8AG#,HDNNS	 - UG !#

G!  4 4S( CVL  s   
7B)rb   r6   rd   intr   r   r   )	r:   r(   rf   ri   
page_countr   r   r   r   s	   ``     @@r@   rn   zKuwoSingerIE._real_extract   s    NN3'	((!7/ ) 1 ---9 ++$g{<	 00 '<9 :
	 %Y
DNNK##GYDDrB   N)
rC   rD   rE   ro   rp   rq   rr   rs   r   rn   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*   这些都是属于八十年代的回忆！rw      r   c           	         | j                  |      }| j                  ||dd      }| j                  d|d      }t        t	        d|      j                         | d      }|dk(  rd }| j                  | j                  d	|d
      |      }|d   D cg c]&  }| j                  dj                  |d         d      ( }}| j                  ||||      S c c}w )NzDownload category infozUnable to get category inforZ   z&<h1[^>]+title="([^<>]+?)">[^<>]+?</h1>zcategory namerz   r{   r_   zvar\s+jsonm\s*=\s*([^;]+);zcategory songs	musiclistzhttp://www.kuwo.cn/yinyue/{}/musicridr|   )
rb   r6   rd   r
   r	   strip_parse_jsonr   r   r   )	r:   r(   category_idrf   category_namecategory_descjsonmsongr   s	            r@   rn   zKuwoCategoryIE._real_extract  s   nnS)((#;1 ) 3 //5wQ %gw/557oY') H$ M  !8!8)74D"FGRT
 k*
 OO;BB4
CSTV\]
 
 ##G[-WW	
s   +CNr   rF   rB   r@   r   r     s9    HG%GGJ9)G

  EXrB   r   c                   p    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 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                 x   | j                  |      }| j                  ||d| d|       }t        j                  d|      }|r#|j	                  d      }|j	                  d      }nt        d      | j                  |d	      }| j                  d
| |d| d      }|j                  |dd       ||||dS )NzDownload mv detail info: zUnable to get mv detail info: rZ   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_z	Download z MV URL)r,   r   )r(   r2   )rK   rL   rM   r=   )rb   r6   r}   searchgroupr   rA   r9   )	r:   r(   r;   rf   mobjrh   ri   r=   mv_urls	            r@   rn   zKuwoMvIE._real_extractB  s    ..%((!:7)D4WI> ) @ yyW 

6*I**X.K !FGG##Gd#C''7yAIgYg6 ( 8 	
 	 "	
 	
rB   N)rC   rD   rE   ro   rp   rq   rr   r   r   r4   rn   rF   rB   r@   r   r   )  sw    HG!G@J/!	
 d
E<			<c:< c:<H

rB   r   )r}   urllib.parser   commonr   utilsr   r   r   r	   r
   r   rH   ru   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   