Merge pull request #2 from Onlyacat233/main
Add more features. Allow users to choose whether to save the time of the lyric. Add the initialization of the specific folders function.
This commit is contained in:
commit
3e5570de2f
7
.gitignore
vendored
7
.gitignore
vendored
@ -5,3 +5,10 @@ venv/
|
|||||||
venv_win/
|
venv_win/
|
||||||
test/
|
test/
|
||||||
modules/test/
|
modules/test/
|
||||||
|
|
||||||
|
modules/__pycache__
|
||||||
|
modules/functions/__pycache__
|
||||||
|
modules/functions/mainly/__pycache__
|
||||||
|
modules/functions/settings/__pycache__
|
||||||
|
modules/submenus/__pycache__
|
||||||
|
modules/utils/__pycache__
|
||||||
|
@ -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
|
||||||
|
@ -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("按回车键返回...")
|
||||||
|
@ -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"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -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":
|
||||||
|
11
modules/utils/initapp.py
Normal file
11
modules/utils/initapp.py
Normal 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)
|
Loading…
Reference in New Issue
Block a user