mirror of
https://github.com/ClovertaTheTrilobita/SanYeCao-Nonebot.git
synced 2026-04-01 22:04:51 +00:00
网易云音乐登录修复
This commit is contained in:
parent
6bd163a15b
commit
243159939f
4 changed files with 58 additions and 51 deletions
|
|
@ -7,6 +7,7 @@ nonebot2[websockets]
|
||||||
sqlalchemy~=2.0.34
|
sqlalchemy~=2.0.34
|
||||||
autopep8
|
autopep8
|
||||||
graiax-silkcoder
|
graiax-silkcoder
|
||||||
|
graiax-silkcoder[ffempeg]
|
||||||
Crypto
|
Crypto
|
||||||
fake_useragent
|
fake_useragent
|
||||||
pycryptodome
|
pycryptodome
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ def encSecKey():
|
||||||
|
|
||||||
|
|
||||||
save_path = os.getcwd()+'/src/music/netease_music'
|
save_path = os.getcwd()+'/src/music/netease_music'
|
||||||
|
qrcode_path = os.getcwd()+'/src/music'
|
||||||
|
|
||||||
|
|
||||||
# 判断cookie是否有效
|
# 判断cookie是否有效
|
||||||
|
|
@ -85,12 +86,18 @@ def netease_cloud_music_is_login(session):
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
csrf_token = session.cookies.get('__csrf')
|
csrf_token = session.cookies.get('__csrf')
|
||||||
c = str({'csrf_token': csrf_token})
|
if csrf_token is None:
|
||||||
|
return session, False
|
||||||
|
else:
|
||||||
try:
|
try:
|
||||||
loginurl = session.post('https://music.163.com/weapi/w/nuser/account/get?csrf_token={}'.format(csrf_token),data={'params': params(None), 'encSecKey': encSecKey()}, headers=headers).json()
|
loginurl = session.post(f'https://music.163.com/weapi/w/nuser/account/get?csrf_token={csrf_token}',data={'params': params(None), 'encSecKey': encSecKey()}, headers=headers).json()
|
||||||
|
print(loginurl)
|
||||||
|
print(loginurl['code'])
|
||||||
if '200' in str(loginurl['code']):
|
if '200' in str(loginurl['code']):
|
||||||
|
print('登录成功')
|
||||||
return session, True
|
return session, True
|
||||||
else:
|
else:
|
||||||
|
print('登录失败')
|
||||||
return session, False
|
return session, False
|
||||||
except BaseException:
|
except BaseException:
|
||||||
return session, False
|
return session, False
|
||||||
|
|
@ -120,16 +127,8 @@ def create_qr_code(unikey):
|
||||||
img = qr.make_image()
|
img = qr.make_image()
|
||||||
a = BytesIO()
|
a = BytesIO()
|
||||||
img.save(a, 'png')
|
img.save(a, 'png')
|
||||||
png = a.getvalue()
|
img.save(os.path.join(qrcode_path, 'qrcode.png'))
|
||||||
# 将字节数据转换为图像
|
return qrcode_path + '/qrcode.png'
|
||||||
img = Image.open(BytesIO(png))
|
|
||||||
# 保存图像到本地文件
|
|
||||||
img.save(save_path,'qrcode.png')
|
|
||||||
a.close()
|
|
||||||
return os.getcwd()+'/'+save_path+'/qrcode.png'
|
|
||||||
# # 打开二维码进行扫码操作
|
|
||||||
# t = showpng(png)
|
|
||||||
# t.start()
|
|
||||||
|
|
||||||
|
|
||||||
# 检查二维码状态是否被扫描
|
# 检查二维码状态是否被扫描
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
|
import random
|
||||||
from nonebot.rule import Rule, to_me
|
from nonebot.rule import Rule, to_me
|
||||||
from nonebot import on_message
|
from nonebot import on_message
|
||||||
from nonebot.adapters.qq import Message
|
from nonebot.adapters.qq import Message
|
||||||
|
|
@ -17,4 +17,12 @@ rule = Rule(check_value_in_menu)
|
||||||
check = on_message(rule=to_me() & rule ,block=True)
|
check = on_message(rule=to_me() & rule ,block=True)
|
||||||
@check.handle()
|
@check.handle()
|
||||||
async def check(bot: Bot, event: Event):
|
async def check(bot: Bot, event: Event):
|
||||||
await bot.send(message=Message("是什么呢?猫猫没有识别到,喵~"+'\n'+"(๑>ڡ<)☆ 请注意命令后要加空格哦~"),event=event)
|
await bot.send(message=Message(random.choice(text_list)),event=event)
|
||||||
|
|
||||||
|
text_list = [
|
||||||
|
"是什么呢?猫猫没有识别到,喵~"+'\n'+"(๑>ڡ<)☆ 给个准信,别让我瞎猜",
|
||||||
|
"是想让我干嘛呢?猫猫一头雾水,喵~" + '\n' + "(๑•̀ㅂ•́)و✧ 直接跟我说,别这么含蓄,喵~",
|
||||||
|
"是啥意思呀?猫猫完全没搞懂,喵~" + '\n' + "(๑・.・๑) 别折腾我啦,说明白,喵~",
|
||||||
|
"是特殊信号?猫猫听不懂,喵~" + '\n' + "(๑・̀︶・́)و 下个明确指令,喵~",
|
||||||
|
"难道是新指令?猫猫一脸茫然,喵~" + '\n' + "(๑>ڡ<)☆ 说详细点,别这么隐晦,喵~",
|
||||||
|
]
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
import pickle
|
import pickle
|
||||||
import time
|
import time
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
from lazy_object_proxy.utils import await_
|
||||||
from nonebot import on_command
|
from nonebot import on_command
|
||||||
from nonebot.rule import to_me
|
from nonebot.rule import to_me
|
||||||
from nonebot.adapters.qq import MessageSegment,MessageEvent
|
from nonebot.adapters.qq import MessageSegment,MessageEvent
|
||||||
|
|
@ -11,7 +13,34 @@ music = on_command("点歌", rule=to_me(), priority=10, block=True)
|
||||||
async def handle_function(msg: MessageEvent):
|
async def handle_function(msg: MessageEvent):
|
||||||
keyword = msg.get_plaintext().replace("/点歌", "").strip(" ")
|
keyword = msg.get_plaintext().replace("/点歌", "").strip(" ")
|
||||||
#获取登录信息 可以获取更换高音质
|
#获取登录信息 可以获取更换高音质
|
||||||
session = cloud_music_login()
|
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:
|
||||||
|
await music.send("登录失效,请联系管理员进行登录")
|
||||||
|
unikey = get_qr_key(session)
|
||||||
|
path = create_qr_code(unikey)
|
||||||
|
"""是否要发送到QQ上面登录 """
|
||||||
|
# await music.send(MessageSegment.file_image(Path(path)))
|
||||||
|
while True:
|
||||||
|
code = 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:
|
||||||
|
print('其他:', code)
|
||||||
|
time.sleep(2)
|
||||||
|
with open('cloud_music_cookies.cookie', 'wb') as f:
|
||||||
|
pickle.dump(session.cookies, f)
|
||||||
|
|
||||||
#搜索歌曲
|
#搜索歌曲
|
||||||
song_id,song_name,singer,song_url = netease_music_search(keyword,session)
|
song_id,song_name,singer,song_url = netease_music_search(keyword,session)
|
||||||
if song_id is None:
|
if song_id is None:
|
||||||
|
|
@ -26,35 +55,5 @@ async def handle_function(msg: MessageEvent):
|
||||||
await music.finish()
|
await music.finish()
|
||||||
|
|
||||||
|
|
||||||
def cloud_music_login():
|
|
||||||
#判断返回cookie是否有效
|
|
||||||
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:
|
|
||||||
unikey = get_qr_key(session)
|
|
||||||
path = create_qr_code(unikey)
|
|
||||||
music.send(MessageSegment.file_image(Path(path)))
|
|
||||||
while True:
|
|
||||||
code = 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:
|
|
||||||
print('其他:', code)
|
|
||||||
time.sleep(2)
|
|
||||||
with open('cloud_music_cookies.cookie', 'wb') as f:
|
|
||||||
pickle.dump(session.cookies, f)
|
|
||||||
return session
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue