コード例 #1
0
ファイル: test-write-covers.c プロジェクト: amboxer21/libgpod
int
main (int argc, char **argv)
{
	Itdb_iTunesDB *db;
	GList *it;
	GList *covers;
	int nb_covers;

	if (argc < 3) {
		g_print ("Usage: %s mountpoint image-dir\n", argv[0]);
		return 1;
	}
	
	setlocale (LC_ALL, "");
#if !GLIB_CHECK_VERSION(2, 36, 0)
	g_type_init ();
#endif
	covers = get_cover_list (argv[2]);
	if (covers == NULL) {
		g_print ("Error, %s should be a directory containing pictures\n", argv[2]);
		return 1;
	}
	nb_covers = g_list_length (covers);
	db = itdb_parse (argv[1], NULL);
	if (db == NULL) {
		g_print ("Error reading iPod database\n");
		return 1;
	}
	for (it = db->tracks; it != NULL; it = it->next) {
		Itdb_Track *song;
		const char *coverpath;

		song = (Itdb_Track*)it->data;
		itdb_artwork_remove_thumbnails (song->artwork);

		coverpath = g_list_nth_data (covers, 
					     g_random_int_range (0, nb_covers));
		itdb_track_set_thumbnails (song, coverpath);
/*		g_print ("%s - %s - %s gets %s\n",  
		song->artist, song->album, song->title, coverpath);*/

	}
/*	if (db->tracks != NULL) {
		Itdb_Track *song;
		const char *coverpath;
		
		song = (Itdb_Track *)db->tracks->data;
		coverpath = g_list_nth_data (covers, 
					     g_random_int_range (0, nb_covers));
		itdb_track_remove_thumbnail (song);
		itdb_track_set_thumbnail (song, coverpath);
		}*/

	itdb_write (db, NULL);
	itdb_free (db);
	g_list_foreach (covers, (GFunc)g_free, NULL);
	g_list_free (covers);

	return 0;
}
コード例 #2
0
/**
 * itdb_artwork_free:
 * @artwork: an #Itdb_Artwork
 *
 * Frees memory used by @artwork
 *
 * Since: 0.3.0
 */
void itdb_artwork_free (Itdb_Artwork *artwork)
{
    g_return_if_fail (artwork);
    itdb_artwork_remove_thumbnails (artwork);
    if (artwork->userdata && artwork->userdata_destroy)
	(*artwork->userdata_destroy) (artwork->userdata);
    g_free (artwork);
}
コード例 #3
0
ファイル: itdb_track.c プロジェクト: Silvirus/libgpod
/* called by itdb_track_set_thumbnails() and
   itdb_track_set_thumbnails_from_data() */
static gboolean itdb_track_set_thumbnails_internal (Itdb_Track *track,
						    const gchar *filename,
						    const guchar *image_data,
						    gsize image_data_len,
                                                    gpointer *pixbuf,
						    gint rotation,
						    GError **error)
{
    gboolean result = FALSE;

    g_return_val_if_fail (track, FALSE);
    g_return_val_if_fail (filename || image_data || pixbuf, FALSE);

    itdb_artwork_remove_thumbnails (track->artwork);
    /* clear artwork id */
    track->artwork->id = 0;

    if (filename)
    {
        result = itdb_artwork_set_thumbnail (track->artwork, filename,
                                             rotation, error);
    }
    if (image_data)
    {
        result = itdb_artwork_set_thumbnail_from_data (track->artwork,
                                                       image_data,
                                                       image_data_len,
                                                       rotation, error);
    }
    if (pixbuf)
    {
        result = itdb_artwork_set_thumbnail_from_pixbuf (track->artwork,
                                                         pixbuf, rotation,
                                                         error);
    }

    if (result == TRUE)
    {
	/* some black magic :-( */
	/* track->artwork_size should actually be the total size of
	   artwork packed into MP3 tags. We don't write mp3 tags... */
	track->artwork_size = track->artwork->artwork_size;
	/* track->artwork_count should actually be the number of
	   images packed into MP3 tags. */
	track->artwork_count = 1;
	/* for some reason artwork->artwork_size is always
	   track->artwork_size + track->artwork_count */
	track->artwork->artwork_size += track->artwork_count;
	/* indicate artwork is present */
	track->has_artwork = 0x01;
    }
    else
    {
	itdb_track_remove_thumbnails (track);
    }

    return result;
}
コード例 #4
0
ファイル: itdb_track.c プロジェクト: Silvirus/libgpod
/**
 * itdb_track_remove_thumbnails:
 * @track: an #Itdb_Track
 *
 * Removes the thumbnails associated with @track
 *
 * Since: 0.3.0
 */
void itdb_track_remove_thumbnails (Itdb_Track *track)
{
    g_return_if_fail (track);
    itdb_artwork_remove_thumbnails (track->artwork);
    track->artwork_size = 0;
    track->artwork_count = 0;
    track->mhii_link = 0;
    /* indicate no artwork is present */
    track->has_artwork = 0x02;
}