CloudMusic:免费听歌

本文所涉及所有资源均在   传知代码平台可获取。

目录

概述

演示效果

视频演示

图片展示

核心逻辑

获取歌曲图片

提取搜索结果

使用方式

部署方式

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

访问站点即可

附件下载

下载地址见页面附件

感觉不错,点击我,立即使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1547222.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

19、网络安全合规复盘

数据来源:5.网络安全合规复盘_哔哩哔哩_bilibili

【Java】异常处理 —— Throwable 及其应用

通过一张图来展示Throwable类的继承体系,如图2所示。 图2 Throwable异常体系结构图 ● Error类称为错误类,它表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的,例如…

3D建模软件 | Blender v4.2.2 绿色版

Blender是一款功能强大的免费开源3D创作套件,适用于创建3D可视化效果,如静态图像、3D动画、视觉特效以及视频编辑。Blender以其跨平台兼容性、高效内存管理、统一的工作流程和活跃的社区支持而受到独立艺术家和小型工作室的青睐。 它提供了从建模、渲染…

Ubuntu下安装向日葵:闪退

下载 https://sunlogin.oray.com/download 初次安装 $ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb 正在选中未选择的软件包 sunloginclient。 (正在读取数据库 ... 系统当前共安装有 234281 个文件和目录。) 准备解压 SunloginClient_15.2.0.63064_amd64.deb ..…

使用bat命令在没有java的环境下启动jar包

使用bat命令在没有java的环境下启动jar包 先看一下目录下面的文件 里面有三个比较重要的文件 clean.bat:用于清除占用程序的端口 一键启动_x64.bat:用于启动全部的项目 jre8_win64:用于jar所需要的java环境 注意事项: 关于jar…

MySQL 中优化 COUNT()查询的实用指南

在 MySQL 数据库的使用中,我们经常会用到 COUNT()函数来统计行数或满足特定条件的行数。然而,在处理大规模数据时,COUNT()查询可能会变得非常缓慢,影响数据库的性能。那么,如何在 MySQL 中优化 COUNT()查询呢&#xff…

Redis一些简单通用命令和认识常用数据类型和编码方式

通用命令 get() / set() 这是Redis中两个最为核心的命令。 set插入 这里的key 和 value都是字符串,我们可以加双引号 或者单引号,或者不加。 get查找 如果查询的key值不存在,那么会返回一个 nil ,也就是代表空 在Redis中命令…

【C++位图】构建灵活的空间效率工具

目录 位图位图的基本概念如何用位图表示数据位图的基本操作setresettest 封装位图的设计 总结 在计算机科学中,位图(Bitmap)是一种高效的空间管理数据结构,广泛应用于各种场景,如集合操作、图像处理和资源管理。与传统…

什么是开放式耳机?具有什么特色?非常值得入手的蓝牙耳机推荐

开放式耳机是当下较为热门的一种耳机类型。它具有以下特点: 设计结构: 呈现开放式的构造,不会完全堵住耳道。如此一来,外界声音能够较容易地被使用者听到,在使用耳机时可以保持对周围环境的察觉。比如在户外&#xf…

绿色新纪元:光伏技术飞跃与能源体系重塑

近年来,光伏电池技术取得了突破性进展。新型高效光伏材料如钙钛矿、有机光伏等不断涌现,这些材料在转换效率和稳定性上均表现出色,为光伏产业注入了新的活力。同时,光伏组件的智能化、轻量化设计也日益成为趋势,使得光…

Go基础学习06-Golang标准库container/list(双向链表)深入讲解;延迟初始化技术;Element;List;Ring

基础介绍 单向链表中的每个节点包含数据和指向下一个节点的指针。其特点是每个节点只知道下一个节点的位置,使得数据只能单向遍历。 示意图如下: 双向链表中的每个节点都包含指向前一个节点和后一个节点的指针。这使得在双向链表中可以从前向后或从后…

403高效绕过目录扫描工具

403高效绕过目录扫描工具 简介 在安全测试中,安全测试人员信息收集时可使用此工具来进行目录枚举,目录进行指纹识别,枚举出来的403状态目录可尝试进行绕过,绕过403有可能获取管理员权限,不影响dirsearch原本功能使用。…

提升效率,C4D云渲染教程来了

因为C4D主要搭配的渲染器OCtane和Redshift都是GPU渲染器,阿诺德渲染器也可能直接用GPU渲染,所以大部分C4D渲染农场都支持用RTX2080、3090、4090系列显卡云渲染,云渲染追求速度,分机渲染任务,比如分100台机器渲染一个相…

wireshark1

注意看title,管理员的密码即为答案,那么咱们就直接去过找POST请求的数据包就可以了 找到flag,游戏结束~

TOGAF®架构开发方法:构建数字化转型新时代的正式权威指南

The Open Group与AZone权威出品,值得信赖 《TOGAF架构开发方法》培训课程(点击即可学习) 全球最具影响力的数字化转型架构出品方The Open Group 专注于企业架构师职业发展的平台AZone联合推出 The Open Group:行业领导者的信赖…

每日OJ题_牛客_NC40链表相加(二)_链表+高精度加法_C++_Java

目录 牛客_NC40链表相加(二)_链表高精度加法 题目解析 C代码 Java代码 牛客_NC40链表相加(二)_链表高精度加法 链表相加(二)_牛客题霸_牛客网 题目解析 模拟⾼精度加法的过程,只不过是在链表中模拟。 C代码 /*…

FreeRTOS(四)FreeRTOS列表与列表项

目录 列表 列表项 迷你列表项 列表和列表项的关系 列表相关API函数 列表初始化 列表项初始化 列表项插入 列表项末尾插入 列表项删除 列表遍历 在 FreeRTOS 中,列表(List)和列表项(ListItem)是核心数据结构&…

linux内核双向链表使用list klist

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、list和klist是什么?二、代码示例1.list2.klist 总结 前言 提示:这里可以添加本文要记录的大概内容: linux内核中大量使…

上市一周暴涨20%,美的的出海之路开了个好头

“宁可走错一步,也不能走错半步”,这是美的集团创始人何享健的名言,也代表着美的集团在扩张方面长期以来一贯的风格:稳健。 映射在当下,就是当老对手海尔智家于2020年率先登陆港交所,国际化策略初显成效以…

JavaWeb 13.HTTP协议

和自己的情绪共处,永远保持乐观 —— 24.9.26 一、HTTP简介 HTTP 超文本传输协议 (HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出&a…