如何做一个音乐搜索与播放的功能

用到的接口:

#

音乐搜索

请求地址

http[s]://api.kieng.cn/musicsearch

参数说明

str->歌名|id=>音乐ID|URL=>音乐URL(三者选一,必填),page->页数,type->平台

请求方式

GET/POST

特殊说明

type支持参数:qq(QQ音乐),netease(网易),kugou(酷狗),kuwo(酷我),xiami(虾米),baidu(百度),1ting(一听),migu(咪咕),lizhi(荔枝),qingting(蜻蜓),ximalaya(喜马拉雅),kg(全民K歌),5singyc(51原创),5singfc(51翻唱),soundcloud

调用次数

1309次

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

上面的接口可以获取音乐的id

php:

<?php
 
$id = @$_GET['id'];

if (empty($id)) {
	exit(jsonm(['code' => 0, 'msg' => '请填写音乐 ID']));
}
 
// 正则判断 ID 是否正确
if (!preg_match('/^[0-9]*$/', $id)) {
	exit(jsonm(['code' => 0, 'msg' => '这不是有效的音乐 ID']));
}
 
$api = 'http://music.163.com/song/media/outer/url?id=';
 
$url = $api . $id . '.mp3';
// print_r($url);
$data = curlGet($url);
// print_r($data);
// exit;
// 正则取连接
preg_match_all('/Location:(.*?)\.mp3/', $data, $arr);
 
// 判断一下是否成功
if (empty($arr[1][0])) {
	exit(jsonm(['code' => 1, 'msg' => '解析失败', 'play' => null, 'referer' => 'https://blog.kieng.cn']));
} else {
	$play = $arr[1][0];
	$play = str_replace('http://', 'https://', trim($play) . '.mp3');
 
	exit(jsonm(['code' => 0, 'msg' => '解析成功', 'play' => $play, 'referer' => 'https://blog.kieng.cn']));
}
//处理成 https 格式
 
function curlGet($url, $referurl = '') {
	if (empty($referurl)) {
		$referurl = $url;
	}
 
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	// 输出头
	curl_setopt($ch, CURLOPT_HEADER, true);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	//模拟常用浏览器的 useragent
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2');
	// 不跟随跳转
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
	//模拟来源网址
	curl_setopt($ch, CURLOPT_REFERER, $referurl);
	$output = curl_exec($ch);
	curl_close($ch);
	return $output;
 
}
//json 美化
function jsonm($data) {
 
	header('content-type:application/json;charset=utf-8');
 
	return stripslashes(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
 
}

这个代码用来将音乐id解析成MP3,

html:

  <audio controls autoplay="autoplay" loop="loop">
    <source src="http://m10.music.126.net/20200616170245/36839c07efbf8bb828662a92ac0aead5/ymusic/0dd9/d28b/e089/fcbab41f4900212553c5b610c617da2a.mp3" type="audio/mpeg" />
      如果不播放,说明你的浏览器不支持!
  </audio>

这个是用来放mp3的,至于搜索和其他功能,可以自己扩展

参考网站:https://blog.kieng.cn/1603.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值