问题标签 [libspotify]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spotify - libspotify:我可以用图像 ID 做什么和不能做什么?
各种 libspotify API 函数处理图像 ID:
这些都返回一个图像 ID 作为const byte*
:
sp_image_create
将图像 ID 参数作为const byte[20]
,而sp_playlist_get_image
将图像 ID 参数作为byte[20]
并用图像 ID 值填充它。
在这个问题中,一位 Spotify 员工表示图像 ID 的内容是不透明的,并且 20 的大小不一定是图像 ID 的准确长度:libspotify API:图像 ID 格式?
sp_image_create 采用 20 字节长的 image_id 参数。这是否意味着图像 id 的最大长度为 20 字节?
不。 sp_subscribers 是我们为编译器输入假号码的另一个例子。图像 id 指针的内容是不透明的,并且可能在不同版本之间发生变化。不要编写对它们做出假设的代码,因为它会破坏。
但是,为了使用sp_playlist_get_image
,调用者需要分配数组来存储图像 ID。这似乎是不一致的建议,或者至少令人惊讶。以下内容哪些是对的?
- 解释 A:图像 ID 总是正好是 20 个字节。
- 解释 B:图像 ID 的长度可能不超过 20 个字节。
- 解释 C:图像 ID 可以是任意长度,但返回的图像 ID
sp_playlist_get_image
保证不超过 20 个字节。 - 解释 D:图像 ID 可能是任意长度,
sp_playlist_get_image
根本无法安全使用。
我认为链接问题的答案排除了 A 和可能的 B,所以我认为答案可能是 C,尽管如此令人沮丧。一个彻头彻尾的悲观主义者可能会选择 D。
我很感兴趣,因为我正在尝试编写比现有libspotify.net更安全和更高级别的 .NET 包装器,并且我不确定如何在托管代码中显示图像 ID。我认为唯一的事情是有两种替代实现 - 一种具有 20 字节缓冲区,表示从 返回的图像 ID sp_playlist_get_image
,另一种具有 IntPtr,表示从其他任何东西返回的图像 ID。如果库对图像 ID 的大小和性质做出了足够的保证,我总是可以使用自己的缓冲区并在必要时复制到其中,但我担心 libspotify 不太可能做出足够强大的保证来允许这样做。
spotify - libspotify 期望与打包相关的编译器标志是什么?
我在 Windows 上使用 libspotify 12.1.51。虽然它主要按预期工作,但我遇到了一些困难sp_offline_sync_status
:
(sp_uint64
在 Windows 上是 unsigned __int64 的 typedef,否则是 uint64_t。在 C(不是 C++)中构建时,如果 bool 没有另外定义,它是 unsigned char 的 typedef。)
当我打电话时sp_offline_sync_get_status
,queued_tracks
似乎只有正确的数据,其余的都是垃圾。但是,如果我将头文件编辑为包含#pragma pack(1)
,它似乎会给出更合理的结果。即使我尝试构建spshell
libspotify 附带的示例,我也会观察到这种行为。*
这使我相信 libspotify 二进制文件是使用一些与默认值不同的编译器标志编译的,至少在使用 Visual C++ 的 Windows 上是这样。我应该如何编译 C 或 C++ 代码以使用 libspotify?或者我应该在#include api.h 之前使用#pragma pack 然后恢复它?我可以期望这在未来版本的 libspotify 中保持稳定还是可能会改变?它在不同平台上有何不同?
我的真正目标是编写 C# P/Invoke 代码,该代码可在各种使用 Mono 的平台上运行。在非 Windows 平台上,libspotify 是否坚持本机编译器的默认对齐方式,还是我需要在每个平台上指定自定义对齐方式?
[*] - 不过,我确实必须先修复一些其他错误。正如 libspotify 12.1.51 中所提供的,在 Windows 上,spshell 将控制按键(例如 shift、ctrl)注册为输入 NUL 字符。这可以防止在控制台中键入或粘贴 spotify URI。这可以通过编辑 spshell_win32.c 添加case 0: break;
到console_input
. 此外,它在函数的 spshell.c 中使用字符串格式说明符“%zd” offline_status_updated
。Microsoft C 运行时似乎无法处理此问题,因此需要对其进行更改(例如,如果您只希望它在 Windows 上工作,则更改为“%Iu”,或者更改为平台敏感的宏)。
connection - libspotify 无法连接
我正在尝试熟悉 libspotify,我必须说 libspotify 上的文档严重缺乏。我已经从示例中破解了一个小应用程序,但我无法让它工作。
我正在 Visual Studio 2012 中构建一个 C 控制台应用程序。appkey 是正确的。
无论用户名和密码是什么(错误或正确),sp_session_login 始终返回 SP_ERROR_OK。当我使用 sp_session_connectionstate 检查连接状态时,它总是返回 SP_CONNECTION_STATE_LOGGED_OUT。
我没有看到我在这里做错了什么,也似乎无法通过常规渠道找到任何相关的答案。
spotify - 如何使用 spotify api 查找热门曲目和新版本
如何从 web api 或获取热门曲目和新发行专辑信息libspotify
?我试过SPToplist
了,libspotify
但它对我不起作用。
spotify - Libspotify 销毁程序
我正在为 C# 开发一个 libspotify 包装器,并且正在编写单元测试。因此,我需要反复创建会话、登录、执行操作、注销、释放和清理会话,为下一次测试做好准备。
我不确定 libspotify 的正确“关闭”程序是什么。“点唱机”示例根本不执行任何关闭 - 主函数只是退出而不调用 sp_session_release。
例如,我应该在释放之前关闭所有回调吗?目前,每当我尝试调用 sp_session_release 时都会崩溃。
干杯汤姆
spotify - 在 PySpotify 中,试图在不知道曲目在播放列表中的位置的情况下从播放列表中删除曲目
我正在尝试从播放列表中删除曲目,而我所知道的有关曲目的信息是 spotify URI、曲目名称和艺术家。但是,我不知道曲目在播放列表中的位置。
删除曲目的函数如下: spotify.Playlists.remove_tracks(tracks) 参数:tracks (list of int) - 要从播放列表中删除的曲目位置列表
除了将曲目添加到播放列表时,我还没有找到任何可以提供此信息的回调或类方法,这可能发生在另一个会话中。
有没有人成功地做到这一点,如果是这样,你能指出我是如何做到的吗?
谢谢
interop - libspotify 中曲目的生命周期
使用 libspotify 时,我通过浏览播放列表并获取有关曲目的信息来响应有关播放列表更改的回调。
当我获得轨道句柄时,该轨道句柄何时失效?我可以假设在会话中,轨道句柄的给定值将始终引用相同的轨道吗?我是否需要手动增加和减少曲目的引用数才能确定?
谢谢汤姆
cocoalibspotify-2.0 - 如何使用 CocoaLibSpotify 获取播放列表的马赛克图像?
从SPPlaylist
它的image
属性的标题文档中:
返回播放列表的自定义图像,或者
nil
播放列表尚未加载或没有自定义图像
我有一个加载的数组,SPPlaylists
但是image
每个对象的属性always nil
,即使我可以通过 Spotify 客户端在这些相同的播放列表上看到 4-up 图像。
有没有一种简单的方法可以使用 CocoaLibSpotify 获得该 4-up 封面图像?还是我必须加载所有曲目和专辑元数据并单独拉回相关SPImages
?
spotify - Libspotfiy 播放列表文件夹处理
我想弄清一些关于 Libspotify 中播放列表文件夹处理的事情。有些事情似乎有点不一致(我得到印象文件夹处理已被黑客入侵作为事后的想法?)
当我循环浏览容器中的所有播放列表时,我注意到我为所有文件夹获得了相同的 sp_playlist 句柄值。这意味着我不能在文件夹上使用任何 sp_playlist_xxx 函数,对吧?所以我不能在他们身上注册回调,找不到他们的名字,等等?
相反,我必须使用 PlaylistContainer 上的特殊功能来获取文件夹名称?
在指向文件夹的句柄上使用 sp_playlist_add_ref 和 sp_playlist_release 是否危险?
另外, sp_playlistcontainer_playlist_folder_id 函数的用途是什么?
spotify - Libspotfiy,在同一个句柄上注册多个回调
向 libspotify 句柄添加多个回调是否有效?IE:
IE
那么,tracks_addedA 和tracks_addedB 会被libspotify 调用吗?这似乎有效,但我不知道它是偶然还是设计?:)