# W_PlatformMusicApi
Whole Platform Music Python API service
这是一个基于 **Flask** + **Requests**的 **Python** 项目,提供`Whole Platform`音乐的API接口
## 灵感来源
[Binaryify/NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi)
[jsososo/QQMusicApi](https://github.com/jsososo/QQMusicApi/)
## 音乐软件
`一款使用 W_PlatformMusicApi 的音乐播放器`
[Wp_music](https://github.com/GitHub-ZC/Wp_music)
[软件下载](https://github.com/GitHub-ZC/Wp_music/releases) 建议使用专业下载器下载
## 环境要求
需要 python 3.6+ 环境
## 工作原理
跨站请求伪造 (CSRF), 伪造请求头 , 调用官方 API
## 在线测试网站
[iecoxe.top](http://iecoxe.top:3500/)
## 在线文档
[W_PlatformMusicApi Doc](https://github-zc.github.io/W_PlatformMusicApi/)
## 安装
```shell
$ git clone https://github.com/GitHub-ZC/W_PlatformMusicApi.git
$ cd W_PlatformMusicApi/
$ pip install -r package.n -i https://mirrors.aliyun.com/pypi/simple/
```
## 运行
```shell
$ python app.py runserver
```
> 服务器启动默认端口为 5000,若不想使用 5000 端口,可使用以下命令: Mac/Linux/Windows
>
> 服务器启动默认在本机启动,外网访问不到
```shell
$ python app.py runserver -p 80
$ python app.py runserver -h 0.0.0.0
```
> 服务器默认单线程模式,请求频繁会造成卡顿,这时可以开启**多线程模式**
```shell
$ python app.py runserver --threaded
```
```shell
$ python app.py runserver -p 8080 -h 0.0.0.0 --threaded
```
## 守护进程模式运行
> 考虑到框架自带服务器的性能问题,此版本新添加生产服务器 `uwsgi`
>
> 同时可以配置 服务器 以 **守护进程** 模式 运行
> 安装 uwsgi
```shell
$ pip install uwsgi -i https://mirrors.aliyun.com/pypi/simple/
```
> 说明:centos、ubuntu、debian、mac、window 具体 每个平台 请自行百度
> 命令行启动 `uwsgi`
```shell
$ uwsgi --http 0.0.0.0:80 --wsgi-file app.py --callable app
```
> --http 0.0.0.0:80 **0.0.0.0** 代表 允许 外网主机访问;**80** 代表服务器端口
>
> 如果你使用 Centos 需要自行 配置 防火墙 放行 此端口
> 守护进程运行
```shell
$ uwsgi --http 0.0.0.0:80 --wsgi-file app.py --callable app --pidfile uwsgi.pid --daemonize uwsgi.log
```
> `--virtualenv` 添加 python 虚拟环境
>
> `--enable-threads` 如果你想要维护Python线程支持,而不为你的应用启动多线程,那么仅需添加 `--enable-threads` 选项
常用的服务器启动配置
1、有虚拟环境
```shell
$ uwsgi --http 0.0.0.0:80 --wsgi-file app.py --callable app --enable-threads --virtualenv ./env/ --pidfile uwsgi.pid --daemonize uwsgi.log
```
2、无虚拟环境
```shell
$ uwsgi --http 0.0.0.0:80 --wsgi-file app.py --callable app --enable-threads --pidfile uwsgi.pid --daemonize uwsgi.log
```
> 停止服务器
```shell
$ uwsgi --stop uwsgi.pid # 前提(必须在当前项目的 根 目录下面)
```
> 重载服务器
```shell
$ uwsgi --reload uwsgi.pid # 前提(必须在当前项目的 根 目录下面)
```
## 用户须知
!> 当前服务器为框架自带服务器,考虑到性能问题,可以使用专门web服务器与本项目对接,例如`nginx`,具体的搭建方法还请用户自行百度,这里不做演示
!> 该项目仅做接口转发,部分接口通过修改 `Referer` 实现,所有数据均不做存储处理,部分接口采用缓存,大家还是理性的保护好自己的个人信息,谨防诈骗
!> QQ音乐登陆的这个问题还是难绕过去,目前还是需要登陆获取 https://y.qq.com 的 `cookie`,注入本项目, 如果又什么更好的解决办法,欢迎大家提 pr 给我
!> 咪咕音乐不提供登录内容,具体后期再不断完善
!> 目前本项目刚刚开始,只提供QQ、咪咕两大音乐平台,后期再不断完善
!> 本项目仅供学习使用,请尊重版权,请勿利用此项目从事商业行为
## 更新记录
v0.1.0:项目刚开始启动,目前只有**QQ**平台Api
v0.2.0:添加 **migu** 平台Api,对部分QQ平台接口添加了错误处理
v0.2.1:添加 **uwsgi** 生产服务器,添加**守护进程**的启动模式(修改app.py文件)
v0.3.0:新增 项目 首页,对文档修改,增加对自己服务器的链接,用户通过每个接口后的链接,体验访问示例
v0.4.0:对每一个接口添加了缓存,缓存时间默认两分钟,不可以修改,也就是两分钟内同一链接只对官方服务器请求一次
# 接口文档
## QQ
### 搜索
#### 搜索
接口:`/qq/search/`
说明:调用此接口 , 传入搜索关键词可以搜索该音乐 / 专辑 / 歌手 / 歌单 / 用户(需要自己传入type参数) , 默认会自动去除 关键词 前后的**空白字符**
可选参数:
`key`:关键字 默认 暗号
`limit`:每一页返回的数量,默认30
`offset`:页码,默认1
`type`:搜索类型 默认为0 取值意义 type: 0:单曲,2:歌单,3:用户 ,7:歌词,8:专辑,9:歌手,12:mv
`albummid` 为专辑的 mid, 下面为专辑封面图片的路径
> https://y.gtimg.cn/music/photo_new/T002R300x300M000 + `albummid` + _.jpg_
示例:[/qq/search/?key=暗号](http://iecoxe.top:3500/qq/search/?key=暗号)
#### 热搜
接口:`/qq/search/hot/`
说明:调用此接口,默认会进行缓存处理
示例:[/qq/search/hot/](http://iecoxe.top:3500/qq/search/hot/)
#### 搜索建议
接口:`/qq/search/suggest/`
必选参数:`key`
示例:[/qq/search/suggest/?key=周杰伦](http://iecoxe.top:3500/qq/search/suggest/?key=周杰伦)
### 歌曲url
接口:`/qq/song/url/`
说明:
- 这个接口依赖服务器的 Cookie 信息的,支持批量获取,不一定是全部的歌曲都有无损、高品的, 要注意结合 size320,sizeape,sizeflac 等参数先判断下是否有播放链接
- 服务器内置默认的 Cookie ,如果是未登陆或非 vip 用户的 `cookie`,只能获取到非 vip 用户可听的歌曲
- 服务器 Cookie 的设置,可以使用 [/qq/setcookie/](//#/?id=设置用户cookie)
- 服务器会自动去除mid,br以及songmid之间的**空白字符**
可选参数:
`mid`:歌曲的`songmid`,默认`004O1DHG4MjYOi`
`br`:默认 128
取值意义: 128:mp3 128k,320:mp3 320k,m4a:m4a格式 128k,flac:flac格式 无损,ape:ape格式 无损
示例:[/qq/song/url/?mid=0039MnYb0qxYhV,004Z8Ihr0JIu5s&br=flac](http://iecoxe.top:3500/qq/song/url/?mid=0039MnYb0qxYhV,004Z8Ihr0JIu5s&br=flac)
### 歌词
接口:`/qq/lyric/`
可选参数:`mid` 默认 `004O1DHG4MjYOi`
示例:[/qq/lyric/?mid=004O1DHG4MjYOi](http://iecoxe.top:3500/qq/lyric/?mid=004O1DHG4MjYOi)
### 排行榜
#### 获取榜单列表
接口:`/qq/top/category/`
说明:这个接口数据,包含了榜单名、榜单 id、更新时间、播放量,都是作为下一个接口的请求参数
示例:[/qq/top/category/](http://iecoxe.top:3500/qq/top/category/)
#### 获取榜单详情
接口:`/qq/top/`
可选参数:
`topId`: 默认 26,从上面的`/top/category/`中取值
`limit`: 默认 200 // 部分接口不支持这个字段,所以这里默认选择200
`period`: 榜单的时间,从上面的 `/top/category/` 中取值,不填默认返回 **最新** 的排行榜数据
`offset`:每一页返回的歌曲数量,默认 1
返回数据说明
`time`: 当前榜单的发布时间,可能是天,也可能是周
```
timeType`: 当前榜单的时间格式 `YYYY_W` 或 `YYYY-MM-DD
```
`rank`: 在榜单的排名
`rankType`: 1 上升,2 减少,3 持平,4 新歌,6 上升百分比
`rankValue`: 排名改变值
示例:[/qq/top/?topId=26](http://iecoxe.top:3500/qq/top/?topId=26)
### Cookie
#### 设置服务器Cookie(POST)
接口:`/qq/setcookie/`
说明:具有 QQ 绿钻的用户,通过浏览器查看 Cookie ,通�
Yuki-^_^
- 粉丝: 3112
- 资源: 4587
最新资源
- OfficeVBA宏使用宏实现表格中根据一列分类拆分到对应的sheet表中V2
- 大作业课设基于java swing实现的酒店管理系统源码+数据库+文档说明
- 全驱动船舶轨迹跟踪自适应动态面滑模控制;带有扰动观测器;圆轨迹和直线轨迹;自适应滑模;动态面控制
- 光储直流微电网能量管理 系统主要由光伏发电模块、mppt控制模块、混合储能系统模块、直流负载模块、改进前的soc限值管理控制模块、改进后的SOC限值管理控制模块和hess能量管理控制模块 光伏发电
- Java毕业设计基于Springboot+Vue的校园二手商城系统源码+数据库
- 最新全工具版本Qt+OpenCV通用视觉框架全套源码 工具可扩展 除了opencv和相机sdk的dll,其它所有算法均无封装,可以根据自己需要补充自己的工具 基于 Qt5.12.12 + VS2
- 基于springboot的校园市场平台源码+数据库(Java毕业设计项目)
- 格子玻尔兹曼 LBM 液滴撞击液膜
- 两种基于滑模观测器的PMSM无感矢量控制仿真(开关设置区分): 1. PLL+滑模(降低高频开关噪声); 2. arctan+滑模; 有配套算法原理资料 软件类产品,纯手工搭建,仅供学习参考
- 永磁同步电机的MTPA最大转矩电流比控制算法的仿真模型,有详细的算法设计文档 1. 永磁同步电机的数学模型; 2. 永磁同步电机的矢量控制原理; 3. 最大转矩电流比控制; 4. 前馈补偿提高抗负载
- MATLAB代码:基于二阶锥优化的电气综合能源系统多目标无功优化 关键词:配电网 无功优化 二阶锥 电气综合能源系统 仿真平台:MATLAB+CPLEX 平台 主要内容:代码主要做的是主动配电网的
- MATLAB代码:基于多目标遗传算法的分布式电源选址定容研究 关键词:分布式电源 选址定容 多目标遗传算法 参考文档:《店主自写文档》基本复现; 仿真平台:MATLAB 主要内容:代码主要做的
- 基于springboot的校园市场平台源码+数据库(Java毕业设计项目)
- 基于非对称纳什谈判的多微网电能共享运行优化策略 关键词:纳什谈判 合作博弈 微网 电转气-碳捕集 P2P电能交易交易 参考文档:《基于非对称纳什谈判的多微网电能共享运行优化策略》完美复现
- kettle - spoon 9.4 集成Elasticsearch 8.3插件 支持Elasticsearch7,8
- stm32电机控制器,嵌入式单片机仿真,keil+proteus,带报告 1、keil源文件 2、proteus仿真 3、报告(26页详细报告,含ad原理图,pcb等) 设计一个直流电机控制系统,可控
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