Bug fix and optimized some function
This commit is contained in:
parent
35cd36bad9
commit
9336133002
@ -1,11 +1,13 @@
|
|||||||
"""多文件下载"""
|
import re
|
||||||
|
|
||||||
from modules.clear_screen import clear
|
from modules.clear_screen import clear
|
||||||
from modules.raw_input import rinput
|
from modules.raw_input import rinput
|
||||||
from modules.get_song import get_song_lyric
|
from modules.get_song import get_song_lyric
|
||||||
|
|
||||||
|
|
||||||
def mdl(path: str):
|
def mdl(path: str):
|
||||||
|
"""多个歌词文件的下载
|
||||||
|
|
||||||
|
``path: str`` 传入歌词文件保存的路径"""
|
||||||
clear()
|
clear()
|
||||||
ids = []
|
ids = []
|
||||||
print("输入歌曲id,用回车分开,输入s停止")
|
print("输入歌曲id,用回车分开,输入s停止")
|
||||||
@ -16,13 +18,20 @@ def mdl(path: str):
|
|||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
int(r)
|
int(r)
|
||||||
|
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("该输入不合法")
|
|
||||||
else:
|
tmp = re.search("song\?id=[0-9]*", r)
|
||||||
ids.append(r)
|
if tmp:
|
||||||
|
r = tmp.group()[8:]
|
||||||
|
else:
|
||||||
|
print("不合法的形式.\n")
|
||||||
|
continue
|
||||||
|
ids.append(r)
|
||||||
|
print("\t#%d id:%s - 已添加!" % (len(ids), r))
|
||||||
clear()
|
clear()
|
||||||
for i in range(0, len(ids)):
|
for i in range(0, len(ids)):
|
||||||
print("进度: %d/%d" % (i+1, len(ids)))
|
print("\n进度: %d/%d" % (i+1, len(ids)))
|
||||||
if get_song_lyric(ids[i], path) == "dl_err_connection":
|
if get_song_lyric(ids[i], path) == "dl_err_connection":
|
||||||
input("下载发生错误!可能是连接被拒绝!请检查网络后再试\n按回车键继续任务(该任务会被跳过)...")
|
input("下载发生错误!可能是连接被拒绝!请检查网络后再试\n按回车键继续任务(该任务会被跳过)...")
|
||||||
input("按回车键返回...")
|
input("按回车键返回...")
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
# 导入自定义模块使用try,原因是如果在外部单独运行文件,无法通过modules索引到依赖的模块
|
import re
|
||||||
# 直接单独运行会出现 ModuleNotFoundError 报错
|
|
||||||
|
|
||||||
from modules.raw_input import rinput
|
from modules.raw_input import rinput
|
||||||
from modules.get_song import get_song_lyric
|
from modules.get_song import get_song_lyric
|
||||||
from modules.clear_screen import clear
|
from modules.clear_screen import clear
|
||||||
|
|
||||||
|
|
||||||
def download_one_lyric(path: str):
|
def download_one_lyric(song_id, path: str):
|
||||||
"""单次下载歌词
|
"""单次下载歌词
|
||||||
|
|
||||||
``path: str`` 存储歌词的路径"""
|
``path: str`` 存储歌词的路径"""
|
||||||
@ -15,8 +13,13 @@ def download_one_lyric(path: str):
|
|||||||
try:
|
try:
|
||||||
int(song_id)
|
int(song_id)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
input("不合法的id形式.\n按回车键返回...")
|
r = re.search("song\?id=[0-9]*", song_id)
|
||||||
else:
|
if r:
|
||||||
if get_song_lyric(song_id, path) == "dl_err_connection":
|
song_id = r.group()[8:]
|
||||||
input("下载发生错误!可能是连接被拒绝!请检查网络后再试\n按回车键返回...")
|
else:
|
||||||
input("按回车键返回...")
|
input("不合法的形式.\n按回车键返回...")
|
||||||
|
return
|
||||||
|
|
||||||
|
if get_song_lyric(song_id, path) == "dl_err_connection":
|
||||||
|
input("下载发生错误!可能是连接被拒绝!请检查网络后再试\n按回车键返回...")
|
||||||
|
input("按回车键返回...")
|
||||||
|
@ -4,7 +4,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
class Settings(object): # 设定一个基础的存储设置信息的 class
|
class Settings(object): # 设定一个基础的存储设置信息的 class ,并设置形参用于 json 导入设置
|
||||||
def __init__(self, l_p="./out/", lang="en"):
|
def __init__(self, l_p="./out/", lang="en"):
|
||||||
self.lyric_path = l_p
|
self.lyric_path = l_p
|
||||||
self.language = lang
|
self.language = lang
|
||||||
@ -31,13 +31,16 @@ def load_settings(): # 加载 的函数
|
|||||||
if os.path.exists("settings.json"): # 判断目录下是否存在 settings.json ,若没有则创建,若有则读取
|
if os.path.exists("settings.json"): # 判断目录下是否存在 settings.json ,若没有则创建,若有则读取
|
||||||
with open("settings.json", 'r', encoding="utf-8") as f:
|
with open("settings.json", 'r', encoding="utf-8") as f:
|
||||||
try:
|
try:
|
||||||
return json.load(f, object_hook=dict2class)
|
settings = json.load(f, object_hook=dict2class) # 尝试转换 json 为 dict
|
||||||
|
if not os.path.exists(settings.lyric_path): # 检测输出文件夹,若文件夹不存在则在启动时创建
|
||||||
|
os.mkdir(settings.lyric_path)
|
||||||
|
return settings
|
||||||
except json.decoder.JSONDecodeError: # 如果检测到文件无法读取,将会删除设置文件并重新创建
|
except json.decoder.JSONDecodeError: # 如果检测到文件无法读取,将会删除设置文件并重新创建
|
||||||
print("设置文件损坏,重新创建...")
|
print("设置文件损坏,重新创建...")
|
||||||
os.remove("settings.json")
|
os.remove("settings.json")
|
||||||
return load_settings()
|
return load_settings()
|
||||||
else:
|
else:
|
||||||
with open("settings.json", 'w', encoding="utf-8") as f:
|
with open("settings.json", 'w', encoding="utf-8") as f: # 当 settings.json 不存在时新建一个 settings.json 并写入默认配置
|
||||||
f.write(json.dumps(Settings(), default=class2dict))
|
f.write(json.dumps(Settings(), default=class2dict))
|
||||||
return Settings()
|
return Settings()
|
||||||
|
|
||||||
|
@ -20,11 +20,11 @@ def settings_menu(self):
|
|||||||
elif r == "1":
|
elif r == "1":
|
||||||
__set_lyric_path(self)
|
__set_lyric_path(self)
|
||||||
elif r == "2":
|
elif r == "2":
|
||||||
__save_settings(self)
|
|
||||||
elif r == "s":
|
|
||||||
__remove_lyric_files(self.settings.lyric_path)
|
__remove_lyric_files(self.settings.lyric_path)
|
||||||
|
elif r == "s":
|
||||||
|
__save_settings(self)
|
||||||
else:
|
else:
|
||||||
input("输入")
|
input("输入无效!按回车键继续...")
|
||||||
|
|
||||||
|
|
||||||
def __remove_lyric_files(path):
|
def __remove_lyric_files(path):
|
||||||
@ -37,17 +37,19 @@ def __remove_lyric_files(path):
|
|||||||
for i in range(0, len(files)):
|
for i in range(0, len(files)):
|
||||||
print("正在删除(%d/%d): %s" % (i+1, len(files), files[i]))
|
print("正在删除(%d/%d): %s" % (i+1, len(files), files[i]))
|
||||||
os.remove(path+files[i])
|
os.remove(path+files[i])
|
||||||
print("删除完毕!\n按回车继续...")
|
input("删除完毕!\n按回车继续...")
|
||||||
else:
|
else:
|
||||||
print("文件夹内没有要删除的东西\n按回车继续...")
|
input("文件夹内没有要删除的东西\n按回车继续...")
|
||||||
|
|
||||||
|
|
||||||
def __set_lyric_path(self):
|
def __set_lyric_path(self):
|
||||||
print("允许使用相对路径和绝对路径,默认为\"./out/\"\n请避免使用反斜杠来确保通用性\n"
|
clear()
|
||||||
|
print("允许使用相对路径和绝对路径,默认为\"./out/\"\n请*不要*使用反斜杠来确保通用性\n"
|
||||||
"当前值:%s\n请输入新的歌词保存路径:" % self.settings.lyric_path)
|
"当前值:%s\n请输入新的歌词保存路径:" % self.settings.lyric_path)
|
||||||
r = cinput()
|
r = cinput()
|
||||||
if not r:
|
if not r:
|
||||||
input("输入为空!\n按回车继续...")
|
input("输入为空!\n按回车继续...")
|
||||||
|
return
|
||||||
if r[-1] != "/":
|
if r[-1] != "/":
|
||||||
r += "/"
|
r += "/"
|
||||||
path = ""
|
path = ""
|
||||||
|
Loading…
Reference in New Issue
Block a user