Сравнить Spotify Uri's

API приложений Spotify v1

Попытка определить, находится ли воспроизводимая в данный момент песня из списка воспроизведения, который был добавлен в мое приложение. Однако, кажется, есть две формы плейлиста uri.

  1. http://open.spotify.com/user/[username]/playlist/[identifier]
  2. Spotify: Пользователь: @: список воспроизведения: [идентификатор]

Я предполагаю, что @ во второй форме означает "текущий пользователь". Перед тем, как начать создавать функцию сравнения URI, которая может быть избыточной, я подумал, что я проверю, не пропустил ли я что-то.

1 ответ

Решение

Если вы позволяете пользователям добавлять плейлисты в ваше приложение, они будут иметь первый формат. Как вы заметили, в API нет метода, который бы выполнял именно то, что вы запрашиваете, но вы могли бы сделать что-то вроде

var currentlyPlayingIsInPlaylist = function(playlistURI, callback) {
  models.player.load("track").done(function() {
    if (models.player.track) {
      var currentlyPlayingTrack = models.player.track;
      models.Playlist.fromURI(playlistURI).load("tracks").done(function(playlist) {
        playlist.tracks.snapshot().done(function(snapshot) {
          var matchingTrack = snapshot.find(currentlyPlayingTrack);
          if (matchingTrack) {
            callback(true);
          } else {
            callback(false);
          }
        });
      });
    } else {
      callback(null, { "message" : "No track is playing" });
    }
  });
}

Учитывая, что модели доступны в функции. Примечание: даже если в Player было загружено текущее свойство дорожки, а для данного списка воспроизведения загружено свойство дорожек, функция все равно будет асинхронной, поскольку она получает текущий снимок.

Надеюсь это поможет!

Другие вопросы по тегам