为什么不自己写个音乐播放器呢?

2021-09-08 20:36:49 +08:00
 dufu1991

简易云音乐

简洁的的第三方网易云音乐播放器

🌎 访问  |   👨🏻‍💻 GitHub

🌼 技术与特性

  1. 主要技术栈包含 PWA 、Svelte 、rollup 、svelte-stack-router 、svelte-lazy 等。

  2. 支持网易云音乐账号登录(扫码、手机密码或验证码、邮箱密码)。

  3. 支持歌词翻译和滚动显示。

  4. 支持私人 FM 、每日推荐、心动模式等。

  5. 支持查看歌曲热评,过滤评论广告与官方硬塞热评,四楼终于不再是广告了!

  6. 每日自动签到(上送 Android 端签到,因为积分最高)。

  7. 推荐 PWA 模式使用,Chrome 和 Edge 浏览器根据首次打开时的提示安装,Safari 手动安装。

  8. 播放器最大化时支持下滑最小化,最小化模式支持左滑切换下一曲,滑动支持速度判断。

  9. 更多特性开发中。

  10. 前端菜鸟一枚,水平有限,期待大佬提出改进意见。

🍽️ 如何食用

  1. 本应用使用了 PWA 技术,本质还是网页应用,只是对比纯网页体验有所提升。请将图标添加至设备桌面使用,相当于将网页书签放置桌面,方便快速打开,且不占用设备存储空间。

  2. Android 设备建议使用较新版本的 Chrome 或 Edge 浏览器直接打开 简易云音乐 ,根据提示安装至桌面使用。国内手机自带的浏览器及其他第三方浏览器由于对 chromium 内核的魔改与阉割,对 PWA 的支持一言难尽。正常情况进入页面根据提示安装至桌面即可,或按照下图手动添加。很多手机操作系统默认会关闭 APP 将网页标签放到桌面的权限,可按照以下方式(设置--应用设置--应用管理--找到 Chrome 或者 Edge 浏览器--权限管理--添加桌面快捷方式)打开权限,不同品牌手机有些许差异,请以自己的手机系统为准。注:不知是 Microsoft 和 Google 自己不上架还是被国内应用商店出于商业目的限制了,各大主流应用商店要么无法下载,要么下载的版本都是很多年前的旧版。请自行想办法安装较新版本的 Chrome 或 Edge,或到我提供的这个地址下载。下载 Edge apk下载 Chrome apk

  3. iOS 设备安装就很简单了,用自带的 Safari 浏览器打开 简易云音乐,按照以下提示即可安装至桌面。

💭 项目背景

想找个项目练手 Svelte,就对比了几个音乐类应用,刚好有开源的网易云 API Binaryify/NeteaseCloudMusicApi 可用,就搞了这个工程。

内容资源使用网易云音乐,UI 界面参考了 Apple MusicYesPlayMusic

写一点自己使用过的一些音乐 APP 感受对比。

1. Apple Music

优点

缺点

2. 网易云音乐

优点

缺点

3. QQ 音乐

优点

缺点

4. Spotify

优点

缺点

🤷‍♂️ 已知问题或体验欠佳点

  1. 播放器最大化时,由于 Android 无法阻止系统返回,iOS 无法阻止 Safari 右滑返回,进行此操作会返回上一页之后播放器才能最小化,有一点不符合操作预期,暂时无解。

  2. 由于 Safari 不支持 CSS 特性 scroll-behavior: smooth (平稳滚动),手动写了 scrollSmoothTo 方法实现歌词平滑滚动,但是似乎是因为 Safari 自带的滚动延迟与自定义滚动的时间计算有冲突,若刚好在切换歌词的极短时间内手动滚动歌词会出现滚动回退现象(看人品)。考虑此需求不重要,暂不予解决( Android 原生支持 smooth,体验良好)。

  3. 此应用始终是个网页应用,无法在第一级页面返回时提示即将退出应用的二次确认。

  4. 目前浏览器好像没有提供完整的系统级媒体控制 API,所以无法使用线控耳机等后台方式切换下一曲等。

  5. 官方歌词格式混乱,已发现的特殊情况都一一处理,可能还存在其他莫名其妙的混乱情况,查看歌词可能导致应用报错或歌词显示错误。

  6. PWA 模式已经设置了仅竖屏使用,但手机横屏打开应用时页面计算的高度是横屏高度,播放器最大化与最小化就一定概率出现问题,请关闭浏览器进程(注意是浏览器进程)竖屏重新打开。

  7. 虽然很多地方都做了懒加载,但是某些不适合懒加载的情况下,歌曲列表超级长的时候,由于短时间内页面要渲染大量数据,根据手机性能,可能会有延迟。

  8. iOS 设备右滑返回上一页是 Safari 浏览器自带的功能,但是在 PWA 模式下右滑返回上一页会自动加载一下页面,体验不好但不影响功能。

  9. iOS 的 Safari 在 PWA 模式下不能后台播放音乐?我在 Mac 的 Simulator 里面是完全没问题的,没法玩了啊。库克远程施个法?下一部就换 iPhone 。

  10. Android 端使用的时候,会在通知栏显示如下提示,这是浏览器自带的通知,查了下好像没有关闭的 API 。强迫症看不下去可以关闭浏览器的通知权限,但对应的通知栏控制功能也会关闭。

