Esempio n. 1
0
static void sess_callback_offline_status_updated(sp_session *session) {

	syslog(LOG_INFO, "Session: offline status updated, %d playlists marked for offline usage, %d tracks left to sync, need to go online in %dd%02dh",
		sp_offline_num_playlists(session),
		sp_offline_tracks_to_sync(session),
		sp_offline_time_left(session) / 86400,
		(sp_offline_time_left(session) % 86400) / 3600);
}
Esempio n. 2
0
void session_get_offline_sync_status(sp_offline_sync_status* status, gboolean* sync_in_progress,
                                     int* tracks_to_sync, int* num_playlists, int* time_left) {
    if (status || sync_in_progress) {
        sp_offline_sync_status oss;
        gboolean sip = sp_offline_sync_get_status(g_session, &oss);
        if (status)
            *status = oss;
        if (sync_in_progress)
            *sync_in_progress = sip;
    }
    if (tracks_to_sync)
        *tracks_to_sync = sp_offline_tracks_to_sync(g_session);
    if (num_playlists)
        *num_playlists = sp_offline_num_playlists(g_session);
    if (time_left)
        *time_left = sp_offline_time_left(g_session);
}
Esempio n. 3
0
int cmd_playlist_offline(int argc, char **argv)
{
	sp_link *plink;
	sp_playlist *pl;
	int on;

	if (argc == 2 && !strcmp(argv[1], "status")) {
		printf("Offline status\n");
		printf("  %d tracks to sync\n",
		    sp_offline_tracks_to_sync(g_session));
		printf("  %d offline playlists in total\n",
		    sp_offline_num_playlists(g_session));
		return 1;
	}


	if (argc != 3) {
		printf("offline status | <playlist uri> <on|off>\n");
		return 1;
	}


	plink = sp_link_create_from_string(argv[1]);
	if (!plink) {
		fprintf(stderr, "%s is not a spotify link\n", argv[1]);
		return -1;
	}

	if (sp_link_type(plink) != SP_LINKTYPE_PLAYLIST) {
		fprintf(stderr, "%s is not a playlist link\n", argv[1]);
		sp_link_release(plink);
		return -1;
	}


	pl = sp_playlist_create(g_session, plink);

	if (argc == 3) {

		if (!strcasecmp(argv[2], "on"))
			on = 1;
		else if (!strcasecmp(argv[2], "off"))
			on = 0;
		else {
			fprintf(stderr, "Invalid mode: %s\n", argv[2]);
			return -1;
		}

		sp_playlist_set_offline_mode(g_session, pl, on);

	} else {

		sp_playlist_offline_status s;
		s = sp_playlist_get_offline_status(g_session, pl);

		printf("Offline status for %s (%s)\n",
		    argv[1], sp_playlist_name(pl));

		printf("  Status: %s\n", offlinestatus[s]);
		if (s == SP_PLAYLIST_OFFLINE_STATUS_DOWNLOADING)
			printf("    %d%% Complete\n",
			    sp_playlist_get_offline_download_completed(g_session, pl));
	}

	sp_playlist_release(pl);
	sp_link_release(plink);
	return 1;
}