【问题标题】:Using Spotify webAPI to play random album of artist (ID)使用 Spotify webAPI 播放艺术家(ID)的随机专辑
【发布时间】:2016-08-15 20:28:59
【问题描述】:

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

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

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

我看过这个代码示例: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 定义,以便艺术家是正确的。

有人可以帮我解决我的问题吗?完成我的目标还需要哪些信息?

如果有人能给我一个提示或其他任何东西,我会非常感激,以找到正确的方向。

最好的问候, 去吧

【问题讨论】:

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


    【解决方案1】:

    你必须在这里修改你的fetchTracks函数:

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

    jsFiddle link

    【讨论】:

    • @goeste 你试过附加 jsfiddle 吗?
    • 嗨 Oleg,是的,我做到了,但这实际上是来自 spotify 的示例脚本。我只想获得一张(我选择的)图像并在其后面放置一个链接。该链接应该开始播放某个音乐家/艺术家的随机专辑;)
    【解决方案2】:

    我离终点线有点近了……好吧,我猜:

    我在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

    【讨论】:

    • 好的,找到了限制。我需要更改请求行:spotifyApi.getArtistAlbums('3meJIgRw7YleJrmbpbJK6S', {limit: 50})
    猜你喜欢
    • 2015-01-30
    • 2017-06-17
    • 1970-01-01
    • 2013-01-24
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多