iPod database reading/writing
Functions to create, read, write the iPod database
These functions are for creating, reading, writing, and deleting the iPod
database and getting the total number of tracks and playlists.
Overview of using the iPod database:
itdb_parse(): read the iTunesDB and ArtworkDB
itdb_write(): write the iTunesDB and ArtworkDB
itdb_parse() will return a #Itdb_iTunesDB structure with GLists
containing all tracks (each track is represented by a #Itdb_Track
structure) and the playlists (each playlist is represented by a
#Itdb_Playlist structure).
A number of functions for adding, removing, duplicating tracks
are available. Please see
Tracks for details.
In each #Itdb_Playlist structure you can find a GList called
'members' with listing all member tracks. Each track referenced
in a playlist must also be present in the tracks GList of the
iTunesDB.
The iPod must contain one master playlist (MPL) containing all
tracks accessible on the iPod through the
Music->Tracks/Albums/Artists... menu. Besides the MPL there can
be a number of normal playlists accessible through the
Music->Playlists menu on the iPod. Tracks that are a member of
one of these normal playlists must also be a member of the MPL.
The Podcasts playlist is just another playlist with some
internal flags set differently. Also, member tracks in the
Podcasts playlist are not normally members of the MPL (so on the
iPod they will only show up under the Podcasts menu). All tracks
referenced must be in the tracklist of the #Itdb_iTunesDB,
however.
A number of functions to add/remove playlists, or add/remove
tracks are available. Please see
Playlists for details.
Each track can have a thumbnail associated with it. You can
retrieve a GdkPixmap of the thumbnail using
itdb_thumb_get_gdk_pixbuf() (tracks have thumbnails of the
following types associated: @ITDB_THUMB_COVER_SMALL and
@ITDB_THUMB_COVER_LARGE). You can remove a thumbnail with
itdb_track_remove_thumbnails(). And finally, you can set a
new thumbnail using itdb_track_set_thumbnails().
Please note that iTunes additionally stores the artwork as tags
in the original music file. That's also from where the data is
read when artwork is displayed in iTunes, and there can be more
than one piece of artwork. libgpod does not store the artwork as
tags in the original music file. As a consequence, if iTunes
attempts to access the artwork, it will find none, and remove
libgpod's artwork. Luckily, iTunes will only attempt to access
the artwork if you select a track in iTunes. (To work around
this, gtkpod keeps a list of the original filename of all
artwork and silently adds the thumbnails if they were 'lost'.
Your application might want to do something similar, or you can
supply patches for (optionally!) adding tags to the original music
files.)
The #Itdb_iTunesDB, #Itdb_Playlist and #Itdb_Track structures each
have a userdata and a usertype field that can be used by the
application to store application-specific additional data. If
userdata is a pointer to an external structure, you can supply a
#ItdbUserDataDuplicateFunc and a #ItdbUserDataDestroyFunc so that
this data can be duplicated or freed automatically with a call
to the library _duplicate()/_free() functions.
@tracks:
@playlists:
@filename:
@device:
@version:
@id:
@reserved_int1:
@reserved_int2:
@reserved1:
@reserved2:
@usertype:
@userdata:
@userdata_duplicate:
@userdata_destroy:
@userdata:
@userdata:
@Returns:
@Returns:
@itdb:
@mp:
@error:
@Returns:
@itdb:
@error:
@Returns:
@itdb:
@mp:
@itdb:
@Returns:
@itdb:
@Returns:
@itdb:
@Returns:
@itdb:
@Returns: