增加了保存歌词时不保存歌词时间的设定,增加了自动初始化文件夹的功能,修复了设置歌词文件名格式不生效的bug

This commit is contained in:
Onlyacat233 2023-08-09 14:36:46 +08:00
parent c10bd094da
commit 9078104529
23 changed files with 55 additions and 27 deletions

Binary file not shown.

Binary file not shown.

View File

@ -63,7 +63,8 @@ def get_song_lyric(identify: str | int | dict,
path: str, path: str,
lyric_format="%(name)s - %(artists)s", lyric_format="%(name)s - %(artists)s",
allinfo: bool = False, allinfo: bool = False,
bar: CompactBar = None): bar: CompactBar = None,
save_lyrics_time: bool = True):
"""获取歌词 """获取歌词
``identify`` 提供一个歌曲id ``identify`` 提供一个歌曲id
@ -122,6 +123,12 @@ def get_song_lyric(identify: str | int | dict,
return return
else: else:
with open(os.path.join(path, filename), "w", encoding="utf-8") as f: with open(os.path.join(path, filename), "w", encoding="utf-8") as f:
f.write(info["lyric"]) if not save_lyrics_time:
bprint(Fore.GREEN + "\t--> 歌词下载完成!被保存在" + Style.RESET_ALL + f"{os.path.join(path, filename)}\n", bar) for lyric in info["lyric"].split("\n"):
print(lyric)
f.write("".join(lyric.split("]")[1:]))
f.write('\n')
else:
f.write(info["lyric"])
bprint(Fore.GREEN + "\t--> 歌词下载完成!文件被保存在" + Style.RESET_ALL + f"{os.path.join(path, filename)}\n", bar)
return return

View File

@ -23,6 +23,6 @@ def download_one_lyric(self):
input("不合法的形式.\n按回车键返回...") input("不合法的形式.\n按回车键返回...")
return return
if get_song_lyric(int(song_id), self.settings.lyric_path) == "dl_err_connection": if get_song_lyric(int(song_id), self.settings.lyric_path, self.settings.lyric_format, save_lyrics_time = self.settings.save_lyrics_time) == "dl_err_connection":
input("下载发生错误!可能是连接被拒绝!请检查网络后再试\n按回车键返回...") input("下载发生错误!可能是连接被拒绝!请检查网络后再试\n按回车键返回...")
input("按回车键返回...") input("按回车键返回...")

View File

@ -5,11 +5,12 @@ import os
class Settings(object): # 设定一个基础的存储设置信息的 class ,并设置形参用于 json 导入设置 class Settings(object): # 设定一个基础的存储设置信息的 class ,并设置形参用于 json 导入设置
def __init__(self, l_p="./out/", l_f="%(name)s - %(artists)s", lang="en", a_s=True): def __init__(self, l_p="./out/", l_f="%(name)s - %(artists)s", lang="en", a_s=True, s_l_t = True):
self.lyric_path = l_p self.lyric_path = l_p
self.lyric_format = l_f self.lyric_format = l_f
self.language = lang self.language = lang
self.auto_save = a_s self.auto_save = a_s
self.save_lyrics_time = s_l_t
def class2dict(aclass: Settings): # 让 json.dumps 将 class 转化为一个 dict ,用于保存 def class2dict(aclass: Settings): # 让 json.dumps 将 class 转化为一个 dict ,用于保存
@ -17,7 +18,8 @@ def class2dict(aclass: Settings): # 让 json.dumps 将 class 转化为一个 di
"lyric_path": aclass.lyric_path, "lyric_path": aclass.lyric_path,
"lyric_format": aclass.lyric_format, "lyric_format": aclass.lyric_format,
"language": aclass.language, "language": aclass.language,
"auto_save": aclass.auto_save "auto_save": aclass.auto_save,
"save_lyrics_time": aclass.save_lyrics_time
} }
@ -29,7 +31,8 @@ def dict2class(adict): # 让 json.load 将读取到的 dict 转化为我们所
l_p=adict["lyric_path"], l_p=adict["lyric_path"],
l_f=adict["lyric_format"], l_f=adict["lyric_format"],
lang=adict["language"], lang=adict["language"],
a_s=adict["auto_save"] a_s=adict["auto_save"],
s_l_t=adict["save_lyrics_time"]
) )

Binary file not shown.

Binary file not shown.

View File

@ -15,29 +15,36 @@ def settings_menu(self):
save_settings(self.settings) save_settings(self.settings)
cls_stay(self, f"[设置菜单] " cls_stay(self, f"[设置菜单] "
f"{Fore.LIGHTCYAN_EX}自动保存: " f"{Fore.LIGHTCYAN_EX}自动保存: "
f"{({True: f'{Fore.GREEN}', False: f'{Fore.RED}'}[self.settings.auto_save])}") f"{({True: f'{Fore.GREEN}', False: f'{Fore.RED}'}[self.settings.auto_save])} \t"
f"{Fore.LIGHTCYAN_EX}保存每句歌词的时间: "
f"{({True: f'{Fore.GREEN}', False: f'{Fore.RED}'}[self.settings.save_lyrics_time])}"
)
r = input_menu({ r = input_menu({
"0": "返回上级菜单", "0": "返回上级菜单",
"1": "歌曲保存路径", "1": "歌曲保存路径",
"2": "清空输出文件夹内的内容", "2": "清空输出文件夹内的内容",
"3": "歌词文件保存格式", "3": "歌词文件保存格式",
"4": "部分动态效果", "4": "部分动态效果",
"s": "切换设置自动保存" "5": "切换是否保存每句歌词的时间",
"s": "切换设置是否自动保存",
}) })
if r == "0": match r:
return case "0":
elif r == "1": return
__set_lyric_path(self) case "1":
elif r == "2": __set_lyric_path(self)
__remove_output_files(self) case "2":
elif r == "3": __remove_output_files(self)
__set_lyric_format(self) case "3":
elif r == "4": __set_lyric_filename_format(self)
pass case "4":
elif r == "s": pass
self.settings.auto_save = not self.settings.auto_save case "5":
else: self.settings.save_lyrics_time = not self.settings.save_lyrics_time
input("输入无效!按回车键继续...") case "s":
self.settings.auto_save = not self.settings.auto_save
case _:
input("输入无效!按回车键继续...")
def __remove_output_files(self): def __remove_output_files(self):
@ -112,7 +119,7 @@ def __set_lyric_path(self):
return return
def __set_lyric_format(self): def __set_lyric_filename_format(self):
while True: while True:
cls_stay(self, f"[设置菜单 - 文件名格式]\n{Fore.LIGHTCYAN_EX}当前格式: ", end="") cls_stay(self, f"[设置菜单 - 文件名格式]\n{Fore.LIGHTCYAN_EX}当前格式: ", end="")
if self.settings.lyric_format == "%(name)s": if self.settings.lyric_format == "%(name)s":

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

11
modules/utils/initapp.py Normal file
View File

@ -0,0 +1,11 @@
from os import mkdir
from os.path import exists
INIT_DIRECTORIES = [
'out'
]
def init_directories():
for dir_name in INIT_DIRECTORIES:
if not exists(dir_name):
mkdir(dir_name)