Back to skills
extension
Category: Data & AnalyticsNo API key required

讯飞听见批量导出 (iflyrec-bulk-export)

批量导出讯飞听见(iflyrec.com)录音的音频 mp3 与转写 word(docx)。纯 API 调用、零浏览器依赖、自动按录制时间排序、文件名加日期前缀。适用于"把一堆录音的音频和转写文字分别下载下来"的场景。【前置】需已在登录 iflyrec 的 Edge/Chrome 以远程调试端口(9222)打开网页,脚本经 CDP 自动取 cookie。

personAuthor: user_b4692632hubcommunity

讯飞听见批量导出 (iflyrec-bulk-export)

一键把讯飞听见网页上的录音记录批量导出为 音频 mp3 + 转写 docx,平铺到本地目录,文件名前缀统一加 YYYY-MM-DD_(按录制时间),并按录制时间由近及远排序。

何时使用

  • 用户说:"导出讯飞听见的录音 / 把 iflyrec 的音频和转写下载下来 / 批量下载讯飞听见文件"
  • 需要把大量录音的音频和文字稿分别保存
  • 用户强调"按录制时间排序""文件名加日期"

前置条件(重要)

  1. 登录态:用户必须在自己的浏览器里登录了 iflyrec.com(网页端)。
  2. 启动带调试端口的浏览器:让用户在已登录的 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
  3. 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} |

请求头需带 CookieContent-Type: application/jsonX-Biz-Id: xftj。 详见 references/api.md

命名规则(用户常见诉求,已内置)

  1. 前缀统一 YYYY-MM-DD_(从文件名提取录制时间;提取不到则用订单时间兜底)
  2. 文件名里已用于前缀的原始日期串直接删除,避免 2025-12-10_25-12-10大庆 这种重复
  3. 正文里其余日期归一:中文 2022年9月3日2022-09-03;紧凑 2025121025-12-10
  4. 支持 8 种日期格式 + 手机号防误判(见代码 parseRecDate

⚠️ 踩坑清单(务必让模型避开)

  1. 别用浏览器模拟点击:开标签、等 SPA 渲染、弹窗拦截、选择器漂移,429 条会卡死数小时。本项目最初就栽在这,切纯 API 后 6 个环境类卡点瞬间消失。
  2. 官网伪代码不可信/api/v1/record/download/{id}?type=audio 这类是占位模板,实测返回官网首页 HTML。要抓包确认真实接口。
  3. 跨边界 JSON 要二次 parse:浏览器/CDP 里 JSON.stringify 出来的字符串,Node 端需再 JSON.parse 一次。
  4. 分页游标:用响应 biz.scrollDownQueryParam 作下次请求同名字段;末页 hjList 为空或 hasMore=false 必须 break,否则 cursor 非空对象导致死循环。
  5. 日期正则必须约束年份 19/20 开头 + 合法月日:否则手机号 01068366123 会被误解析成 106-83-66
  6. 断点续传:已存在且大小正常的文件跳过,cookie 中途失效也只需重跑少量。

交付物

  • <out>/ 下平铺 *.mp3 + *.docx(无音频的记录仅有 docx)
  • <out>/_manifest.txt:每条的日期 / 原名 / 音频大小 / 转写字数