首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果禁用了歌曲下载,经过身份验证的第三方应用程序还可以使用下载URL来抓取曲目吗?

如果禁用了歌曲下载,经过身份验证的第三方应用程序还可以使用下载URL来抓取曲目吗?
EN

Stack Overflow用户
提问于 2013-01-09 07:51:15
回答 2查看 3.6K关注 0票数 3

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

根据API的说法,每首曲目都有一个相关的标题、artwork_url和download_url (我已经使用这个接口获取了这些信息)。我想要显示每首歌曲的标题和作品(如果存在),然后如果他们选择下载该曲目,他们将能够单击一个按钮并从download_url下载该曲目。

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

如果你需要更多的细节,请说出来。如果这是一个显而易见的问题,很抱歉。

谢谢,

Nat

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-10 00:29:26

我想知道的是,如果一首歌的下载被禁用了,那么已经通过身份验证的第三方应用程序还可以使用下载地址来抓取曲目吗?

是的,它可以。但是,请注意,为了让应用程序接口真正为文件提供服务,必须有HTTP Authorisation和client_id GET参数。

这意味着只需简单地输出如下链接

代码语言:javascript
复制
<a href="https://api.soundcloud.com/tracks/{id}/download">Download {title}</a>

不会有帮助的。至于client_id,你可以简单地把它附加到href上,但是由于浏览器不知道你的应用已经被授权了,并且不能通过简单的请求发送HTTP头,所以API不会让用户下载不能公开下载的曲目。

因此,您需要在ruby中构建一个代理,并将HTTP设置为本地端点,并在Ruby端处理到HTTP的连接,这样您就可以传递带有OAuth标记的href头。

票数 4
EN

Stack Overflow用户

发布于 2015-02-11 15:02:57

向调用'/convert‘路径的API发出HTTP请求(Get)将返回您的曲目ID。

然后,您可以向传递曲目id和?client_id=YOURCLIENTID的'/stream‘接口发出POST请求

从响应中,您可以获得流url,该url可用于在Soundcloud中流式传输和下载每首曲目。后一种选择实际上并不合法,因此请将所有这些都作为一个示例。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14226101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档