Exemplo n.º 1
0
void ApiComponent::getPlaylistFromReply(QNetworkReply *reply)
{
    QDomDocument domDocument;
    domDocument.setContent(reply->readAll());

    QDomElement responseElement = domDocument.firstChildElement(); //! <response list = true>
    QDomNode itemNode = responseElement.firstChildElement(); //! <audio>

    Playlist playlist;

    while(!itemNode.isNull())
    {
        PlaylistItem data;
        QString const artist = itemNode.toElement().elementsByTagName("artist").item(0).toElement().text();
        QString const title = itemNode.toElement().elementsByTagName("title").item(0).toElement().text();
        QString const duration = itemNode.toElement().elementsByTagName("duration").item(0).toElement().text();
        QString const url = itemNode.toElement().elementsByTagName("url").item(0).toElement().text();

        if (!artist.isEmpty() && !title.isEmpty() && !duration.isEmpty() && !url.isEmpty())
        {
            data[Artist] = artist;
            data[Title] = title;
            data[Duration] = duration;
            data[Url] = url;

            playlist.push_back(data);
        }

        itemNode = itemNode.nextSibling();
    }

    reply->deleteLater();

    emit playlistReceived(playlist);
}
SpotifySession::SpotifySession( sessionConfig config, QObject *parent )
   : QObject( parent )
   , m_pcLoaded( false )
   , m_sessionConfig( config )
   , m_loggedIn( false )
   , m_relogin( false )
{

    // Instance
    s_instance = this;
    // Friends
    m_SpotifyPlaylists = new SpotifyPlaylists( this );
    connect( m_SpotifyPlaylists, SIGNAL( sendLoadedPlaylist( SpotifyPlaylists::LoadedPlaylist ) ), this, SLOT(playlistReceived(SpotifyPlaylists::LoadedPlaylist) ) );

    // Playlist cachemiss fix
    // @note: bad way of handling exitfails
    connect( m_SpotifyPlaylists, SIGNAL( forcePruneCache() ), this, SLOT( relogin() ) );

    m_SpotifyPlayback = new SpotifyPlayback( this );

    // Connect to signals
    connect( this, SIGNAL( notifyMainThreadSignal() ), this, SLOT( notifyMainThread() ), Qt::QueuedConnection );
    qDebug() << " === Using LibVersion " << SPOTIFY_API_VERSION << " ===";
    // User needs to create session himself, that way, config
    //createSession();
}