不幸的是,我没有任何编码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>
答案 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