MusicKitJS:无法播放用户库中的歌曲
MusicKitJS: Can't play songs from user's library
所以我正在试用上周发布的 Apple MusicKit JS
(https://developer.apple.com/documentation/musickitjs)。我无法播放从库端点获取的歌曲,据我所知这是因为 id 格式。
如果我使用他们的文档示例并将队列设置为 ID 类似于 1025210938
的专辑,歌曲可以正常播放。但是,当从用户的 iCloud 库中获取歌曲时(即 /v1/me/library/albums
或在 musickitjs 中 music.api.library.albums()
),我得到一个看起来像 l.uUZAkT3
的 id,当我尝试播放它们。
也许更熟悉 Apple Music API 的一般工作方式或使用 MusicKit for iOS 的人可以让我知道这是为什么或如何获得可用的 id用户的图书馆项目。
大部分 MusicKit JS 都是基于 Promises 的。 setQueue
方法是这些基于 Promise 的方法之一。
特别是 setQueue
可以为您获取数据,如果您还没有方便的 API 数据响应。
为了确保数据可以使用,您可能希望在已解析的 Promise 中执行任何播放功能。
MusicKit.getInstance().setQueue({ album: 'l.abc123'}).then(function(queue) {
MusicKit.getInstance().play();
});
或
MusicKit.getInstance().api.library.albums().then(function(albums) {
MusicKit.getInstance().setQueue(albums[0]).then(function(queue) {
MusicKit.getInstance().play();
});
});
对于@AlexRabin:我在点击 li 元素时进行了播放,如下所示:
$('div.results').on("click",'li',function(){
var index = $(this).index();
console.log("li clicked "+index);
var klasarodzica = $(this).parent().attr("class");
let playParams = {};
if (klasarodzica == "songs") {
playParams = window.songsarray[index].attributes.playParams;
}
if (klasarodzica == "albums") {
playParams = window.albumsarray[index].attributes.playParams;
}
var kind = playParams.kind;
let id = playParams.id;
let playobj ={[kind]:id};
music.setQueue(playobj).then(function() {
music.play();
});
});
但正如我所说,您必须在事件侦听器中编写整个应用程序,否则 music
对象是未知的。
所以我正在试用上周发布的 Apple MusicKit JS
(https://developer.apple.com/documentation/musickitjs)。我无法播放从库端点获取的歌曲,据我所知这是因为 id 格式。
如果我使用他们的文档示例并将队列设置为 ID 类似于 1025210938
的专辑,歌曲可以正常播放。但是,当从用户的 iCloud 库中获取歌曲时(即 /v1/me/library/albums
或在 musickitjs 中 music.api.library.albums()
),我得到一个看起来像 l.uUZAkT3
的 id,当我尝试播放它们。
也许更熟悉 Apple Music API 的一般工作方式或使用 MusicKit for iOS 的人可以让我知道这是为什么或如何获得可用的 id用户的图书馆项目。
大部分 MusicKit JS 都是基于 Promises 的。 setQueue
方法是这些基于 Promise 的方法之一。
特别是 setQueue
可以为您获取数据,如果您还没有方便的 API 数据响应。
为了确保数据可以使用,您可能希望在已解析的 Promise 中执行任何播放功能。
MusicKit.getInstance().setQueue({ album: 'l.abc123'}).then(function(queue) {
MusicKit.getInstance().play();
});
或
MusicKit.getInstance().api.library.albums().then(function(albums) {
MusicKit.getInstance().setQueue(albums[0]).then(function(queue) {
MusicKit.getInstance().play();
});
});
对于@AlexRabin:我在点击 li 元素时进行了播放,如下所示:
$('div.results').on("click",'li',function(){
var index = $(this).index();
console.log("li clicked "+index);
var klasarodzica = $(this).parent().attr("class");
let playParams = {};
if (klasarodzica == "songs") {
playParams = window.songsarray[index].attributes.playParams;
}
if (klasarodzica == "albums") {
playParams = window.albumsarray[index].attributes.playParams;
}
var kind = playParams.kind;
let id = playParams.id;
let playobj ={[kind]:id};
music.setQueue(playobj).then(function() {
music.play();
});
});
但正如我所说,您必须在事件侦听器中编写整个应用程序,否则 music
对象是未知的。