【问题标题】:Can curl get audio files from BLOBs?curl 可以从 BLOB 中获取音频文件吗?
【发布时间】:2019-12-04 07:44:00
【问题描述】:

我正在尝试使用 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 来做到这一点?

【问题讨论】:

  • 是的,你可以。你应该试试看。 @JaromandaX 他没有问他是否可以执行 javascript。
  • @John - 好点,我看错了问题

标签: javascript html bash curl


【解决方案1】:

可以通过选项-o 或--output <file> 实现使用curl 的下载,其中-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" 以保持会话打开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    相关资源
    最近更新 更多