是否可以使用 javascript 在 soundcloud 上播放搜索的最佳结果
Is it possible to play the top result for a search on soundcloud with javascript
这个问题的答案我找了好久,还是想不通。我不确定这是否真的可能。
基本上,我有一个 URL 到声音云搜索 (https://soundcloud.com/search?q=rick%20astley%20never%20gonna%20give%20you%20up),我想知道是否可以立即播放顶部结果或下载顶部结果。先谢谢你了!
所以首先值得注意的是 Soundcloud 有一个开发者 API,特别是 JavaScript SDK with Search functionality。他们有关于如何执行此操作的文档。
但是,我不想为我的很多项目走注册应用程序的道路。尽管这可能不是推荐的路线,但无论如何我都会将其添加为答案。如果查看“网络”选项卡,您会看到有一堆请求,而您真正关心的是与 api-v2
相关的请求。你应该找到一个有这样的请求 URL:
这是您 Soundcloud 在幕后专门为其搜索 API 发出的 API 请求 URL,您可以看到它传递了一堆 GET 参数。我有 OMITTED 我的特定凭据,但作为用户,您有自己的 client_id
和 app_version
,因此您只需将您的凭据放在那里。
如果需要,您可以手动转到此 URL 或仅通过 ajax 向其发出 GET 请求,返回的是一个巨大的 JSON,如下所示:
深入研究它,您会看到有一个 collection
数组 属性,其中包含结果。因为您只想要第一个,所以我们可以只查看数组中的索引,结果如下所示:
{
"artwork_url": "https://i1.sndcdn.com/artworks-000074083588-q3fg6e-large.jpg",
"commentable": true,
"comment_count": 113,
"created_at": "2014-03-05T01:47:32Z",
"description": "",
"downloadable": true,
"download_count": 100,
"download_url": "https://api.soundcloud.com/tracks/137970300/download",
"duration": 266996,
"full_duration": 266996,
"embeddable_by": "all",
"genre": "Mashup",
"has_downloads_left": false,
"id": 137970300,
"kind": "track",
"label_name": "",
"last_modified": "2017-04-26T13:01:05Z",
"license": "all-rights-reserved",
"likes_count": 6307,
"permalink": "rick-astley-never-gonna-give",
"permalink_url": "https://soundcloud.com/andreasedstr-m/rick-astley-never-gonna-give",
"playback_count": 596829,
"public": true,
从这里开始,您有两个选择 -- 如果需要,您可以通过查看 属性 download_url
下载它,也可以 "play it"。这部分你可能想澄清你对游戏的定义是什么。你可以只打开 Soundcloud 页面,我相信它应该会自动播放,或者你可以将它嵌入你的页面,然后以某种方式触发播放。无论哪种情况,它都可用。
要通过 JavaScript 执行此操作,您可能只需向上面的 URL 发出 GET 请求即可。我截断了下面的 URL。请记住,您需要提供 client_id
和 app_version
.
$.ajax({
method: 'GET',
url: 'https://api-v2.soundcloud.com/search?q=rick%20astley%20never%20gonna%20give%20you%20up',
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (data) {
// do stuff here
// as mentioned because you care about the first index in the property above
// you would most likely interact with it by accessing data.collection[0]
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如果您 运行 CORS 是最后一件事,因为该服务不会将您视为真实的人。参见 here
希望这对您有所帮助。
这个问题的答案我找了好久,还是想不通。我不确定这是否真的可能。
基本上,我有一个 URL 到声音云搜索 (https://soundcloud.com/search?q=rick%20astley%20never%20gonna%20give%20you%20up),我想知道是否可以立即播放顶部结果或下载顶部结果。先谢谢你了!
所以首先值得注意的是 Soundcloud 有一个开发者 API,特别是 JavaScript SDK with Search functionality。他们有关于如何执行此操作的文档。
但是,我不想为我的很多项目走注册应用程序的道路。尽管这可能不是推荐的路线,但无论如何我都会将其添加为答案。如果查看“网络”选项卡,您会看到有一堆请求,而您真正关心的是与 api-v2
相关的请求。你应该找到一个有这样的请求 URL:
这是您 Soundcloud 在幕后专门为其搜索 API 发出的 API 请求 URL,您可以看到它传递了一堆 GET 参数。我有 OMITTED 我的特定凭据,但作为用户,您有自己的 client_id
和 app_version
,因此您只需将您的凭据放在那里。
如果需要,您可以手动转到此 URL 或仅通过 ajax 向其发出 GET 请求,返回的是一个巨大的 JSON,如下所示:
深入研究它,您会看到有一个 collection
数组 属性,其中包含结果。因为您只想要第一个,所以我们可以只查看数组中的索引,结果如下所示:
{
"artwork_url": "https://i1.sndcdn.com/artworks-000074083588-q3fg6e-large.jpg",
"commentable": true,
"comment_count": 113,
"created_at": "2014-03-05T01:47:32Z",
"description": "",
"downloadable": true,
"download_count": 100,
"download_url": "https://api.soundcloud.com/tracks/137970300/download",
"duration": 266996,
"full_duration": 266996,
"embeddable_by": "all",
"genre": "Mashup",
"has_downloads_left": false,
"id": 137970300,
"kind": "track",
"label_name": "",
"last_modified": "2017-04-26T13:01:05Z",
"license": "all-rights-reserved",
"likes_count": 6307,
"permalink": "rick-astley-never-gonna-give",
"permalink_url": "https://soundcloud.com/andreasedstr-m/rick-astley-never-gonna-give",
"playback_count": 596829,
"public": true,
从这里开始,您有两个选择 -- 如果需要,您可以通过查看 属性 download_url
下载它,也可以 "play it"。这部分你可能想澄清你对游戏的定义是什么。你可以只打开 Soundcloud 页面,我相信它应该会自动播放,或者你可以将它嵌入你的页面,然后以某种方式触发播放。无论哪种情况,它都可用。
要通过 JavaScript 执行此操作,您可能只需向上面的 URL 发出 GET 请求即可。我截断了下面的 URL。请记住,您需要提供 client_id
和 app_version
.
$.ajax({
method: 'GET',
url: 'https://api-v2.soundcloud.com/search?q=rick%20astley%20never%20gonna%20give%20you%20up',
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (data) {
// do stuff here
// as mentioned because you care about the first index in the property above
// you would most likely interact with it by accessing data.collection[0]
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如果您 运行 CORS 是最后一件事,因为该服务不会将您视为真实的人。参见 here
希望这对您有所帮助。