SanYeCao-Nonebot/src/plugins/cloud_music.py
SlyAimer d485a2f8ed fix(cloud_music): 修复登录逻辑
- 移除了多余的 print 语句
- 添加了 break 语句以正确处理登录失败情况

(cherry picked from commit fcc8468984)
2025-03-12 17:16:01 +08:00

73 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pickle
import time
from pathlib import Path
from nonebot import on_command
from nonebot.rule import to_me
from nonebot.adapters.qq import MessageSegment,MessageEvent
from src.clover_music.cloud_music.cloud_music import *
from src.clover_image.delete_file import delete_file
music = on_command("点歌", rule=to_me(), priority=10)
@music.handle()
async def handle_function(msg: MessageEvent):
keyword = msg.get_plaintext().replace("/点歌", "").strip(" ")
if keyword == "":
await music.finish("\n请输入“/点歌+歌曲名”喔🎶")
#获取登录信息 可以获取更换高音质
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,user_id = await netease_cloud_music_is_login(session)
if not status:
await music.send("登录失效,请联系管理员进行登录")
unikey = await get_qr_key(session)
path = await create_qr_code(unikey)
"""是否要发送到QQ上面登录 """
# await clover_music.send(MessageSegment.file_image(Path(path)))
"""是否要发送到QQ上面登录 """
while True:
code = await check_qr_code(unikey, session)
if '801' in str(code):
print('二维码未失效,请扫码!')
elif '802' in str(code):
print('已扫码,请确认!')
elif '803' in str(code):
print('已确认,登入成功!')
break
else:
break;
time.sleep(2)
with open('cloud_music_cookies.cookie', 'wb') as f:
pickle.dump(session.cookies, f)
#搜索歌曲
song_id,song_name,singer,song_url = await netease_music_search(keyword,session)
song_name = str(song_name).replace(".", "·").replace("/", "")
if song_id is None:
await music.finish("\n没有找到歌曲或检索到的歌曲均为付费喔qwq\n这绝对不是我的错,绝对不是!")
else:
await music.send(MessageSegment.text(f" 来源:网易云音乐\n歌曲:{song_name} - {singer}\n请稍等喔🎵"))
#返回转换后的歌曲路径
output_silk_path = await netease_music_download(song_id, song_name, singer,session)
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)))
#删除临时文件
await delete_file(output_silk_path)
await music.finish()