3

我正在尝试使用 Ruby on Rails 创建一个应用程序,该应用程序允许用户下载他们上传的所有歌曲。在这一点上,我已经使用 OmniAuth 对用户进行了身份验证,并且我已经设法使用 Soundcloud 的 Ruby接口和他们的 API 提取了一些数据。

根据API,每首曲目都有一个关联的标题、artifact_url 和 download_url(我已经使用 API 获取了这些信息)。我想显示每首歌曲的标题和插图(如果有的话),然后如果他们选择下载该曲目,他们将能够单击一个按钮并从 download_url 下载该曲目。

所以这就是我所意识到的:对于大多数曲目(或声音,因为它们在 Soundcloud 中被称为),默认情况下在您上传时禁用下载。问题是,还有一个选项显示“应用程序已启用/已禁用”。我想知道的是,如果禁用下载歌曲,经过身份验证的第 3 方应用程序是否仍可以使用下载 URL 来抓取曲目?我想知道用户是否需要单独浏览所有曲目并启用下载才能使其正常工作。

如果您需要更多详细信息,请说出来。抱歉,如果这是一个明显的问题。

谢谢,

纳特

4

2 回答 2

4

我想知道的是,如果禁用下载歌曲,经过身份验证的第 3 方应用程序是否仍可以使用下载 URL 来抓取曲目?

是的,它可以。但是,请注意,为了让 API 实际提供文件,必须有一个 HTTP 授权标头和 client_id GET 参数。

这意味着简单地吐出像这样的链接

<a href="https://api.soundcloud.com/tracks/{id}/download">Download {title}</a>

不会有帮助的。至于,client_id您可以简单地将其附加到href可公开下载。

因此,您需要在 ruby​​ 中构建一个代理,并将hrefs 设置为本地端点,并在 ruby​​ 端处理与 SoundCloud API 的连接,这样您就可以使用 OAuth 令牌传递 HTTP 标头。

于 2013-01-09T16:29:26.290 回答
1

向调用“/convert”路由的 API 发出 HTTP 请求 (Get) 将返回您的轨道 ID。

然后,您可以向 API '/stream' 发出 POST 请求,传递轨道 ID 和 ?client_id=YOURCLIENTID

从响应中,您可以获得流 url,可用于流式传输和下载 Soundcloud 中的每个轨道。后一种选择实际上并不合法,因此以所有这些为例。

编辑:这可以用纯 JS/jQuery 完成,不需要运行服务器

于 2015-02-11T07:02:56.733 回答