Spotify API, чтобы получить плейлисты пользователя - PullRequest
3 голосов
/ 27 июня 2011

мне нужно использовать API Spotify мой клиент должен иметь приложение spotify, которое будет подключаться к spotify от имени зарегистрированного пользователя и будет извлекать все имена плейлистов и их песни из этого плейлистаи создаст TXT-файл из списка воспроизведения, вот и все.Пожалуйста, помогите мне, где я должен начать, мне нужно сделать это с php.

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 июня 2012

Как уже упоминалось в комментариях, вокруг используется много кода, использующего неудачный не открытый исходный код libspotify.Приведены примеры API, в которых тщательно пропущен способ перебора всех плейлистов.

Вы упомянули, что вам нужно что-то, что может подключаться для спойтинга (онлайн-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();
            }
        }
    }
}
1 голос
/ 11 августа 2011

Проблема была решена простым резервным копированием файла playlist.bnk.который содержит файлы для списков воспроизведения

...