Fix Load Error
This commit is contained in:
parent
f84d8ccf05
commit
42f20fbc89
@ -7,6 +7,7 @@ from multiprocessing import Process, Queue
|
|||||||
from queue import Empty
|
from queue import Empty
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
|
import mutagen.mp3
|
||||||
from progress.bar import Bar
|
from progress.bar import Bar
|
||||||
from Cryptodome.Cipher import AES
|
from Cryptodome.Cipher import AES
|
||||||
from mutagen import File, flac
|
from mutagen import File, flac
|
||||||
@ -19,7 +20,10 @@ from modules.utils.inputs import cinput, rinput
|
|||||||
|
|
||||||
def load_information_from_song(path) -> str | dict:
|
def load_information_from_song(path) -> str | dict:
|
||||||
"""从音乐文件中的 Comment 字段获取 163 key 并解密返回歌曲信息"""
|
"""从音乐文件中的 Comment 字段获取 163 key 并解密返回歌曲信息"""
|
||||||
file = File(path) # 使用 mutagen 获取歌曲信息
|
try:
|
||||||
|
file = File(path) # 使用 mutagen 获取歌曲信息
|
||||||
|
except mutagen.mp3.HeaderNotFoundError:
|
||||||
|
return "not_a_music"
|
||||||
if os.path.splitext(path)[-1] == ".mp3": # 当文件为 mp3 时使用 ID3 格式读取
|
if os.path.splitext(path)[-1] == ".mp3": # 当文件为 mp3 时使用 ID3 格式读取
|
||||||
if file.tags.get("COMM::XXX"):
|
if file.tags.get("COMM::XXX"):
|
||||||
if file.tags["COMM::XXX"].text[0][:7] == "163 key":
|
if file.tags["COMM::XXX"].text[0][:7] == "163 key":
|
||||||
@ -133,15 +137,15 @@ def load_and_decrypt_from_ncm(file_path, target_dir) -> dict: # nondanee的源
|
|||||||
|
|
||||||
# 对解密后的文件进行信息补全
|
# 对解密后的文件进行信息补全
|
||||||
if meta_data["format"] == "mp3": # 针对 mp3 使用 ID3 进行信息补全
|
if meta_data["format"] == "mp3": # 针对 mp3 使用 ID3 进行信息补全
|
||||||
audio = ID3(os.path.join(target_dir, os.path.splitext(file_path.split("/")[-1])[0] + ".mp3"))
|
audio = File(os.path.join(target_dir, os.path.splitext(file_path.split("/")[-1])[0] + ".mp3"))
|
||||||
artists = []
|
artists = []
|
||||||
for i in meta_data["artist"]:
|
for i in meta_data["artist"]:
|
||||||
artists.append(i[0])
|
artists.append(i[0])
|
||||||
audio["TPE1"] = TPE1(encoding=3, text=artists) # 插入歌手
|
audio.tags["TPE1"] = TPE1(encoding=3, text=artists) # 插入歌手
|
||||||
audio["APIC"] = APIC(encoding=3, mime='image/jpg', type=3, desc='', data=image_data) # 插入封面
|
audio.tags["APIC"] = APIC(encoding=3, mime='image/jpg', type=3, desc='', data=image_data) # 插入封面
|
||||||
audio["COMM::XXX"] = COMM(encoding=3, lang='XXX', desc='', text=[comment.decode("utf-8")]) # 插入 163 key 注释
|
audio.tags["COMM::XXX"] = COMM(encoding=3, lang='XXX', desc='', text=[comment.decode("utf-8")]) # 插入 163 key 注释
|
||||||
audio["TIT2"] = TIT2(encoding=3, text=[meta_data["musicName"]]) # 插入歌曲名
|
audio.tags["TIT2"] = TIT2(encoding=3, text=[meta_data["musicName"]]) # 插入歌曲名
|
||||||
audio["TALB"] = TALB(encoding=3, text=[meta_data["album"]]) # 插入专辑名
|
audio.tags["TALB"] = TALB(encoding=3, text=[meta_data["album"]]) # 插入专辑名
|
||||||
audio.save()
|
audio.save()
|
||||||
elif meta_data["format"] == "flac": # 针对 flac 使用 FLAC 进行信息补全
|
elif meta_data["format"] == "flac": # 针对 flac 使用 FLAC 进行信息补全
|
||||||
audio = flac.FLAC(os.path.join(target_dir, os.path.splitext(file_path.split("/")[-1])[0] + ".flac"))
|
audio = flac.FLAC(os.path.join(target_dir, os.path.splitext(file_path.split("/")[-1])[0] + ".flac"))
|
||||||
@ -193,6 +197,9 @@ def get_lyric_from_folder(self):
|
|||||||
elif result == "not_a_normal_music":
|
elif result == "not_a_normal_music":
|
||||||
fails += 1
|
fails += 1
|
||||||
print(f"文件 \"{i}\" 内 163 key 不是一个普通音乐文件,这可能是一个电台曲目")
|
print(f"文件 \"{i}\" 内 163 key 不是一个普通音乐文件,这可能是一个电台曲目")
|
||||||
|
elif result == "not_a_music":
|
||||||
|
fails += 1
|
||||||
|
print(f"文件 \"{i}\" 不是一个音乐文件,请检查该文件是否正常")
|
||||||
else:
|
else:
|
||||||
musics.append({"id": result['musicId'], "name": result["musicName"], "artists": result["artist"]})
|
musics.append({"id": result['musicId'], "name": result["musicName"], "artists": result["artist"]})
|
||||||
elif ext == ".ncm": # 对于 ncm 先加入到列表,等待解密
|
elif ext == ".ncm": # 对于 ncm 先加入到列表,等待解密
|
||||||
|
Loading…
Reference in New Issue
Block a user