"""共享工具函数""" def sanitize_filename(name: str) -> str: """清理文件名中的非法字符。""" return "".join( c if c.isalnum() or c in " _-()()【】" else "_" for c in name ) def parse_chapter_range(chapters: str) -> tuple[float, float]: """解析章节范围字符串。 支持格式: "1-10", "5", "0-2.5" """ if "-" in chapters: parts = chapters.split("-", 1) return float(parts[0]), float(parts[1]) num = float(chapters) return num, num