本文所涉及所有资源均在 传知代码平台可获取。
目录
概述
演示效果
视频演示
图片展示
核心逻辑
获取歌曲图片
提取搜索结果
使用方式
部署方式
Docker部署1
构建镜像
Web站点部署2
附件下载
概述
CloudMusic是一款全网歌曲免费听的web项目,无需任何数据库,资源不存留在本地,原接口是爬取某XX宝,本项目整合接口实现基本使用,后续可自行对接收藏、登陆以及整改UI
演示效果
视频演示
见视频演示
图片展示
搜索歌曲展示
核心逻辑
获取歌曲图片
libxml_use_internal_errors(true); // Suppress HTML5 parsing errors
$dom = new DOMDocument();
$dom->loadHTML($response);
$xpath = new DOMXPath($dom);
$meta = $xpath->query('//meta[@property="og:image"]');
if ($meta->length > 0) {
$content = $meta->item(0)->getAttribute('content');
die(
json_encode(
array(
'code' => 200,
'data' => $content,
'msg' => '获取成功'
))
);
} else {
die(
json_encode(
array(
'code' => 100,
'data' => '',
'msg' => '获取失败'
))
);
}
提取搜索结果
// 提取搜索结果
$results = [];
$search_results = $xpath->query("//div[contains(@class, 'card-text')]//div[contains(@class, 'row')]");
foreach ($search_results as $result) {
$song_name_node = $xpath->query(".//div[contains(@class, 'col-5')]/a", $result)->item(0);
$artist_node = $xpath->query(".//div[contains(@class, 'col-4')]", $result)->item(0);
$action_node = $xpath->query(".//div[contains(@class, 'col-3')]/a", $result)->item(0);
if ($song_name_node && $artist_node && $action_node) {
$song_info = [
"song_name" => trim($song_name_node->textContent),
"artist" => trim($artist_node->textContent),
"action" => trim($action_node->textContent),
"link" => $song_name_node->getAttribute('href'),
"id" => basename($song_name_node->getAttribute('href'))
];
$results[] = $song_info;
}
}
// 提取最新搜索
$latest_search_results = [];
$latest_searches = $xpath->query("//div[contains(@class, 'card shadow-sm')]//p[contains(@class, 'card-text')]/a");
foreach ($latest_searches as $search) {
$search_info = [
"search" => trim($search->textContent),
"link" => $search->getAttribute('href')
];
$latest_search_results[] = $search_info;
}
// 构建返回数据结构
$api_response = [
"search_results" => $results,
"latest_searches" => $latest_search_results
];
// 输出为JSON格式
header('Content-Type: application/json');
echo json_encode($api_response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
使用方式
部署成功后,打开web站点,搜索歌曲即可加入列表,自动循环列表播放歌曲
部署方式
Docker部署1
构建镜像
将压缩包中的Docker部署文件夹里面的文件全部上传到服务器上,选择构建镜像
镜像构建成功后,创建容器即可访问(可以更改api接口,项目的static中的js 搜索http://即可替换)
Web站点部署2
上传Web站点部署文件夹里面的压缩包到服务器进行解压,环境PHP5.6+,推荐7.0
访问站点即可
附件下载
下载地址见页面附件
感觉不错,点击我,立即使用