有没有办法使用soundcloud api访问新图表https://soundcloud.com/charts/top(前50名)?或者还有其他方式吗?
也许用php或其他什么东西爬行?
答案 0 :(得分:15)
要找到可用于HTTP API请求的参数,您可以执行以下操作:
现在举例来说,如果你想知道反击的参数" TOP 50 - Dance& EDM":
一些例子:
TOP |舞蹈& EDM
https://api-v2.soundcloud.com/charts?kind = top & genre = soundcloud %3A generes %图3A的 danceedm 强>&安培; CLIENT_ID = ...
TOP |深屋
https://api-v2.soundcloud.com/charts?kind = top & genre = soundcloud %3A 流派%图3A的 deephouse 强>&安培; CLIENT_ID = ...
新&热门
国家 https://api-v2.soundcloud.com/charts?kind = 趋势& genre = soundcloud %3A 流派%3A 国家强>&安培; CLIENT_ID = ...
所有参数:
种:
类型:
php中获取TOP50的json响应的示例 - 国家/地区:
URL: https://api-v2.soundcloud.com/charts?kind = top &amp; genre = soundcloud %3A 流派%3A 国家强>&安培; CLIENT_ID = <强> XXXXXXXXXXX 强>&安培;极限= <强> 10 强>&安培; linked_partitioning = <强> 1 强>
网址参数:
种类:顶部
类型:soundcloud:流派:国家
client_id:XXXXXXXXXXX
限制:10
linked_partitioning:1
限制:您希望收到多少首歌曲。
linked_partitioning:页码,根据限制。
e.g。 linked_partitioning与Limit = 10:
e.g。 linked_partitioning与Limit = 20:
现在你有了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已经改变了获取下一页的方式。 现在你需要改变&#34;偏移&#34; PARAM。
像这样:
Page 1: ....&limit=20&offset=0
Page 2: ....&limit=20&offset=20
Page 3: ....&limit=20&offset=40
要查找系统播放列表,我使用了 Charles Web Debugging Proxy 想法是从iOS设备(在我的例子中)嗅探由SoundClound App发送的网络包。
之后,您将Charles配置为正确嗅探SSL包,您可以将pc用作智能手机的代理 (您必须在Windows和iOS设备上安装Charles证书才能正确嗅探SSL包,有关更多信息,请搜索google)。
现在,打开SoundCloud App并点击应用内的每个播放列表(TOP,NEWS)。
截图下方(质量由油漆提供,抱歉ahah):
现在在查尔斯内部我们可以看到这样的事情:
我将焦点仅设置在SoundCloud主机上,以便更好地读取传入的包 Charles很聪明,并将所有类似的请求放入子文件夹中,在我们的例子中,我们必须查看系统播放列表中的所有请求。
现在,您可以从所有请求中检索所有系统播放列表值。
我没有列出所有的播放列表歌曲,因为目前我没有太多时间 我尽快编辑这篇文章,并附上可能的系统播放列表的完整列表。
答案 1 :(得分:-1)
以下是一个例子:
https://api-v2.soundcloud.com/charts?kind=top&genre=soundcloud%3Agenres%3Aall-music&client_id=02gUJC0hH2ct1EGOcYXQIzRFU91c72Ea&limit=20&offset=0
只需根据您的客户ID等更改参数