SanYeCao-Nonebot/src/qq_plugins/cloudMusic.py

72 lines
2.7 KiB
Python
Raw Normal View History

2025-01-04 16:17:12 +00:00
import pickle
2025-01-14 10:57:59 +00:00
import time
2025-01-04 16:17:12 +00:00
from pathlib import Path
from nonebot import on_command
from nonebot.rule import to_me
from nonebot.adapters.qq import MessageSegment,MessageEvent
2025-01-14 10:57:59 +00:00
from src.music.cloud_music.cloud_music import *
2025-01-04 16:17:12 +00:00
music = on_command("点歌", rule=to_me(), priority=10, block=True)
@music.handle()
async def handle_function(msg: MessageEvent):
keyword = msg.get_plaintext().replace("/点歌", "").strip(" ")
2025-01-23 16:43:26 +00:00
if keyword == "":
await music.finish("\n请输入“/点歌+歌曲名”喔🎶")
2025-01-04 16:17:12 +00:00
#获取登录信息 可以获取更换高音质
session = requests.session()
if not os.path.exists('cloud_music_cookies.cookie'):
with open('cloud_music_cookies.cookie', 'wb') as f:
pickle.dump(session.cookies, f)
# 读取 cookie
session.cookies = pickle.load(open('cloud_music_cookies.cookie', 'rb'))
session, status = netease_cloud_music_is_login(session)
if not status:
2025-01-14 16:28:26 +00:00
await music.send("登录失效,请联系管理员进行登录")
2025-01-04 16:17:12 +00:00
unikey = get_qr_key(session)
path = create_qr_code(unikey)
2025-01-15 16:45:24 +00:00
2025-01-14 16:28:26 +00:00
"""是否要发送到QQ上面登录 """
# await music.send(MessageSegment.file_image(Path(path)))
2025-01-15 16:45:24 +00:00
"""是否要发送到QQ上面登录 """
2025-01-14 16:28:26 +00:00
while True:
code = check_qr_code(unikey, session)
2025-01-04 16:17:12 +00:00
if '801' in str(code):
print('二维码未失效,请扫码!')
elif '802' in str(code):
print('已扫码,请确认!')
elif '803' in str(code):
print('已确认,登入成功!')
break
else:
print('其他:', code)
time.sleep(2)
with open('cloud_music_cookies.cookie', 'wb') as f:
pickle.dump(session.cookies, f)
2025-01-14 16:28:26 +00:00
#搜索歌曲
song_id,song_name,singer,song_url = netease_music_search(keyword,session)
if song_id is None:
await music.finish("\n没有找到歌曲或检索到的歌曲均为付费喔qwq\n这绝对不是我的错,绝对不是!")
2025-01-14 16:28:26 +00:00
else:
2025-01-24 12:27:49 +00:00
await music.send(MessageSegment.text(f" 来源:网易云音乐\n歌曲:{song_name} - {singer}\n请稍等喔🎵"))
2025-01-14 16:28:26 +00:00
#返回转换后的歌曲路径
output_silk_path = netease_music_download(song_id, song_name, singer,session)
2025-01-26 09:26:07 +00:00
if output_silk_path == -1:
await music.send("歌曲音频获取失败:登录信息失效。")
elif output_silk_path is None:
await music.send("歌曲音频获取失败了Σヽ(゚Д ゚; )ノ,请重试。")
else:
await music.send(MessageSegment.file_audio(Path(output_silk_path)))
2025-01-14 16:28:26 +00:00
#删除临时文件
netease_music_delete()
await music.finish()
2025-01-04 16:17:12 +00:00