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(); }