2016-04-22 6 views
2

私は開発者ではないので、私自身の "小さな"プロジェクトです。私の愚かな質問のために私を責めないでください。Spotify webAPIを使用して、アーティスト(ID)のランダムアルバムを再生する

"オーディオブックマシン"を作成します。

複数のオーディオブックアーティストを表示するウェブサイトを使用したいと思います。 1つのアーティストをクリックすると、クリックされたアーティストのランダムなオーディオブックが再生されます。

私は、このコードの例を見ていた:http://jsfiddle.net/qlmhuge/t7a1sh4u/

// find template and compile it 
var templateSource = document.getElementById('results-template').innerHTML, 
    template = Handlebars.compile(templateSource), 
    resultsPlaceholder = document.getElementById('results'), 
    playingCssClass = 'playing', 
    audioObject = null; 

var fetchTracks = function (albumId, callback) { 
    $.ajax({ 
     url:  'https://api.spotify.com/v1/artists/61qDotnjM0jnY5lkfOP7ve/albums/', 
     success: function (response) { 
      callback(response); 
     } 
    }); 
}; 

var searchAlbums = function (query) { 
    $.ajax({ 
     url: 'https://api.spotify.com/v1/search', 
     data: { 
      q: 'artist:' + query, 
      type: 'album', 
      market: "DE" 
     }, 
     success: function (response) { 
      resultsPlaceholder.innerHTML = template(response); 
     } 
    }); 
}; 

results.addEventListener('click', function(e) { 
    var target = e.target; 
    if (target !== null && target.classList.contains('cover')) { 
     if (target.classList.contains(playingCssClass)) { 
      audioObject.pause(); 
     } else { 
      if (audioObject) { 
       audioObject.pause(); 
      } 
      fetchTracks(target.getAttribute('data-album-id'), function(data)  {    
       audioObject = new Audio(data.tracks.items[0].preview_url); 
       audioObject.play(); 
       target.classList.add(playingCssClass); 
       audioObject.addEventListener('ended', function() { 
        target.classList.remove(playingCssClass); 
       }); 
       audioObject.addEventListener('pause', function() { 
        target.classList.remove(playingCssClass); 
       }); 
      }); 
     } 
    } 
}); 

searchAlbums('TKKG'); 

を、私は一人のアーティストによってランダムアルバムを再生するには、それを変更する方法を見つけ出すことはできません。

アーティストは、アーティストが正しいものでないように、スポットIDで定義されます。

誰かが私の問題を助けてくれますか?私の目標を達成するために必要な情報は他にありますか?

正しい方向に向かうためにヒントを与えることができれば、とても感謝します。

敬具、あなたがここにあなたのfetchTracks機能を変更する必要が goeste

答えて

0

var fetchTracks = function (albumId, callback) { 
    $.ajax({ 
     url: 'https://api.spotify.com/v1/albums/' + albumId, 
     success: function (response) { 
      callback(response); 
     } 
    }); 
}; 

jsFiddle link

+0

ありがとうございますが、これは1人のアーティストのすべてのアルバムを一覧表示します... – goeste

+0

@goeste添付されたjsfiddleを試しましたか? –

+0

こんにちはオレグ、はい私はしましたが、それは実際にspotifyからのスクリプト例です。私はちょうど(私の選択の)イメージを取得して、その背後にリンクを置いたかった。リンクは、特定のミュージシャン/アーティストのランダムなアルバムを再生するよりも開始する必要があります;) – goeste

0

私は、フィニッシュラインにもう少し近くなった...よく、I推測:

私はGitHubの上で次を見つけました:

しかし、私は35のうち20枚のアルバムしか取得できません。制限を大きくする必要があります。私がSpotifyの開発者サイトを読んだとき、最大限は50です。 35枚のアルバムの中からランダムに1枚だけを取得すればよいので、どのようにランダム化機能を実装して機能させることができますか?

node.jsのウェブサイトに表示する結果からリンクを作成する方法をまだ考えています。

よろしくお願いします。ご協力いただきありがとうございます。 -goeste

+0

OK、限界を把握しました。リクエストラインを変更する必要がありました: 'spotifyApi.getArtistAlbums( '3meJIgRw7YleJrmbpbJK6S'、{limit:50})' – goeste

関連する問題