使用Spotify webAPI播放艺术家的随机专辑(ID)

时间:2016-04-22 09:22:46

标签: html node.js asp.net-web-api raspberry-pi spotify

这是我的“小”项目,因为我自己不是开发人员,请不要因为我的愚蠢问题而责备我。

我想创建一个“有声书机”。

我想使用一个网站,该网站展示了几位有声读物的艺术家。如果我点击一位艺术家,则应播放点击艺术家的随机有声读物。

我看了一下这段代码示例: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');

但我无法弄清楚如何更改它以播放一位艺术家的随机相册。

艺术家将通过spotify ID进行定义,以便艺术家是正确的。

有人可以帮我解决我的问题吗?还有什么其他信息可以完成我的目标?

如果能给我一些暗示,或者其他什么,我会非常感激,以便找到正确的方向。

祝你好运, goeste

2 个答案:

答案 0 :(得分:0)

您必须在此处修改fetchTracks功能:

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

jsFiddle link

答案 1 :(得分:0)

我离终点线更近了......好吧,我猜:

我在GitHub上找到了以下内容:

var SpotifyWebApi = require('spotify-web-api-node');

var spotifyApi = new SpotifyWebApi();

// credentials are optional
// var spotifyApi = new SpotifyWebApi({
//   clientId : '',
//   clientSecret : '',
//   redirectUri : ''
// });

// Get albums by a certain artist
spotifyApi.getArtistAlbums('3meJIgRw7YleJrmbpbJK6S')
  .then(function(data) {
    console.log('Artist albums', data.body);
  }, function(err) {
    console.error(err);
  });

但是,我只能从35张专辑中获得20张专辑。我需要增加限制。正如我在Spotify的开发者网站上看到的那样,最大限制为50。因为我只需要从35张专辑(随机)中获得一张,我如何实现随机化功能并发挥功能才能发挥作用?

我仍在研究如何根据结果创建链接以显示在node.js的网站上。

致以最诚挚的问候,并提前感谢您的帮助/帮助! -goeste