使用 Spotify webAPI 播放艺术家(ID)的随机专辑
Posted
技术标签:
【中文标题】使用 Spotify webAPI 播放艺术家(ID)的随机专辑【英文标题】:Using Spotify webAPI to play random album of artist (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 定义,以便艺术家是正确的。
有人可以帮我解决我的问题吗?完成我的目标还需要哪些信息?
如果有人能给我一个提示或其他任何东西,我会非常感激,以找到正确的方向。
最好的问候, 去吧
【问题讨论】:
【参考方案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)
以上是关于使用 Spotify webAPI 播放艺术家(ID)的随机专辑的主要内容,如果未能解决你的问题,请参考以下文章
Spotify - 如何创建一个播放列表,包括艺术家的某些专辑