我讀到試圖流即使「流化」屬性設置爲true的軌道返回404錯誤此的SoundCloud的API錯誤處理的SoundCloud的的JavaScript API 404錯誤。如何在以流的軌道
我發現了一些關於該主題的其他問題(請參閱「Tracks for 「The Hives」 are not streaming via the api」或「Soundcloud API SC.stream (track not loading)」),但我想知道的是如何檢測錯誤以及如何解決此問題。我嘗試了一些try {} catch() {}
,但似乎我無法檢測到問題。
下面是一些背景資料:
我有一個php返回一個JSON陣列曲目播放列表。我的腳本逐個讀取數組,然後嘗試播放當前的數組。一切正常,但當404 error
返回腳本結束,而不會跳到下一個軌道。看來我無法檢測到這種問題。
這裏是JavaScript方法管理流:
playTrack = function() {
// console.log('playTrack');
SC.get(
"/tracks/" + playlist[ now_playing ].sndc_id,
function(track, error) {
if (error) {
sendErrorReport(playlist[ now_playing ].id);
loadNext();
} else {
try {
SC.stream(
"/tracks/" + playlist[ now_playing ].sndc_id,
function(sound, error) {
sound_object = sound;
if (error || !sound_object) {
sendErrorReport(playlist[ now_playing ].id);
loadNext();
} else {
sound_object.play(
{
'from': parseInt(current_position),
'onfinish': function() {
current_position = 0;
updateCounter();
$('#radio-waveform-position').css({ 'opacity': '0', 'width' : '0%' });
loadNext();
},
'onplay': function() {
$('#radio-like').removeClass('liked');
playing = true;
updateInfo();
},
'whileplaying': function() {
current_position = this.position;
$('#radio-waveform-position').css({ 'opacity': '1', 'width' : (100 * current_position/this.duration).toFixed(3) + '%' });
},
'ondataerror': function() {
sendErrorReport(playlist[ now_playing ].id);
loadNext();
}
}
);
if ($('html').hasClass('touch') || !autoplay) $('#radio-play-pause').click();
}
}
);
} catch (err) {
sendErrorReport(playlist[ now_playing ].id);
loadNext();
}
}
}
);
}
看來,無論是SC.get
和SC.stream
「錯誤」返回參數始終爲空這樣的「錯誤」的軌道。正如你所看到的,我試圖將所有東西都包裹在try() {} catch() {}
中,但沒有成功。此外,sound_object.play()
ondataerror
方法完全被忽略。
腳本中可以看到這裏的行動:http://foggetabout.it/
我讀到有人找到了一個解決辦法,但沒有解釋。有沒有人有任何想法如何解決它?
是否仍然返回404如果你使用這個JS API? 'http:// connect.soundcloud.com/sdk-2.0.0.js' – Marco
我想我必須重寫我的代碼才能使它工作,如果我只是替換腳本(現在我加載'http:// connect。 soundcloud.com/sdk.js')應用程序凍結,沒有任何錯誤。我會嘗試,謝謝。 – simonelippolis