javascript - curl 可以从 BLOB 获取音频文件吗?
问题描述
我正在尝试使用 curl 下载当您转到https://tetyys.com/SAPI4时生成的 wav 文件(或至少获取指向下载器的 URL),在编辑字段中输入文本,单击“说出来”,然后单击“播放”。
如果我查看页面源,或者右键播放按钮,点击“复制音频位置”,则显示wave文件的源是一个BLOB(即blob:https ://tetyys.com/someHexNumber )。
通过查看https://tetyys.com/SAPI4/scripts/tts.js上的脚本,特别是字符串 var“url”,我确定您可以像这样设置 url 中的所有值: https://tetyys。 com/SAPI4/SAPI4?text=whatever+you+want+it+to+say&voice=Sam&pitch=100&speed=100
当我在 Firefox 中输入它时,会出现一个对话框,询问我是否要打开 wav 文件,当我打开它时,它会按预期播放。
那么,有没有办法用 curl (或者从命令行无缝地)而不是 Firefox 来做到这一点?
解决方案
使用 curl 下载可以通过选项-o
或来实现--output <file>
,因此-O
会尝试使用--remote-name
. 有关详细信息,请参阅man curl 。
您应该尝试使用类似的结构
curl -o /opt/curl-7.65.3.tar.gz https://curl.haxx.se/download/curl-7.65.3.tar.gz
我还假设您的具体案例可能需要更多工作和脚本。因为打电话
curl -o test.wav https://tetyys.com/SAPI4/SAPI4 text=test&voice=Sam&pitch=100&speed=100
正在生成另一个源。如果您检查上述调用的响应和标题,您会发现
Request URL:blob:https://tetyys.com/<UUID>
Request Method:GET
Status Code:206 Partial Content (from disk cache)
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Content-Length:40166
Content-Range:bytes 0-40165/40166
Content-Type:audio/wav
所以要下载音频文件,你需要类似的东西
curl -o test.wav https://tetyys.com/${UUID}
也许连同必要的 cookie 和标头一起,至少-H "Keep-Alive: 60" -H "Connection: keep-alive"
要保持会话打开。
推荐阅读
- php - docker-compose nginx 找不到 symfony 资产的路由
- scala - 当泛型类型对相同的泛型类型进行操作时,Scala 类型不匹配
- java - 根据其他类的数据设置自动选中的单选按钮
- zooming - 地图最大程度缩小时允许捏合缩放手势
- c# - 将多个 JSON 文件合并为单个文件
- angularjs - 如何使用angularjs将现有控制器中的值填充/获取到表单字段中
- javascript - 如何使用从 ajax 请求中获得的变量以及其他变量并在函数中使用它们?
- mongodb - 将嵌入属性重写为所有文档的顶级字段
- html - 我想显示具有静态尺寸的图像,与显示器分辨率无关
- c# - 以 STAThread 身份打开新窗口