2013-10-14 3 views
0

Spotify Apps API v1Spotify uri의

현재 재생중인 노래가 내 앱에 삭제 된 재생 목록에 있는지 확인하려고합니다. 그러나 두 가지 형태의 재생 목록 URI가있는 것으로 보입니다.

  1. http://open.spotify.com/user/[username]/playlist/[identifier]
  2. 스포티 파이 사용자 : @ : 재생 [식별자]

I는 가정 @ 두 번째 양식의 '현재 사용자'를 의미합니다. 불필요한 URI 비교 기능을 만들기 전에 뭔가 놓치고 있는지 확인하려고합니다.

+0

지금은 uri.substr (-22) – Thomas

답변

0

사용자가 애플리케이션에 재생 목록을 드롭하도록 허용하는 경우, 첫 번째 형식이됩니다. 당신이 눈치 챘을 때, 거기에 당신이 요구하는 것을 정확하게 수행하는 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" }); 
    } 
    }); 
} 

처럼 뭔가를 할 수 있습니다. 참고 사항 : 현재 재생중인 트랙 속성이 플레이어에로드되어 있고 해당 재생 목록의 트랙 속성이로드 된 경우에도 함수는 현재 스냅 샷을 가져 오기 때문에 여전히 비동기식입니다.

희망이 도움이됩니다.

+0

정말 나쁜 생각이납니다. 포맷 # 1은 spotify 내에서 재생 목록에서 내 앱으로 드래그하여 나타납니다. 0.9.4 이상. 하지만 드롭 된 이벤트 대신 html 드래그/드롭을 사용하고 있기 때문에 발생할 수 있습니다. – Thomas