# 08 文案处理、标题校验与文件命名 听文视频工作台 · 技术架构与实现 · 1.0.2 ## 正文与清洗 正式版不设产品级正文字符上限,仍受64MiB单请求、设备空间和外部TTS可用性约束。create以str(...).strip()得到实际朗读正文,拒绝空文本。试用版在strip前执行累计账本,故输入首尾空白可扣额但不朗读;这是两个不同处理目的。 前端显式清洗基于正则替换,统一换行、移除零宽/BOM、HTML注释和标签、Markdown链接地址/图片、裸网址、列表/引用/水平线、括号外壳及格式符,整理空白;保留数字、通常标点、括号内文本,数字间星号转换为“乘以”。不解码&等HTML实体,不调用语言模型、不识别文章事实,也不是通用Markdown语义解析器。最近一次有效清洗前原文用于撤销,手动编辑后撤销失效。 MD导入是另一套简化处理:删除完整三反引号代码块、标题前缀、图片、链接地址和部分格式符。显式清洗只去代码围栏而保留代码正文;需要文案一致性时不能把两个入口当成相同转换。 ## 标题规则 normalize_title统一换行,逐行去首尾、连续空白合并、丢弃空行并保留有效手动换行。title_character_count合计主副标题的非换行Python字符,超过30即400拒绝,在启动语音/图像请求之前执行。标题颜色和布局见第12章。新任务保存title_style=poster,旧style仍有兼容路径。 ## 文件命名与路径安全 新MP4文件stem取实际正文前30个Python字符,将/\:*?"<>|及控制字符替换下划线,再整理首尾空格/点;空stem回退听文视频。主标题不影响新MP4名。已有任务没有video_filename时继续用video.mp4,不为历史文件自动更名。 任务目录使用规范UUID,必须str(uuid.UUID(id)) == id。照片文件必须basename、以image-开头并以.png结尾;视频文件同样只能basename且.mp4,无反斜杠。路径保护与导出白名单相结合,避免用户输入变为目录穿越参数。 依据:templates/index.html:215–248、app.py:63–105,593–605、make_homepage_bg.py:36–50。 --- 招商合作微信:wzqy2019。添加备注:听文合作。 原网页:https://tingwen-creator-studio-102.pages.dev/guide/technical-08