-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNfo.py
85 lines (68 loc) · 3.37 KB
/
Nfo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# 请帮我写个中文的 Python 脚本,批注也是中文:
# 在脚本开始前询问我源文件夹位置与目标文件夹位置。
# 遍历源文件夹位置中所有 mkv 文件。在该文件夹下生成同名 txt 文件。
# 询问我 txt 文件内写入的内容。UTF-8编码,默认为:<?xml version="1.0" encoding="UTF-8" standalone="yes"?><movie><title> </title></movie>
# 再次枚举源文件夹位置中所有 txt 文件,读取其文件名(不包括后缀名),替换“<title> </title>”内的“ ”。
# 导入模块
import os
def get_valid_directory(prompt):
"""
获取有效的文件夹路径,确保路径存在且有效。
"""
while True:
folder = input(prompt).strip()
if os.path.isdir(folder):
return folder
print("输入的路径无效,请重新输入有效的文件夹路径。")
def create_txt_files_for_mkv(source_folder, xml_template):
"""
遍历源文件夹中的所有 .mkv 文件,生成对应的 .txt 文件。
"""
for file_name in os.listdir(source_folder):
if file_name.endswith('.mkv'):
base_name = os.path.splitext(file_name)[0] # 获取文件名,不包括扩展名
txt_file_path = os.path.join(source_folder, f"{base_name}.txt") # 构建 txt 文件路径
# 写入 XML 模板到 txt 文件
with open(txt_file_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(xml_template.replace("<title> </title>", "<title> </title>")) # 固定模板
print(f"已生成 {txt_file_path} 文件")
def update_txt_with_filenames(source_folder):
"""
遍历源文件夹中的所有 .txt 文件,读取文件名并替换 XML 中的 <title> 内容。
"""
for file_name in os.listdir(source_folder):
if file_name.endswith('.txt'):
base_name = os.path.splitext(file_name)[0] # 获取文件名,不包括扩展名
txt_file_path = os.path.join(source_folder, file_name)
# 读取 txt 文件内容
with open(txt_file_path, 'r', encoding='utf-8') as txt_file:
content = txt_file.read()
# 替换 <title> 标签中的内容为文件名
new_content = content.replace("<title> </title>", f"<title>{base_name}</title>")
# 写回修改后的内容
with open(txt_file_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(new_content)
print(f"已更新 {txt_file_path} 文件中的 <title> 标签")
def main():
"""
主程序入口。
"""
# 询问源文件夹和目标文件夹路径
source_folder = get_valid_directory("请输入源文件夹路径:")
# 询问用户 txt 文件内容
custom_title = input("请输入txt文件中<title>标签的内容(按回车使用默认内容):").strip()
if not custom_title:
custom_title = " " # 默认内容
# XML 模板(包括用户自定义的内容)
xml_template = f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<movie>
<title>{custom_title}</title>
</movie>"""
# 创建 mkv 文件对应的 txt 文件
create_txt_files_for_mkv(source_folder, xml_template)
# 更新所有 txt 文件中的 <title> 内容
update_txt_with_filenames(source_folder)
print("处理完成!")
input("按回车键退出...")
if __name__ == "__main__":
main()