⚙️ 部署

如果你有自己的服务器,建议将此应用与网易云 API 都部署至你自己的服务器,减轻我的服务器压力。

  1. 部署网易云 API,详情参见 Binaryify/NeteaseCloudMusicApi

  2. 执行git clone https://github.com/dufu1991/simple-cloud-music.git克隆本仓库代码。

  3. 设备安装好 node 环境之后,进入工程目录,执行 node i 安装依赖。

  4. 修改 src/utils/request.js 文件里面的 baseURL 为你的网易云 API 地址,执行 npm run dev 启动本地联调,此时访问的是 public 下面的文件。

  5. 执行 npm run build 编译打包文件至 html 目录下,然后将 html 文件夹里面的文件上传到你的 Web 服务器即可访问。

  6. 如果要直接部署,执行 npm run deploy 根据命令行提示输入自己的服务器地址、账号、密码、静态文件部署路径等信息,将直接将打包好的工程部署至 Web 服务器。

  7. 要实现 PWA 的 Service Workers (离线访问),必须要 HTTPS 证书,关于域名、证书、服务器等相关内容请自行了解。

📜 开源许可

本项目仅供个人学习研究使用,禁止用于商业及非法用途。

基于 MIT license 许可进行开源。

🌊 灵感来源与大感谢

非常感谢 API 源代码,来自 Binaryify/NeteaseCloudMusicApi

📷 部分截图

🎨 Design

🪢 杂谈

🚑 反馈与建议

由于主要只在 Android 设备上测试,且只用了我个人的网易云音乐账号数据,避免不了不同设备不同版本不同数据产生的 bug,望积极反馈。

2615 次点击
所在节点    问与答
11 条回复
oreoiot
2021-09-08 20:42:56 +08:00
试试看
w1287928345
2021-09-08 22:04:52 +08:00
赞一个
kkocdko
2021-09-08 22:39:13 +08:00
很好用,对于我这种轻度用户,基本可以替换原版客户端了。
kassadin
2021-09-09 00:37:05 +08:00
看起来很棒
kebamt
2021-09-09 03:22:49 +08:00
赞一个❤️,我前不久发现的 YesPlayMusic 也很不错,只是在手机上无法自适应,你这个刚好解决了这个问题✌ 应该支持部署到 vercel 并连接到自己的域名吧像 YesPlayMusic 那样?
oott123
2021-09-09 07:44:12 +08:00
喜欢你这个 logo
rsjan
2021-09-09 09:02:48 +08:00
克隆一份到自己的服务器,再添加一些功能,就这么愉快的决定啦!今天又是充实的一天,谢谢楼主!
anonydmer
2021-09-09 09:38:03 +08:00
Svelte 是个好东西,楼主也实现的很棒。不过现在已经不用网易云了,纯支持一个
ccyu220
2021-09-09 09:47:32 +08:00
虽然项目还没具体体验。不过文档写的很工整,LOGO 设计的也很漂亮。支持下。
huqi
2021-09-09 12:27:46 +08:00
前端的福音
dufu1991
2021-09-24 14:35:38 +08:00
@kebamt 试了一下 vercel 国内访问还是太慢了,我就索性自己买了服务器和域名。不然体验太差了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/800697

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX