Beispiel #1
0
void SxPlaylist::reLoad() {
    Logger::printOut("reload play");
    if (m_isValid && !isFolder()) {
        m_thumb = NULL;
        //TODO fix a thumb, why is it never returning any images?
        byte image[20];
        if (sp_playlist_get_image(m_spPlaylist, image)) {
            m_thumb = ThumbStore::getInstance()->getThumb(image);
        }
        Logger::printOut("reload play 3");

        vector<SxTrack*> newTracks;
        for (int index = 0; index < sp_playlist_num_tracks(m_spPlaylist); index++) {
            sp_track* spTrack = sp_playlist_track(m_spPlaylist, index);
            if (!sp_track_get_availability(Session::getInstance()->getSpSession(), spTrack)) continue;
            SxTrack* track = TrackStore::getInstance()->getTrack(spTrack);
            if (track) {
                newTracks.push_back(track);
                //no thumb, lets pick one from the track list
                if (m_thumb == NULL)
                    if (track->getThumb() != NULL)
                        //no need to add ref to the thumb, when the track disappears the playlist will switch thumb
                        m_thumb = track->getThumb();
            }
        }

        removeAllTracks();

        Logger::printOut("reload play done");
        m_tracks = newTracks;
    }
    Utils::updatePlaylist(m_index);
}
Beispiel #2
0
void TopLists::cb_toplistTracksComplete(sp_toplistbrowse *result,
		void *userdata) {
	Logger::printOut("toplist tracks callback");
	TopLists *lists = (TopLists*) (userdata);
	//add the tracks

	vector<SxTrack*> newTracks;

	for (int index = 0; index < sp_toplistbrowse_num_tracks(result); index++) {
		if (sp_track_get_availability(Session::getInstance()->getSpSession(),
				sp_toplistbrowse_track(result, index))) {
			SxTrack* track = TrackStore::getInstance()->getTrack(
					sp_toplistbrowse_track(result, index));
			if (track != NULL)
				newTracks.push_back(track);
		}
	}

	lists->removeAllTracks();
	lists->m_tracks = newTracks;

	struct timeb tmb;
	ftime(&tmb);
	lists->m_tracksNextReload.Set(1000 * 60 * 60 * 24);
	lists->m_waitingForTracks = false;
	lists->m_tracksLoaded = true;
	Logger::printOut("Toplist tracks loaded");
}
Beispiel #3
0
// ----------------------------------------------------------------------------
//
TrackArray SpotifyEngine::getTracks( sp_playlist* pl ) {
    TrackArray tracks;

    int num_tracks = sp_playlist_num_tracks( pl );

    for (int i=0; i < num_tracks; i++ ) {
        sp_track* track = sp_playlist_track( pl, i );

        sp_track_availability availability = sp_track_get_availability( m_spotify_session, track );

        if ( availability == SP_TRACK_AVAILABILITY_AVAILABLE )
            tracks.push_back( track );
    }

    return tracks;
}
Beispiel #4
0
gboolean track_available(sp_track* track) {
    return (sp_track_get_availability(g_session, track) == SP_TRACK_AVAILABILITY_AVAILABLE);
}
Beispiel #5
0
static PyObject *
Track_availability(Track *self)
{
    return Py_BuildValue("i",
                         sp_track_get_availability(g_session, self->_track));
}