从Musixmatch获取歌词

时间:2018-12-24 16:27:24

标签: php arrays curl

不幸的是,我没有任何编码PHP的经验。只是Html。
我正在尝试从Musixmatch中检索歌词,但没有成功。
下面的这段代码我曾成功地从Last.fm中检索到Bios,并与Musixmatch一起使用,我更改了值(url,api_key)。
能帮我一下吗?
非常感谢。
圣诞快乐。

   <?php
   $fields = array(    
         'q_track' => $track,    
         'q_artist' => $artist,    
         'api_key' => 'xxxxxecab2a0072c88ee31b50a4225b');    
$fields_string = '';    
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }    
rtrim($fields_string,'&');    
$ch = curl_init();    
curl_setopt($ch, CURLOPT_TIMEOUT, 10);    
curl_setopt($ch, CURLOPT_URL,  
'http://api.musixmatch.com/ws/1.1/matcher.lyrics.get');    
curl_setopt($ch, CURLOPT_POST, true);    
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);    
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; 
Windows NT 5.0)");    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    
$response = curl_exec($ch);    
curl_close($ch);    
$soap = simplexml_load_string($response);    ?>


<div>
<div  />
<h3><?php echo $track; ?></h3>
</div>
<br><div><p><?php print nl2br(strip_tags($soap->body->lyrics- 
>lyrics_body)); ?></p><br></div> 

2 个答案:

答案 0 :(得分:0)

1 /您正在使用POST方法发送请求,API不支持该方法。 尝试以此替换CURL请求:

$ch = curl_init();    
curl_setopt($ch, CURLOPT_URL,  
'http://api.musixmatch.com/ws/1.1/matcher.lyrics.get?'.$fields_string);       
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    
$response = curl_exec($ch);    
curl_close($ch);  

2 / API的响应类型为JSON,因此请尝试使用json_decode()代替simplexml_load_string()

Alos,我建议使用HTTPS。

答案 1 :(得分:0)

我是Musixmatch api的新手。您需要将查询输入参数(q_ *)与以“搜索”(而不是get)结尾的api命令一起使用。如果使用“获取”,则需要对象的ID(例如track_id = #####)。问候。

示例适用于“搜索”和输入“ q_”: 卷曲: curl --url“ http://api.musixmatch.com/ws/1.1/track.search?q_artist=Toto&q_track=Rosanna&apikey=########


部分卷曲输出: {“ message”:{“ header”:{“ status_code”:200,“ execute_time”:0.020166873931885,“ available”:26},“ body”:{“ track_list”:[{“ track”:{“ track_id”: 88430107