使用API​​访问Soundcloud图表

时间:2016-02-28 21:16:06

标签: soundcloud

有没有办法使用soundcloud api访问新图表https://soundcloud.com/charts/top(前50名)?或者还有其他方式吗?

也许用php或其他什么东西爬行?

2 个答案:

答案 0 :(得分:15)

要找到可用于HTTP API请求的参数,您可以执行以下操作:

  • 转到" https://soundcloud.com/charts/"并打开控制台(Chrome上的F12)。
  • 进入控制台和刷新页面的网络选项卡(F5)。
  • 清除控制台。

现在举例来说,如果你想知道反击的参数" TOP 50 - Dance& EDM":

  • 更改过滤器框内的值
  • 在控制台中检查以下开头的请求:"图表?kind ="
  • 在此网址中搜索参数。

一些例子:

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 = ...

所有参数:

种:

  • top< - Top 50
  • 趋势< - 新&热

类型:

  • 的SoundCloud:流派:全音乐
  • 的SoundCloud:流派:所有音频
  • 的SoundCloud:流派:alternativerock
  • 的SoundCloud:流派:环境
  • 的SoundCloud:流派:古典
  • 的SoundCloud:流派:国家
  • 的SoundCloud:流派:danceedm
  • 的SoundCloud:流派:舞厅
  • 的SoundCloud:流派:deephouse
  • 的SoundCloud:流派:迪斯科
  • 的SoundCloud:流派:Drumbass二代可
  • 的SoundCloud:流派:回响贝斯
  • 的SoundCloud:流派:电子
  • 的SoundCloud:流派:folksingersongwriter
  • 的SoundCloud:流派:hiphoprap
  • 的SoundCloud:流派:房子
  • 的SoundCloud:流派:独立
  • 的SoundCloud:流派:jazzblues
  • 的SoundCloud:流派:拉丁
  • 的SoundCloud:流派:金属
  • 的SoundCloud:流派:钢琴
  • 的SoundCloud:流派:弹出
  • 的SoundCloud:流派:rbsoul
  • 的SoundCloud:流派:雷鬼
  • 的SoundCloud:流派:雷鬼
  • 的SoundCloud:流派:岩石
  • 的SoundCloud:流派:配乐
  • 的SoundCloud:流派:TECHNO
  • 的SoundCloud:流派:恍惚
  • 的SoundCloud:流派:陷阱
  • 的SoundCloud:流派:triphop
  • 的SoundCloud:流派:世界
  • 的SoundCloud:流派:有声读物
  • 的SoundCloud:流派:业务
  • 的SoundCloud:流派:喜剧
  • 的SoundCloud:流派:娱乐
  • 的SoundCloud:流派:学习
  • 的SoundCloud:流派:newspolitics
  • 的SoundCloud:流派:religionspirituality
  • 的SoundCloud:流派:科学
  • 的SoundCloud:流派:运动
  • 的SoundCloud:流派:故事
  • 的SoundCloud:流派:技术

php中获取TOP50的json响应的示例 - 国家/地区:

URL: https://api-v2.soundcloud.com/charts?kind = top &amp; genre = soundcloud %3A 流派%3A 国家&安培; CLIENT_ID = <强> XXXXXXXXXXX &安培;极限= <强> 10 &安培; linked_pa​​rtitioning = <强> 1

网址参数:
种类:顶部 类型:soundcloud:流派:国家
client_id:XXXXXXXXXXX
限制:10
linked_pa​​rtitioning:1

限制:您希望收到多少首歌曲。
linked_pa​​rtitioning:页码,根据限制。

e.g。 linked_pa​​rtitioning与Limit = 10:

  • 1从0到9获得歌曲
  • 2从10到19获得歌曲
  • ...

e.g。 linked_pa​​rtitioning与Limit = 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: ...

...

Example of this code

我希望我帮助过你,对不起我的英语。

编辑:

我认为SoundCloud已经改变了获取下一页的方式。 现在你需要改变&#34;偏移&#34; PARAM。

像这样:

Page 1: ....&limit=20&offset=0
Page 2: ....&limit=20&offset=20
Page 3: ....&limit=20&offset=40

@VietHung问题的答案。

问:你可以探索系统播放列表吗? (例如:soundcloud:system-playlists chart-top:all-music)

要查找系统播放列表,我使用了 Charles Web Debugging Proxy 想法是从iOS设备(在我的例子中)嗅探由SoundClound App发送的网络包。

之后,您将Charles配置为正确嗅探SSL包,您可以将pc用作智能手机的代理 (您必须在Windows和iOS设备上安装Charles证书才能正确嗅探SSL包,有关更多信息,请搜索google)。

现在,打开SoundCloud App并点击应用内的每个播放列表(TOP,NEWS)。 截图下方(质量由油漆提供,抱歉ahah):
SoundCloud APP

现在在查尔斯内部我们可以看到这样的事情:

Charles_Request_Soundcloud

我将焦点仅设置在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等更改参数