mirror of
https://github.com/TeamPGM/PagerMaid_Plugins.git
synced 2024-11-29 04:56:47 +00:00
规范化代码
This commit is contained in:
parent
bf7d8d04cb
commit
2d7c242085
@ -153,7 +153,8 @@ async def nem(context):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from Crypto.Cipher import AES
|
from Crypto.Cipher import AES
|
||||||
AES.new("0CoJUm6Qyw8W8jud".encode('utf-8'), AES.MODE_CBC, "0102030405060708".encode('utf-8'))
|
AES.new("0CoJUm6Qyw8W8jud".encode('utf-8'),
|
||||||
|
AES.MODE_CBC, "0102030405060708".encode('utf-8'))
|
||||||
ccimported = True
|
ccimported = True
|
||||||
except ImportError:
|
except ImportError:
|
||||||
ccimported = False
|
ccimported = False
|
||||||
@ -161,16 +162,11 @@ async def nem(context):
|
|||||||
name = info['title'].replace('/', " ") + ".mp3"
|
name = info['title'].replace('/', " ") + ".mp3"
|
||||||
if ccimported: # 尝试使用高清音质下载
|
if ccimported: # 尝试使用高清音质下载
|
||||||
songid = str(info['id'])
|
songid = str(info['id'])
|
||||||
|
|
||||||
class WangyiyunDownload(object):
|
class WangyiyunDownload(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# "爱心", "女孩", "惊恐", "大笑"的值
|
|
||||||
# 对应的js --> bqL0x(["爱心", "女孩", "惊恐", "大笑"])
|
|
||||||
self.key = '0CoJUm6Qyw8W8jud'
|
self.key = '0CoJUm6Qyw8W8jud'
|
||||||
# "流泪", "强"的值
|
|
||||||
# 对应的js --> bqL0x(["流泪", "强"])
|
|
||||||
self.public_key = "010001"
|
self.public_key = "010001"
|
||||||
# 一串表情的值(省略,对应的js --> Yb5g.md)
|
|
||||||
# 对应的js --> bqL0x(Yb5g.md)
|
|
||||||
self.modulus = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7'
|
self.modulus = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7'
|
||||||
# 偏移量
|
# 偏移量
|
||||||
self.iv = "0102030405060708"
|
self.iv = "0102030405060708"
|
||||||
@ -192,7 +188,8 @@ async def nem(context):
|
|||||||
for i in range(16):
|
for i in range(16):
|
||||||
# random.uniform(0, 1) * len(string): 生成一个实数,范围在0 <= n < len(string)
|
# random.uniform(0, 1) * len(string): 生成一个实数,范围在0 <= n < len(string)
|
||||||
# math.floor(n): 将n向下取整
|
# math.floor(n): 将n向下取整
|
||||||
n = math.floor(random.uniform(0, 1) * len(string))
|
n = math.floor(
|
||||||
|
random.uniform(0, 1) * len(string))
|
||||||
# 从string中取出下标为n的字符拼接到random_num中
|
# 从string中取出下标为n的字符拼接到random_num中
|
||||||
random_num += string[n]
|
random_num += string[n]
|
||||||
# 返回16位随机数字符串
|
# 返回16位随机数字符串
|
||||||
@ -206,10 +203,12 @@ async def nem(context):
|
|||||||
# 先将16位随机数字符串倒序并以utf-8编码
|
# 先将16位随机数字符串倒序并以utf-8编码
|
||||||
random_num = random_num[::-1].encode('utf-8')
|
random_num = random_num[::-1].encode('utf-8')
|
||||||
# 然后再将其以hex(16进制)编码
|
# 然后再将其以hex(16进制)编码
|
||||||
random_num = codecs.encode(random_num, 'hex_codec')
|
random_num = codecs.encode(
|
||||||
|
random_num, 'hex_codec')
|
||||||
# 加密(三者均要从16进制转换为10进制)
|
# 加密(三者均要从16进制转换为10进制)
|
||||||
# int(n, 16) --> 将16进制字符串n转换为10进制
|
# int(n, 16) --> 将16进制字符串n转换为10进制
|
||||||
encryption = int(random_num, 16) ** int(self.public_key, 16) % int(self.modulus, 16)
|
encryption = int(
|
||||||
|
random_num, 16) ** int(self.public_key, 16) % int(self.modulus, 16)
|
||||||
# 将加密后的数据转换为16进制字符串
|
# 将加密后的数据转换为16进制字符串
|
||||||
encryption = format(encryption, 'x')
|
encryption = format(encryption, 'x')
|
||||||
# 返回加密后的字符串
|
# 返回加密后的字符串
|
||||||
@ -228,7 +227,7 @@ async def nem(context):
|
|||||||
pad = (16 - len(msg) % 16)
|
pad = (16 - len(msg) % 16)
|
||||||
# 补全
|
# 补全
|
||||||
msg = msg + pad * chr(pad)
|
msg = msg + pad * chr(pad)
|
||||||
# 这里需要将key,iv和msg均以utf-8编码
|
# 将key,iv和msg均以utf-8编码
|
||||||
key = key.encode('utf-8')
|
key = key.encode('utf-8')
|
||||||
iv = iv.encode('utf-8')
|
iv = iv.encode('utf-8')
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
@ -238,7 +237,7 @@ async def nem(context):
|
|||||||
encrypt_aes = encryptor.encrypt(msg)
|
encrypt_aes = encryptor.encrypt(msg)
|
||||||
# 先将加密后的值进行base64编码
|
# 先将加密后的值进行base64编码
|
||||||
encrypt_text = base64.encodebytes(encrypt_aes)
|
encrypt_text = base64.encodebytes(encrypt_aes)
|
||||||
# 再将其转换为utf-8字符串
|
# 将其转换为utf-8字符串
|
||||||
encrypt_text = str(encrypt_text, 'utf-8')
|
encrypt_text = str(encrypt_text, 'utf-8')
|
||||||
# 返回加密后的字符串
|
# 返回加密后的字符串
|
||||||
return encrypt_text
|
return encrypt_text
|
||||||
@ -249,14 +248,17 @@ async def nem(context):
|
|||||||
# 先生成16位随机数字符串
|
# 先生成16位随机数字符串
|
||||||
random_num = self.set_random_num()
|
random_num = self.set_random_num()
|
||||||
# 生成encSecKey
|
# 生成encSecKey
|
||||||
encSecKey = self.RSA_encrypt(random_num=random_num)
|
encSecKey = self.RSA_encrypt(
|
||||||
|
random_num=random_num)
|
||||||
# 调用两次AES加密生成params
|
# 调用两次AES加密生成params
|
||||||
# 先初始化歌曲song_info
|
# 先初始化歌曲song_info
|
||||||
song_info = '{"ids":"[%s]","level":"exhigh","encodeType":"mp3","csrf_token":"477c1bd99fddedb3adc074f47fee2d35"}' % song_id
|
song_info = '{"ids":"[%s]","level":"exhigh","encodeType":"mp3","csrf_token":"477c1bd99fddedb3adc074f47fee2d35"}' % song_id
|
||||||
# 第一次加密,传入encText, key和iv
|
# 第一次加密,传入encText, key和iv
|
||||||
first_encryption = self.AES_encrypt(msg=song_info, key=self.key, iv=self.iv)
|
first_encryption = self.AES_encrypt(
|
||||||
|
msg=song_info, key=self.key, iv=self.iv)
|
||||||
# 第二次加密, 传入first_encryption, random_num和iv
|
# 第二次加密, 传入first_encryption, random_num和iv
|
||||||
encText = self.AES_encrypt(msg=first_encryption, key=random_num, iv=self.iv)
|
encText = self.AES_encrypt(
|
||||||
|
msg=first_encryption, key=random_num, iv=self.iv)
|
||||||
# 生成data
|
# 生成data
|
||||||
data = {
|
data = {
|
||||||
'params': encText,
|
'params': encText,
|
||||||
@ -271,9 +273,11 @@ async def nem(context):
|
|||||||
# 输入歌曲song_id
|
# 输入歌曲song_id
|
||||||
self.song_id = songid
|
self.song_id = songid
|
||||||
# 获取data
|
# 获取data
|
||||||
data = self.construct_data(song_id=self.song_id)
|
data = self.construct_data(
|
||||||
|
song_id=self.song_id)
|
||||||
# 发送请求
|
# 发送请求
|
||||||
request = requests.post(url=self.url, headers=self.headers, data=data)
|
request = requests.post(
|
||||||
|
url=self.url, headers=self.headers, data=data)
|
||||||
# 初始化real_url
|
# 初始化real_url
|
||||||
real_url = ''
|
real_url = ''
|
||||||
# 处理返回信息
|
# 处理返回信息
|
||||||
@ -300,13 +304,14 @@ async def nem(context):
|
|||||||
else:
|
else:
|
||||||
file = name
|
file = name
|
||||||
# 开始下载
|
# 开始下载
|
||||||
content = requests.get(url=real_url, headers=self.headers).content
|
content = requests.get(
|
||||||
|
url=real_url, headers=self.headers).content
|
||||||
with open(file, 'wb') as fp:
|
with open(file, 'wb') as fp:
|
||||||
fp.write(content)
|
fp.write(content)
|
||||||
try:
|
try:
|
||||||
WangyiyunDownload().download()
|
WangyiyunDownload().download()
|
||||||
except:
|
except:
|
||||||
pass
|
ccimported = False
|
||||||
if not exists(name):
|
if not exists(name):
|
||||||
ccimported = False
|
ccimported = False
|
||||||
|
|
||||||
@ -316,11 +321,13 @@ async def nem(context):
|
|||||||
if music.status_code == 200:
|
if music.status_code == 200:
|
||||||
music = json.loads(music.content)
|
music = json.loads(music.content)
|
||||||
if not music['data']['url']:
|
if not music['data']['url']:
|
||||||
music = requests.request("GET", "https://music.163.com/song/media/outer/url?id=" + str(info['id']) + ".mp3", headers= headers)
|
music = requests.request(
|
||||||
|
"GET", "https://music.163.com/song/media/outer/url?id=" + str(info['id']) + ".mp3", headers=headers)
|
||||||
if music.status_code != 200:
|
if music.status_code != 200:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
music = requests.request("GET", music['data']['url'] , headers=headers)
|
music = requests.request(
|
||||||
|
"GET", music['data']['url'], headers=headers)
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -344,13 +351,15 @@ async def nem(context):
|
|||||||
await bot.send_message(context.chat_id, f"<strong>【{info['title']}】</strong>\n" + "歌曲获取失败,可能歌曲为VIP专属,或受到地区版权限制。\n" + res, parse_mode='html', link_preview=True)
|
await bot.send_message(context.chat_id, f"<strong>【{info['title']}】</strong>\n" + "歌曲获取失败,可能歌曲为VIP专属,或受到地区版权限制。\n" + res, parse_mode='html', link_preview=True)
|
||||||
return
|
return
|
||||||
if imported is True:
|
if imported is True:
|
||||||
imagedata = requests.get(info['albumpic'], headers=headers).content
|
imagedata = requests.get(
|
||||||
|
info['albumpic'], headers=headers).content
|
||||||
tag = eyed3.load(name).tag
|
tag = eyed3.load(name).tag
|
||||||
tag.artist = info['artist']
|
tag.artist = info['artist']
|
||||||
tag.title = info['title']
|
tag.title = info['title']
|
||||||
tag.album = info['album']
|
tag.album = info['album']
|
||||||
tag.images.remove('')
|
tag.images.remove('')
|
||||||
tag.images.set(3,imagedata,"image/jpeg",u"you can put a description here")
|
tag.images.set(3, imagedata, "image/jpeg",
|
||||||
|
u"you can put a description here")
|
||||||
tag.save(
|
tag.save(
|
||||||
version=eyed3.id3.ID3_DEFAULT_VERSION, encoding='utf-8')
|
version=eyed3.id3.ID3_DEFAULT_VERSION, encoding='utf-8')
|
||||||
await context.edit(f"{title}上传中 . . .")
|
await context.edit(f"{title}上传中 . . .")
|
||||||
|
Loading…
Reference in New Issue
Block a user