2015-04-28 43 views
2

我需要從SoundCloud MP3文件獲取直接URL。從每首歌曲獲取HTTP MP3流

我通常使用以下方法: 解析曲目URL以獲取曲目ID,例如,使用https://soundcloud.com/linkin_park/burn-it-down

http://api.soundcloud.com/resolve.json?url=http://soundcloud.com/your/link/to/the/track&client_id=client_id 

,然後去stream_urls與

http://api.sndcdn.com/i1/tracks/track_id_here/streams?client_id=client_id

在大多數情況下, 「http_128_mp3_url」,我需要的URL,則返回,它直接鏈接到的的MP3歌曲。

但是在某些情況下,例如,當您使用https://soundcloud.com/dada-life/dada-life-september-2014-mix時,僅返回rtmp或hls流,我無法使用PHP或JavaScript將其轉換爲文件。

如在http://sounddrain.com/上看到的,在這種情況下也有一種獲取MP3文件鏈接的方法。

Sounddrain使我這個網址:

https://ec-media.sndcdn.com/KZ5qiLqZ0OSk.128.mp3?f10880d39085a94a0418a7ef69b03d522cd6dfee9399eeb9a522029c6df9ba3f0cf21c0c0d9baf9fe2d9aa920d344c36db47817ce450103d44677da7d832da82ef7609816e

有一個人一個想法如何得到下面的網址是什麼?

+0

可能的重複和討論在這裏:http://stackoverflow.com/questions/29455033/stream-url-of-soundcloud-track-where-streamble-is-false/29463185#29463185 – JAL

+0

@JAL我不能使用額外的工具像rtmpdump或ffmpeg,所以我需要依賴URL系統。 preview_url只有一部分曲目,而不是完整曲目的右鍵/值對。 – manniL

+0

可能值得一提的是,這與API的條款和條件相反。 https://developers.soundcloud.com/docs/api/terms-of-use#privacy使用不同應用程序的憑證也不太好。 – nickf

回答

8

我覺得這特別是與您傳遞到API請求CLIENT_ID的類型做。

HTTP GET: http://api.soundcloud.com/i1/tracks/167132129/streams?client_id=[CLIENT_ID] 

使用標準應用CLIENT_ID,我沒有看到http鏈接:

響應:

{ 
    "hls_mp3_128_url": "https://ec-hls-media.soundcloud.com/playlist/KZ5qiLqZ0OSk.128.mp3/playlist.m3u8?f10880d39085a94a0418a7e062b03d52bbdc0e179b82bde1d76ce7a51e4e690d4aa9adbb8e264aa259bfba6e1a3d52e8f8020eeb45fac9d9fbb175e4c35dbd26bdf59ac00d0f2cd80b7e7a685e9cd57c89622a7cc8b7266f4b7317b4", 
    "rtmp_mp3_128_url": "rtmp://ec-rtmp-media.soundcloud.com/mp3:KZ5qiLqZ0OSk.128?9527d18f1063a01f059bf10590159adb10dea0996b8c0cdb674f9c282214839d8263f0608a1a3bbe02e4a0ffc5cf5bef80087ca63aa316e338f6cbba24b1493d8355aea84dc2e529757f72273e1fdfc9f88437c992e92845b3e3", 
    "preview_mp3_128_url": "https://ec-preview-media.sndcdn.com/preview/0/90/KZ5qiLqZ0OSk.128.mp3?f10880d39085a94a0418a7e162b03d52e21adf826af17a391e1b741835259dfd645b4f9f979acc1e4d50dd281c2b93dca58d9e3bd086be0aed9c5ae0ae369364f50bd63ee4f1b167cc29b19cf3462f735b8f" 
} 

然而,使用YouTube-DL iPhone CLIENT_ID,返回HTTP URL :

響應:

{ 
    "http_mp3_128_url": "https://ec-media.sndcdn.com/KZ5qiLqZ0OSk.128.mp3?f10880d39085a94a0418a7ef69b03d522cd6dfee9399eeb9a522029c69f0bd356988380857d739f55360e9ce802160a1ecf506cfa53f249070d96b19de5ac3234cdbd4201d", 
    "hls_mp3_128_url": "https://ec-hls-media.soundcloud.com/playlist/KZ5qiLqZ0OSk.128.mp3/playlist.m3u8?f10880d39085a94a0418a7e062b03d52bbdc0e179b82bde1d76ce7a51e4e6e074a18d603fc2146725c4f70a8844d81268632e8339ce8b52aab8fcfbfd450330b409e8614da1996b8e4cd371f07c9eb0d5cc65ffbf60230336388b323", 
    "rtmp_mp3_128_url": "rtmp://ec-rtmp-media.soundcloud.com/mp3:KZ5qiLqZ0OSk.128?9527d18f1063a01f059bf10590159adb10dea0996b8c0cdb674f9c28221b8a972788cc587dee254b285c2a0c9e5b57a79b4bd174401f92b31df0cf4260d9f3f6fe542e181d30b4e9314ac36e70737095ddb2b215bd98884660cb", 
    "preview_mp3_128_url": "https://ec-preview-media.sndcdn.com/preview/0/90/KZ5qiLqZ0OSk.128.mp3?f10880d39085a94a0418a7e162b03d52e21adf826af17a391e1b7418352a94f7cbd4ec4b06d76ae6caf6f3cc29aed3f7b0922885d994c71a503c307cf86b653b3f6108990bebaae5a15efc74075285b13f23" 
} 

更多信息可以在youtube-dl頁面的this committhis issue中找到。我不知道普通的client_id和iPhone的client_id究竟有什麼區別,但我可以清楚地看到API請求返回的內容有什麼不同。看起來,iPhone client_id是SoundCloud iOS客戶端用來在應用程序中流化軌道的API密鑰。

+2

您好,先生,是英雄! – manniL

0

soundcloud將所有上傳重新編碼爲128k mp3進行流媒體播放。只要您已啓用流式和軌道是公共的,所有你需要的應該是

https://api.soundcloud.com/tracks/TRACKID/stream?client_id=CLIENTID

+0

如上所述,我需要鏈接到MP3文件。對於給定的歌曲,這種方法不起作用。 – manniL

+0

然後你可以使用諸如youtube-dl http://yt-dl.org這樣的工具。 $ youtube-dl -g https://soundcloud.com/user/track -g選項將返回您正在查找的資源。 – DopeLabs

+0

可能是一個選項,但我不想依賴於其他程序或服務 – manniL

相關問題