使用方法
运行脚本时,输入专辑 ID 和下载页数。
脚本会自动下载指定专辑的音频,并保存到名为 “Novel audio” 的文件夹中。
在下载过程中,可以通过键盘中断(Ctrl+C)来停止下载。
主要特点
交互式输入: 使用 Tkinter 提供的简单对话框,用户可以轻松输入专辑 ID 和下载页数。
下载续传: 脚本支持从指定页数继续下载,避免重复下载已有音频。
下载进度提示: 在下载过程中,脚本会输出当前下载的音频信息,包括音频标题和下载状态。
文件存在检查: 在下载前会检查音频文件是否已存在,避免重复下载相同的音频。
异常处理: 对可能的异常情况进行了处理,包括网络请求失败、JSON 解析错误等。
输出着色: 使用 ANSI 转义码实现输出文字的着色,以区分不同类型的输出信息。例如,错误信息为红色,警示信息为黄色,成功信息为绿色。
用户中断处理: 用户可以通过 Ctrl+C 中断下载,并会有相应的提示。
注意事项
请确保使用脚本的行为符合相关网站的使用协议。
下载过程中可能会因网络原因导致下载失败,可以重新运行脚本进行续传。
希望这个脚本能够方便你获取喜欢的小说音频,祝你使用愉快!

# **************************************************
# 免责声明:
# 本代码仅供学习和研究使用,严禁用于任何商业用途。
# 作者不对使用本代码导致的任何后果负责。
# 在使用本代码时,请遵守相关法律法规和网站的使用规定。
# **************************************************
import os
import tkinter as tk
from tkinter import simpledialog
import requests
import re
import json
# ANSI转义码
class Colors:
RED = '\033[91m'
YELLOW = '\033[93m'
GREEN = '\033[92m'
ENDC = '\033[0m'
def clean_filename(filename):
# 移除非法字符
return re.sub(r'[\/:*?"<>|]', '', filename)
def download_novel(id, page_num):
current_page_file = "pageid_.txt"
# 提示用户输入当前页数
current_page = simpledialog.askinteger("输入", "请输入从第几页开始下载:")
if current_page is None:
print(Colors.RED + "未输入当前页数,退出下载" + Colors.ENDC)
return
if current_page > page_num:
print(Colors.GREEN + "全部下载完成" + Colors.ENDC)
return
base_url = "https://www.ysts.cc/tingshu"
session = requests.Session()
url = "{}/{}/?p={}".format(base_url, id, current_page)
headers = {


516

被折叠的 条评论
为什么被折叠?



