spotify api获取用户的播放列表

时间:2011-06-27 08:08:44

标签: php spotify

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

谢谢

2 个答案:

答案 0 :(得分:2)

正如评论中所提到的,使用不幸的非开源libspotify有很多代码在盘旋。提供的API示例,仔细省略了迭代所有播放列表的方法。

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

位于:

〜/的.config / Spotify的/用户/名称/

{USER_APP_DATA} / Spotify的/用户/ {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();
            }
        }
    }
}

答案 1 :(得分:1)

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