2015-03-18 4 views
0

Как добиться того, чтобы все треки в Deezer Radio API остались неизменными и, следовательно, воспроизводимыми?Дизельная радиостанция: идентификатор дорожки не в радио

Объяснение: У меня есть Deezer App (HTML + JavaScript, никаких внешних библиотек) на Set-Top-Box.

Приложение захватывает список радиопередач из вышеупомянутого API. Затем он воспроизводит дорожки, извлекает URL-адрес для каждого трека с streaming API.

Иногда список радиодорожек остается неизменным для многих вызовов API, а иногда список изменяется при каждом вызове. Почему это так? Когда трек радио больше не находится в списке радиостанции, потоковое API возвращает ошибку:

{ 
    error: { 
     type: "DataException", 
     message: "Track id not in radio", 
     code: 800 
    } 
} 

Например, я получаю список из 40 треков для конкретного радио, потоковое API обычно возвращает полные потоковые URL, но каждый 5-ый или поэтому трек не воспроизводится (иначе API Deezer выкидывает выше ошибки), это происходит не из-за вызова API-интерфейса erroneus, а потому, что этот конкретный трек больше не находится в исходном списке из 40 треков ... или это мое собственное предположение, по крайней мере.

Поэтому я ищу способ иметь фиксированный список из 40 треков, которые не будут меняться, пока я не сыграю все 40 из них, а затем получаю новый список. Это возможно или я чего-то не хватает?

Спасибо!

ответ

0

Существует два способа достичь этого с помощью JavaScript SDK.

1) Вы можете напрямую воспроизводить радио с DZ.player.playRadio(radio_id)

2) Если вы действительно хотите фиксированный список, вы можете получить список дорожек на http://api.deezer.com/radio/radio_id/tracks затем воспроизводить все треки с DZ.player.playTracks(tracks)

Пример:

DZ.api('/radio/30771/tracks', function(result) { 
    var tracks = result.data.map(function(elem) { 
     return elem.id; 
    }); 

    DZ.player.playTracks(tracks); 
}); 

EDIT: После обсуждения в комментарии, решение просто играть прямо на дорожку, не говоря уже о radio_id в т он транслирует url.

+0

Наше приложение не использует JS SDK, оно построено в чистом javascript без каких-либо html-div и css, используя возможности проигрывателя STB. Вызов API выглядит так же, как ваш, без тега 2.0: 'var url = 'http://api.deezer.com/2.0/radio/' + _radioId + '/ tracks';' – ivo007

+0

Просто получите список всех треки с вызовом API один раз, а затем воспроизводить все треки индивидуально, если у вас есть собственный проигрыватель. – Pierrickouw

+1

Спасибо, GreenLeaf, но я уже это делаю: я получаю список всех треков один раз, а затем воспроизвожу все треки индивидуально - до тех пор, пока я не получу ошибку, что идентификатор трека не находится в радио (больше?), Где он был, когда список был сначала вызван. Отсюда мой первоначальный вопрос :) – ivo007