技术 / 架构与实现

08 文案处理、标题校验与文件命名

基于 Android 1.0.2 / 1.0.2-trial · 2026-10-10 · 完整正文

正文与清洗

正式版不设产品级正文字符上限,仍受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。说明你需要配音、照片视频、PC或Android端,我们一起确定适合的使用方式。

合作从一次沟通开始

让你的内容制作,
找到合适的工作台。

免费试用、优惠授权、PC与Android版本、工作室及渠道合作意向,欢迎直接咨询。

打开微信,搜索 wzqy2019,添加时备注“听文合作”。具体授权、价格与合作政策以沟通为准;本站不收款。