spotify api 获取用户的播放列表

Posted

技术标签:

【中文标题】spotify api 获取用户的播放列表【英文标题】:spotify api to get playlists of a user 【发布时间】:2011-09-23 07:48:27 【问题描述】:

我需要使用 Spotify 的 api 我的客户需要有一个 spotify 应用程序,它将代表注册用户连接到 spotify 并获取这些播放列表中的所有播放列表名称及其歌曲,并将这些播放列表的txt文件,就是这样。 请帮我从哪里开始,我需要用 php 完成它。

谢谢

【问题讨论】:

你在上面搜索过什么吗?你发现了什么数据? 我搜索了但没有找到任何相关信息 看看这些,spotify.com/fi/about/spotify-on-the-web/developer-resources 和 code.google.com/p/metatune 和 code.google.com/p/metatune/wiki/FeatureList @Muhammad Zeeshan 谢谢,我试试 我有一个高级帐户并从 spotify 获得了 api 密钥,现在没有找到获取用户播放列表的方法 【参考方案1】:

正如 cmets 中提到的,有很多代码在使用不幸的非开源 libspotify。提供的 API 示例小心地省略了遍历所有播放列表的方法。

你提到你想要一些可以连接到 Spotify 的东西(在线 API 肯定是 Spotify 希望每个人都使用的),但我很确定同样可以离线完成。正如你自己所说,文件可以备份。

位于:

~/.config/spotify/Users/name/

USER_APP_DATA/Spotify/Users/USER_ID

您可能已经告诉我,我不喜欢限制访问我能做什么或不能做什么的专有库。所以我想出了一个简单的程序,可以打印所有存储的播放列表的名称。这很有帮助,因为我通常会为每个播放列表添加一张专辑。

我很确定它可以进一步开发以包含单独的曲目。

#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>

int main(int argc, char *argv[]) 
    std::vector<char> vbuf;
    unsigned int len;
    std::vector<char>::iterator bpos,dpos,epos;

    std::ifstream in("playlist.bnk", std::ios::in|std::ios::binary);
    if (in) 
        in.seekg(0,std::ios::end);
        len = in.tellg();
        vbuf.resize(len);
        in.seekg(0,std::ios::beg);
        in.read(&vbuf[0],len);

        for(std::vector<char>::iterator it = vbuf.begin(); it != vbuf.end(); ++it) 
            if (*it == (char)0x02 && *(it+1) == (char)0x09) 
                bpos = it+3;
                                                                                                      
            if (*it == (char)0xE2 && *(it+1) == (char)0x80 && *(it+2) == (char)0x93 && bpos != vbuf.end()) 
                dpos = it;
                                                                                                      
            if (*it == (char)0x18 && *(it+1) == (char)0x01 && *(it+2) == (char)0x19 && dpos != vbuf.end()) 
                epos = it;
                                                                               
            if (bpos != vbuf.end() && dpos != vbuf.end() && epos != vbuf.end()) 
                for(std::vector<char>::iterator it2 = bpos; it2 < dpos; ++it2) 
                    std::cout << *it2;
                                                                              
                for(std::vector<char>::iterator it2 = dpos; it2 < epos; ++it2) 
                    std::cout << *it2;
                
                std::cout << std::endl;
                bpos = vbuf.end();
                dpos = vbuf.end();
                epos = vbuf.end();
            
        
    

【讨论】:

嗨@Kasreyn,不幸的是你的代码停止工作。它只是输出一些“随机”的歌曲。您能否更新它或发布您如何实施它的信息。我不明白解析。谢谢!【参考方案2】:

只需备份 playlist.bnk 文件即可解决问题。其中包含播放列表的文件

【讨论】:

文件实际上叫playlist.bnk

以上是关于spotify api 获取用户的播放列表的主要内容,如果未能解决你的问题,请参考以下文章

Spotify Apps API:获取其他用户的播放列表

获取 Spotify 用户当前播放的曲目名称 [Web API]

Spotify Web API - 客户端凭据 - 访问用户播放列表

如何使用 Spotify Web API 获取当前播放/最近播放的歌曲

通过用户名从 Spotify 获取公共播放列表

无法使用 kaaes Spotify web api 获取播放列表的曲目