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机器人插件八:点歌(网易云音乐)相关推荐

  1. Nonebot QQ机器人插件三:王者荣耀猜英雄游戏

    Nonebot QQ机器人插件三:王者荣耀猜英雄游戏 1. 数据录入 首先需要获取相应数据这里可以直接访问**「heros.xlsx」https://www.aliyundrive.com/s/3iN ...

  2. Nonebot QQ机器人插件五:随机网易云音乐

    QQ机器人插件五:随机网易云音乐 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typ ...

  3. Nonebot QQ机器人插件九:qq群聊天记录词云图

    QQ机器人插件九:qq群聊天记录词云图 1. 将实时聊天记录保存到数据库 安装数据库可自行到网上查找,本文仅使用mysql数据库为例.linux下mysql数据库安装可参考(59条消息) Linux安 ...

  4. Nonebot QQ机器人插件六:随机笑话(语音)

    QQ机器人插件六:随机笑话(语音) 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.ty ...

  5. Nonebot QQ机器人插件四:每日一图

    QQ机器人插件四:每日一图 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typing ...

  6. 在应用开发中,网易云音乐如何兼顾质量和效益

    在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...

  7. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)

    Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...

  8. 在应用开发中,网易云音乐如何兼顾质量和效益 1

    在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...

  9. [前端] 网易云音乐外链播放器不能正常显示的问题之解决方案

    场景:要在页面中插入这样的一个小插件: 参考网易云音乐提供的<iframe>外链播放器代码,却无法正常显示. 方法极其简单:只要在<iframe>标签的src属性中的//前加上 ...

  10. 从零开始实现实时多人点歌机器人 (来自网易云音乐)

    偶然的机会,发现了B站的点歌机器人,觉得挺好玩的就自己做了一个简易版点歌机器人,预览如下: 功能 使用websocket,支持多人同时点歌,发送弹幕聊天 具有搜索suggestion,用户体验更佳 点 ...

最新文章

  1. iview template模式_使用Iview Menu 导航菜单(非 template/render 模式)
  2. was not declared in this scope
  3. 苹果新一代 AirPods 能活过两年吗?
  4. 【行业专题报告】 汽车、二手车-专题资料
  5. 拼多多签名认证Sign
  6. 《华为CC++语言安全规范》笔记
  7. 2021青岛十九中高考成绩查询,@青岛高考生 2020新高考模拟考可以查成绩了
  8. c语言cfile用法,CFile和CArchive的使用
  9. R语言—自动做统计学表格
  10. boss直聘python_python分析BOSS直聘的某个招聘岗位数据
  11. 网优谷给大家简介SEO
  12. python实训总结泰坦尼克号_Python-数据清洗与分析案例之泰坦尼克号(一)
  13. 模拟电路----电压跟随器与功率放大器(转)
  14. springboot 7天签到功能设计 数据库表设计 加代码
  15. 基于JavaWeb实现的汽车维修管理系统
  16. linux的krb5文件放哪里,7.5.2 krb5.conf配置文件配置示例
  17. 在直播中,美颜滤镜SDK起到了什么作用,是在哪一阶段起的作用?
  18. 【Pr】如何在预览的时候预渲染视频
  19. Pix4Dmapper 正射全景生成
  20. android 限速工具,Android下载器之限速篇

热门文章

  1. U8glib如何显示中文
  2. 计算机组成原理4位快速加法器
  3. android手机碎片管理,android手机需要进行磁盘碎片整理么
  4. ntds(600)ntdsa:系统错误1453配额不足及恢复过程记录
  5. 新世纪10年100个好东西
  6. 看了这篇文章,再也不用纠结该选OV证书还是EV证书了
  7. c语言身份证号码验证
  8. [青海、甘南之行散记] 当风吹过高原,一颗心在说话
  9. 《王二丫的甜品店》用户隐私政策
  10. ppi 各代iphone_iPhone全机型尺寸分辨率PPI大全