讯飞听见批量导出 (iflyrec-bulk-export)
一键把讯飞听见网页上的录音记录批量导出为 音频 mp3 + 转写 docx,平铺到本地目录,文件名前缀统一加 YYYY-MM-DD_(按录制时间),并按录制时间由近及远排序。
何时使用
- 用户说:"导出讯飞听见的录音 / 把 iflyrec 的音频和转写下载下来 / 批量下载讯飞听见文件"
- 需要把大量录音的音频和文字稿分别保存
- 用户强调"按录制时间排序""文件名加日期"
前置条件(重要)
- 登录态:用户必须在自己的浏览器里登录了 iflyrec.com(网页端)。
- 启动带调试端口的浏览器:让用户在已登录的 Edge/Chrome 上以远程调试模式打开 iflyrec,例如:
⚠️ 必须带"C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" --remote-debugging-port=9222 --user-data-dir=<一个独立目录> "https://www.iflyrec.com/home/"--user-data-dir,否则取不到登录态,接口会返回userId can not be null。 - Node + 依赖:脚本用 Node 运行,需要
ws(连 CDP 取 cookie)和docx(生成 word)。在scripts/下执行npm install ws docx。- 若
docx缺失,脚本自动降级为写.txt(仍可交付文字稿)。
- 若
使用方式
cd <skill_dir>/scripts
npm install ws docx # 首次
node export.js --out "G:/iflyrec_export" --limit 5 # 先小批量验证
node export.js --out "G:/iflyrec_export" # 全量
参数:
--out <目录>:输出目录(默认./iflyrec_export)--limit N:只导前 N 条(安全阀,发布/调试必用,先跑 3~5 条验证命名与内容)--cookie "name=val;...":可选,直接传入 cookie,跳过 CDP 自动获取--cdp http://127.0.0.1:9222:可选,指定 CDP 地址(默认 9222)
核心接口(已逐一实测,纯 API 无需浏览器)
| 用途 | 方法 & 路径 |
|---|---|
| 列表(游标分页) | POST /XFTJWebAdaptService/v2/hjProcess/list/optimized |
| 音频直链 | GET /XFTJWebAdaptService/v1/hyjy/realTime/{orderId}/audioPlayOutLink?fileSource=app&originAudioId={aid} |
| 转写逐字稿 | GET /XFTJWebAdaptService/v1/hyjy/{orderId}/transcriptResults/16?fileSource=app&originAudioId={aid} |
请求头需带 Cookie、Content-Type: application/json、X-Biz-Id: xftj。
详见 references/api.md。
命名规则(用户常见诉求,已内置)
- 前缀统一
YYYY-MM-DD_(从文件名提取录制时间;提取不到则用订单时间兜底) - 文件名里已用于前缀的原始日期串直接删除,避免
2025-12-10_25-12-10大庆这种重复 - 正文里其余日期归一:中文
2022年9月3日→2022-09-03;紧凑20251210→25-12-10 - 支持 8 种日期格式 + 手机号防误判(见代码
parseRecDate)
⚠️ 踩坑清单(务必让模型避开)
- 别用浏览器模拟点击:开标签、等 SPA 渲染、弹窗拦截、选择器漂移,429 条会卡死数小时。本项目最初就栽在这,切纯 API 后 6 个环境类卡点瞬间消失。
- 官网伪代码不可信:
/api/v1/record/download/{id}?type=audio这类是占位模板,实测返回官网首页 HTML。要抓包确认真实接口。 - 跨边界 JSON 要二次 parse:浏览器/CDP 里
JSON.stringify出来的字符串,Node 端需再JSON.parse一次。 - 分页游标:用响应
biz.scrollDownQueryParam作下次请求同名字段;末页hjList为空或hasMore=false必须 break,否则 cursor 非空对象导致死循环。 - 日期正则必须约束年份 19/20 开头 + 合法月日:否则手机号
01068366123会被误解析成106-83-66。 - 断点续传:已存在且大小正常的文件跳过,cookie 中途失效也只需重跑少量。
交付物
<out>/下平铺*.mp3+*.docx(无音频的记录仅有 docx)<out>/_manifest.txt:每条的日期 / 原名 / 音频大小 / 转写字数
Scan to join WeChat group