2012-12-18 48 views

回答

5

最近這個問題已經得到解決,因爲這部分是由於所需文件的一半在那裏。現在它已經修復,但它仍然可能不起作用。

明顯的第一步是使用API​​來獲取軌道stream_url,它看起來像http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID

如果您使用本作中的SoundCloud媒體網址,你會發現,你按下播放鍵,如果你有可視化他們將工作,並且一切都很好。但是,如果您現在暫停軌道並再次按播放,您將收到數據錯誤,元數據將停止訪問,並且您的可視化將會中斷。這是因爲api.soundcloud.com有一個跨域文件,當你訪問它時,你會得到一個3XX重定向到ec-media.soundcloud.com。這個站點現在也有一個crossdomain.xml文件,但是那個煩人的3XX重定向破壞了這兩個權限,所以你遇到了一個錯誤。

答案就是你首先在soundmanager2之外進行重定向跳躍,這樣就沒有重定向會打斷它。例如在Python中:

import urllib2 
starturl = 'http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID' 
res = urllib2.urlopen(starturl) 
finalurl = res.geturl() 
print finalurl 

這可能會更優雅,但它會打印api重定向到的url。此網址看起來像http://ec-media.soundcloud.com/2j0lNF81jv9m.128.mp3?LONG_STRING&AWSAccessKeyId=ACCESS_KEY&Expires=1355864871&Signature=SIGNATURE

此域具有crossdomain.xml文件,並且由於沒有重定向,事情將平穩運行,數據將被訪問,一切都會很好。

「我這樣做,它的工作,但現在它說,該文件是被禁止的」

現在,我們提請您注意前面的網址,尤其是&Expires=1355864871。您被重定向到的文件不是永久性的,所以您需要每次抓取它。對我來說,這很簡單,我在django工作,所以我可以簡單地在我的視圖腳本中運行上面的python。你必須找到一種方法在你選擇的代碼中實現這一點。 (也應該在JavaScript中工作)。

完成這一切後,您應該可以暫停並按需要播放,並檢索波形數據,EQ數據和峯值數據。有了這些,可以做一些有趣的事情。希望這有助於。

+1

嗨Liam,再次感謝您的詳細解釋。你可以接受你自己的答案順便說一句:-) –

+0

不是2天:第 –