-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnovel.py
86 lines (69 loc) · 2.53 KB
/
novel.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
86
#!/usr/bin/env python3
"""
小说下载和处理的命令行工具
"""
import argparse
import sys
from download_novel import NovelDownloader
from merge_chapters import merge_chapters
from config import NOVELS
def list_novels():
"""显示可下载的小说列表"""
print("\n可下载的小说列表:")
print("-" * 40)
for cn_name, info in NOVELS.items():
print(f"- {cn_name} ({info['name']})")
print("-" * 40)
def download_novel(novel_name):
"""下载指定的小说"""
if novel_name not in NOVELS:
print(f"错误:未找到小说 '{novel_name}'")
list_novels()
return False
info = NOVELS[novel_name]
print(f"\n开始下载《{novel_name}》...")
downloader = NovelDownloader(info["url"], info["name"])
success = downloader.download_all()
if success:
print(f"\n《{novel_name}》下载完成!")
return True
return False
def main():
parser = argparse.ArgumentParser(description='小说下载工具')
subparsers = parser.add_subparsers(dest='command', help='可用命令')
# list 命令
list_parser = subparsers.add_parser('list', help='显示可下载的小说列表')
# download 命令
download_parser = subparsers.add_parser('download', help='下载指定的小说')
download_parser.add_argument('novel', help='小说名称')
# merge 命令
merge_parser = subparsers.add_parser('merge', help='合并已下载的章节')
merge_parser.add_argument('novel', help='小说名称')
merge_parser.add_argument('--output', '-o', help='输出文件名(可选)')
args = parser.parse_args()
if not args.command:
parser.print_help()
return
if args.command == 'list':
list_novels()
elif args.command == 'download':
if args.novel not in NOVELS:
print(f"错误:未找到小说 '{args.novel}'")
list_novels()
return
if download_novel(args.novel):
print("\n是否要合并章节?(y/N) ", end='')
if input().lower() == 'y':
merge_chapters(NOVELS[args.novel]["name"])
elif args.command == 'merge':
if args.novel not in NOVELS:
print(f"错误:未找到小说 '{args.novel}'")
list_novels()
return
merge_chapters(NOVELS[args.novel]["name"], args.output)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print("\n操作已取消")
sys.exit(1)