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; }
/** * 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); }
/* 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; }
/** * 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; }