Nonebot QQ机器人插件八:点歌(网易云音乐)
QQ机器人插件八:点歌(网易云音乐)
1. 搭建自己的网易云api接口或者使用现成的api(https://netease-cloud-music-api-iota-mocha.vercel.app/search?keywords=海阔天空
)
点击Binaryify/NeteaseCloudMusicApi: 网易云音乐 Node.js API service (github.com),将它fork到你自己的仓库。
然后打开
vercel
官网https://vercel.com/,然后点击login。
使用刚才的github账号登陆。
然后新建项目
将刚才fork的项目导入
最后得到自定义的api地址
2. 通过刚才搭建的api获取歌曲id
https://netease-cloud-music-wtc4i4rp7-mzy0727.vercel.app/search?keywords=庐州月
- 通过修改
keywords
后面的歌曲名,获得不同的json
。
{"result":{"songs":[{"id":167850,"name":"庐州月","artists":[{"id":5771,"name":"许嵩","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":16951,"name":"寻雾启示","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1262707200007,"size":9,"copyrightId":14026,"status":1,"picId":34084860473122,"mark":0},"duration":255000,"copyrightId":14026,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1969777581,"name":"庐州月","artists":[{"id":53559442,"name":"暴躁X先生","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":149120781,"name":"抬头看,天上就是光","artist":{"id":0,"name":"","picUrl":null,"alias":
...
提取歌曲id
id = result['result']['songs'][0]['id']
3. 通过歌曲id,返回对应的歌曲
song_id = await get_song_id(song_name)url = f'https://api.vvhan.com/api/music?id={song_id}&type=song&media=netease'res = requests.get(url)result = json.loads(res.text)mp3= result['mp3url'] #音乐链接
4. 完整代码
import nonebotfrom nonebot import on_keyword # 事件响应器函数
from nonebot.typing import T_State #bot使用的对象和字典
from nonebot.adapters.onebot.v11 import Bot,Message,MessageSegment,Event # #Message是使用cq码的必要函数
from nonebot.rule import to_me
from nonebot.matcher import Matcher
from nonebot.adapters import Message
from nonebot.params import Arg, CommandArg, ArgPlainText
import json,urllib,requests # 处理api返回的json数据
from urllib.parse import urlencode
from urllib.request import urlopen__plugin_name__ = 'music_v2'
__plugin_usage__ = '用法: 点歌,返回随机一首音乐卡片。'music_v2 = on_keyword({"点歌"}, rule = to_me())@music_v2.handle()
async def handle_first_receive(matcher: Matcher, args: Message = CommandArg()):plain_text = args.extract_plain_text() # 首次发送命令时跟随的参数,例:/点歌 有何不可,则args为有何不可if plain_text:music_v2.set_arg(("singer",args)) # 如果用户发送了参数则直接赋值@music_v2.got("singer", prompt="你想点什么歌呢?")
async def handle_song(singer: Message = Arg(), song_name: str = ArgPlainText("singer")):song_id = await get_song_id(song_name)url = f'https://api.vvhan.com/api/music?id={song_id}&type=song&media=netease'res = requests.get(url)result = json.loads(res.text)mp3= result['mp3url']await music_v2.send(MessageSegment.record(mp3))# 在这里编写获取歌曲id的函数
async def get_song_id(singer: str) -> str:params = {'keywords': '',}url = 'https://netease-cloud-music-wtc4i4rp7-mzy0727.vercel.app/search'params['keywords'] = singerparams = urlencode(params)url = urlopen('%s?%s' % (url, params))html= url.read()result = json.loads(html)id = result['result']['songs'][0]['id']return id
5. 效果展示
Nonebot QQ机器人插件八:点歌(网易云音乐)相关推荐
- Nonebot QQ机器人插件三:王者荣耀猜英雄游戏
Nonebot QQ机器人插件三:王者荣耀猜英雄游戏 1. 数据录入 首先需要获取相应数据这里可以直接访问**「heros.xlsx」https://www.aliyundrive.com/s/3iN ...
- Nonebot QQ机器人插件五:随机网易云音乐
QQ机器人插件五:随机网易云音乐 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typ ...
- Nonebot QQ机器人插件九:qq群聊天记录词云图
QQ机器人插件九:qq群聊天记录词云图 1. 将实时聊天记录保存到数据库 安装数据库可自行到网上查找,本文仅使用mysql数据库为例.linux下mysql数据库安装可参考(59条消息) Linux安 ...
- Nonebot QQ机器人插件六:随机笑话(语音)
QQ机器人插件六:随机笑话(语音) 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.ty ...
- Nonebot QQ机器人插件四:每日一图
QQ机器人插件四:每日一图 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typing ...
- 在应用开发中,网易云音乐如何兼顾质量和效益
在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...
- Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)
Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...
- 在应用开发中,网易云音乐如何兼顾质量和效益 1
在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...
- [前端] 网易云音乐外链播放器不能正常显示的问题之解决方案
场景:要在页面中插入这样的一个小插件: 参考网易云音乐提供的<iframe>外链播放器代码,却无法正常显示. 方法极其简单:只要在<iframe>标签的src属性中的//前加上 ...
- 从零开始实现实时多人点歌机器人 (来自网易云音乐)
偶然的机会,发现了B站的点歌机器人,觉得挺好玩的就自己做了一个简易版点歌机器人,预览如下: 功能 使用websocket,支持多人同时点歌,发送弹幕聊天 具有搜索suggestion,用户体验更佳 点 ...
最新文章
- iview template模式_使用Iview Menu 导航菜单(非 template/render 模式)
- was not declared in this scope
- 苹果新一代 AirPods 能活过两年吗?
- 【行业专题报告】 汽车、二手车-专题资料
- 拼多多签名认证Sign
- 《华为CC++语言安全规范》笔记
- 2021青岛十九中高考成绩查询,@青岛高考生 2020新高考模拟考可以查成绩了
- c语言cfile用法,CFile和CArchive的使用
- R语言—自动做统计学表格
- boss直聘python_python分析BOSS直聘的某个招聘岗位数据
- 网优谷给大家简介SEO
- python实训总结泰坦尼克号_Python-数据清洗与分析案例之泰坦尼克号(一)
- 模拟电路----电压跟随器与功率放大器(转)
- springboot 7天签到功能设计 数据库表设计 加代码
- 基于JavaWeb实现的汽车维修管理系统
- linux的krb5文件放哪里,7.5.2 krb5.conf配置文件配置示例
- 在直播中,美颜滤镜SDK起到了什么作用,是在哪一阶段起的作用?
- 【Pr】如何在预览的时候预渲染视频
- Pix4Dmapper 正射全景生成
- android 限速工具,Android下载器之限速篇