使用 API 访问 Soundcloud 图表
Access Soundcloud Charts with API
有没有办法使用 soundcloud api 访问新排行榜 https://soundcloud.com/charts/top(前 50 名)?或者有其他方法吗?
也许用 php 或其他方式进行抓取?
这是一个例子:
https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3Agenres%3Aall-music&client_id=02gUJC0hH2ct1EGOcYXQIzRFU91c72Ea&limit=20&offset=0
只需根据您的客户ID等更改参数即可
要找到可用于 HTTP API 请求的参数,您可以这样做:
- 转到“https://soundcloud.com/charts/”并打开控制台(Chrome 上的 F12)。
- 进入控制台的网络选项卡并刷新页面 (F5)。
- 清除控制台。
现在例如,如果您想知道检索参数 "TOP 50 - Dance & EDM":
- 更改过滤框内的值
- 查看控制台,请求开头为:"charts?kind="
- 在这个里面搜索url参数。
一些例子:
返回顶部 |舞蹈与电子舞曲
https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3Ageneres%3Adanceedm&client_id=...
返回顶部 |深屋
https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3A流派%3Adeephouse&client_id=...
新热
国家
https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud%3A 流派%3A国家&client_id=...
所有参数:
种类:
- 前 <- 前 50
- 趋势 <- 新 & 热门
类型:
- soundcloud:genres:all-music
- soundcloud:genres:all-audio
- soundcloud:genres:alternativerock
- soundcloud:流派:环境
- soundcloud:流派:古典
- soundcloud:genres:country
- soundcloud:流派:danceedm
- soundcloud:流派:舞厅
- soundcloud:流派:deephouse
- soundcloud:流派:disco
- soundcloud:genres:drumbass
- soundcloud:流派:dubstep
- soundcloud:流派:电子
- soundcloud:genres:folksingersongwriter
- soundcloud:流派:hiphoprap
- soundcloud:流派:house
- soundcloud:流派:indie
- soundcloud:genres:jazzblues
- soundcloud:流派:拉丁语
- soundcloud:流派:金属
- soundcloud:流派:钢琴
- soundcloud:genres:pop
- soundcloud:流派:rbsoul
- soundcloud:流派:雷鬼
- soundcloud:genres:reggaeton
- soundcloud:流派:摇滚
- soundcloud:genres:soundtrack
- soundcloud:流派:techno
- soundcloud:流派:trance
- soundcloud:流派:trap
- soundcloud:流派:triphop
- soundcloud:genres:world
- soundcloud:genres:audiobooks
- soundcloud:流派:商业
- soundcloud:流派:喜剧
- soundcloud:流派:娱乐
- soundcloud:流派:学习
- soundcloud:genres:newspolitics
- soundcloud:genres:religionspirituality
- soundcloud:流派:科学
- soundcloud:流派:运动
- soundcloud:流派:讲故事
- soundcloud:流派:技术
php 中的示例以获得 TOP50 的 json 响应 - 国家/地区:
URL:
https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3A 流派%3A国家&client_id=XXXXXXXXXXX&limit=10 &linked_partitioning=1
URL 参数:
种类:顶部
类型:soundcloud:genres:country
client_id: XXXXXXXXXXX
限制:10
linked_partitioning: 1
限制:您希望收到多少首歌曲作为回应。
linked_partitioning:页数,根据限制。
例如linked_partitioning 限制 = 10:
- 1 从 0 到 9 获取歌曲
- 2 从 10 到 19 获取歌曲
- ...
例如linked_partitioning 限制 = 20:
- 1 从 0 到 19 获取歌曲
- 2 获取歌曲从 20 到 39
- ...
现在你有 URL,如果你想用 PHP
检索 JSON 响应
你必须写例如:
<?php
$url = "https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3Agenres%3Acountry&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&limit=10&linked_partitioning=1";
// Get JSON Response
$json = file_get_contents($url);
// Decode response to array
$objectJSON = json_decode($json, true);
示例Json响应:
{
"genre":"soundcloud:genres:country",
"kind":"top",
"last_updated":"2016-03-24T09:50:02Z",
"collection":[
{
"track":{
"commentable":true,
"comment_count":211,
"downloadable":true,
"download_count":80,
"duration":251060,
.
.
.
"kind":"track",
.
.
.
.
"license":"all-rights-reserved",
"streamable":true,
"title":"Award winning Falling Star",
"uri":"https://api.soundcloud.com/tracks/245170733",
.
.
.
"country_code":"US"
}
"score":1093171.0
},
{
...
},
OTHER TRACKS HERE...
],
"query_urn":"soundcloud:charts:bc9b903f2cee44e7bca955bc2fc4601d",
"next_href":"https://api-v2.soundcloud.com/charts?genre=soundcloud%3Agenres%3Acountry&query_urn=soundcloud%3Acharts%3Abc9b903f2cee44e7bca955bc2fc4601d&offset=20&kind=top&limit=20"
}
}
如需阅读JSON回复内容:
// Read Json taking for example Name, Title and SoundCloud URI of song.
foreach ($objectJSON["collection"] as $key => $value) {
echo 'user: ' . $value['track']['user']['full_name'] . "<br/>";
echo 'title: ' . $value['track']['title'] . "<br/>";
echo 'url: ' . $value['track']['uri'] . "<br/><br/>";
}
echo $response;
?>
这个PHP的结果:
user: ...
title: ...
url: ...
user: ...
title: ...
url: ...
...
希望对您有所帮助,抱歉我的英语不好。
编辑:
我认为 SoundCloud 改变了获取下一页的方式。
现在您需要更改 "offset" 参数。
像这样:
Page 1: ....&limit=20&offset=0
Page 2: ....&limit=20&offset=20
Page 3: ....&limit=20&offset=40
@VietHung 问题的答案。
问:您可以浏览系统播放列表吗?
(例如:soundcloud:system-playlists charts-top:all-music)
为了找到系统播放列表,我使用了 Charles Web Debugging Proxy。
这个想法是嗅探 SoundClound App 从 iOS 设备发送的网络包(在我的例子中)。
配置 Charles 正确嗅探 SSL 包后,您可以使用您的电脑作为智能手机的代理。
(您必须在 Windows 和 iOS 设备上安装 Charles 证书才能正确嗅探 SSL 包,有关更多信息,请在 google 上搜索)。
现在,打开 SoundCloud 应用程序并单击应用程序内的每个播放列表(TOP、NEWS)。
屏幕截图下方(质量由油漆驱动,抱歉啊):
现在在 Charles 中我们可以看到这样的东西:
为了更好地读取传入的包,我只将焦点设置在 SoundCloud 主机上。
Charles 很聪明,将所有类似的请求放入一个子文件夹中,在我们的例子中,我们必须查看 'system-playlist' 内的所有请求。
现在您可以从所有请求中检索所有系统播放列表值。
我没有列出所有播放列表中的歌曲,因为目前我没有太多时间。
我会尽快用可能的系统播放列表值的完整列表编辑此 post。
有没有办法使用 soundcloud api 访问新排行榜 https://soundcloud.com/charts/top(前 50 名)?或者有其他方法吗?
也许用 php 或其他方式进行抓取?
这是一个例子:
https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3Agenres%3Aall-music&client_id=02gUJC0hH2ct1EGOcYXQIzRFU91c72Ea&limit=20&offset=0
只需根据您的客户ID等更改参数即可
要找到可用于 HTTP API 请求的参数,您可以这样做:
- 转到“https://soundcloud.com/charts/”并打开控制台(Chrome 上的 F12)。
- 进入控制台的网络选项卡并刷新页面 (F5)。
- 清除控制台。
现在例如,如果您想知道检索参数 "TOP 50 - Dance & EDM":
- 更改过滤框内的值
- 查看控制台,请求开头为:"charts?kind="
- 在这个里面搜索url参数。
一些例子:
返回顶部 |舞蹈与电子舞曲
https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3Ageneres%3Adanceedm&client_id=...
返回顶部 |深屋
https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3A流派%3Adeephouse&client_id=...
新热
国家 https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud%3A 流派%3A国家&client_id=...
所有参数:
种类:
- 前 <- 前 50
- 趋势 <- 新 & 热门
类型:
- soundcloud:genres:all-music
- soundcloud:genres:all-audio
- soundcloud:genres:alternativerock
- soundcloud:流派:环境
- soundcloud:流派:古典
- soundcloud:genres:country
- soundcloud:流派:danceedm
- soundcloud:流派:舞厅
- soundcloud:流派:deephouse
- soundcloud:流派:disco
- soundcloud:genres:drumbass
- soundcloud:流派:dubstep
- soundcloud:流派:电子
- soundcloud:genres:folksingersongwriter
- soundcloud:流派:hiphoprap
- soundcloud:流派:house
- soundcloud:流派:indie
- soundcloud:genres:jazzblues
- soundcloud:流派:拉丁语
- soundcloud:流派:金属
- soundcloud:流派:钢琴
- soundcloud:genres:pop
- soundcloud:流派:rbsoul
- soundcloud:流派:雷鬼
- soundcloud:genres:reggaeton
- soundcloud:流派:摇滚
- soundcloud:genres:soundtrack
- soundcloud:流派:techno
- soundcloud:流派:trance
- soundcloud:流派:trap
- soundcloud:流派:triphop
- soundcloud:genres:world
- soundcloud:genres:audiobooks
- soundcloud:流派:商业
- soundcloud:流派:喜剧
- soundcloud:流派:娱乐
- soundcloud:流派:学习
- soundcloud:genres:newspolitics
- soundcloud:genres:religionspirituality
- soundcloud:流派:科学
- soundcloud:流派:运动
- soundcloud:流派:讲故事
- soundcloud:流派:技术
php 中的示例以获得 TOP50 的 json 响应 - 国家/地区:
URL: https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3A 流派%3A国家&client_id=XXXXXXXXXXX&limit=10 &linked_partitioning=1
URL 参数:
种类:顶部
类型:soundcloud:genres:country
client_id: XXXXXXXXXXX
限制:10
linked_partitioning: 1
限制:您希望收到多少首歌曲作为回应。
linked_partitioning:页数,根据限制。
例如linked_partitioning 限制 = 10:
- 1 从 0 到 9 获取歌曲
- 2 从 10 到 19 获取歌曲
- ...
例如linked_partitioning 限制 = 20:
- 1 从 0 到 19 获取歌曲
- 2 获取歌曲从 20 到 39
- ...
现在你有 URL,如果你想用 PHP
检索 JSON 响应
你必须写例如:
<?php
$url = "https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3Agenres%3Acountry&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&limit=10&linked_partitioning=1";
// Get JSON Response
$json = file_get_contents($url);
// Decode response to array
$objectJSON = json_decode($json, true);
示例Json响应:
{
"genre":"soundcloud:genres:country",
"kind":"top",
"last_updated":"2016-03-24T09:50:02Z",
"collection":[
{
"track":{
"commentable":true,
"comment_count":211,
"downloadable":true,
"download_count":80,
"duration":251060,
.
.
.
"kind":"track",
.
.
.
.
"license":"all-rights-reserved",
"streamable":true,
"title":"Award winning Falling Star",
"uri":"https://api.soundcloud.com/tracks/245170733",
.
.
.
"country_code":"US"
}
"score":1093171.0
},
{
...
},
OTHER TRACKS HERE...
],
"query_urn":"soundcloud:charts:bc9b903f2cee44e7bca955bc2fc4601d",
"next_href":"https://api-v2.soundcloud.com/charts?genre=soundcloud%3Agenres%3Acountry&query_urn=soundcloud%3Acharts%3Abc9b903f2cee44e7bca955bc2fc4601d&offset=20&kind=top&limit=20"
}
}
如需阅读JSON回复内容:
// Read Json taking for example Name, Title and SoundCloud URI of song.
foreach ($objectJSON["collection"] as $key => $value) {
echo 'user: ' . $value['track']['user']['full_name'] . "<br/>";
echo 'title: ' . $value['track']['title'] . "<br/>";
echo 'url: ' . $value['track']['uri'] . "<br/><br/>";
}
echo $response;
?>
这个PHP的结果:
user: ...
title: ...
url: ...
user: ...
title: ...
url: ...
...
希望对您有所帮助,抱歉我的英语不好。
编辑:
我认为 SoundCloud 改变了获取下一页的方式。 现在您需要更改 "offset" 参数。
像这样:
Page 1: ....&limit=20&offset=0
Page 2: ....&limit=20&offset=20
Page 3: ....&limit=20&offset=40
@VietHung 问题的答案。
问:您可以浏览系统播放列表吗?
(例如:soundcloud:system-playlists charts-top:all-music)
为了找到系统播放列表,我使用了 Charles Web Debugging Proxy。
这个想法是嗅探 SoundClound App 从 iOS 设备发送的网络包(在我的例子中)。
配置 Charles 正确嗅探 SSL 包后,您可以使用您的电脑作为智能手机的代理。
(您必须在 Windows 和 iOS 设备上安装 Charles 证书才能正确嗅探 SSL 包,有关更多信息,请在 google 上搜索)。
现在,打开 SoundCloud 应用程序并单击应用程序内的每个播放列表(TOP、NEWS)。
屏幕截图下方(质量由油漆驱动,抱歉啊):
现在在 Charles 中我们可以看到这样的东西:
为了更好地读取传入的包,我只将焦点设置在 SoundCloud 主机上。
Charles 很聪明,将所有类似的请求放入一个子文件夹中,在我们的例子中,我们必须查看 'system-playlist' 内的所有请求。
现在您可以从所有请求中检索所有系统播放列表值。
我没有列出所有播放列表中的歌曲,因为目前我没有太多时间。
我会尽快用可能的系统播放列表值的完整列表编辑此 post。