libmtp: The audio/video album management API.

# The audio/video album management API.

## Functions
LIBMTP_album_t * | LIBMTP_new_album_t (void)
void | LIBMTP_destroy_album_t (LIBMTP_album_t *)
LIBMTP_album_t * | LIBMTP_Get_Album_List (LIBMTP_mtpdevice_t *)
LIBMTP_album_t * | LIBMTP_Get_Album (LIBMTP_mtpdevice_t *, uint32_t const)
int | LIBMTP_Create_New_Album (LIBMTP_mtpdevice_t *, LIBMTP_album_t *const)
int | LIBMTP_Update_Album (LIBMTP_mtpdevice_t *, LIBMTP_album_t const *const)
int | LIBMTP_Set_Album_Name (LIBMTP_mtpdevice_t *, LIBMTP_album_t *, const char *)

## Function Documentation

int LIBMTP_Create_New_Album | ( | LIBMTP_mtpdevice_t * | device,
|  | LIBMTP_album_t *const | metadata |
| ) |  |  |

This routine creates a new album based on the metadata supplied. If the `tracks` field of the metadata contains a track listing, these tracks will be added to the album.

Parameters:

  | device | a pointer to the device to create the new album on.
  | metadata | the metadata for the new album. If the function exits with success, the `album_id` field of this struct will contain the new ID of the album. `parent_id` will also be valid.
  | parenthandle | the parent (e.g. folder) to store this album in. Pass in 0 to put the album in the default music directory.

Returns:
  0 on success, any other value means failure.

See also:
  LIBMTP_Update_Album()

  LIBMTP_Delete_Object()

References LIBMTP_album_struct::album_id, LIBMTP_album_struct::artist, LIBMTP_album_struct::composer, LIBMTP_mtpdevice_struct::default_album_folder, LIBMTP_album_struct::genre, LIBMTP_album_struct::name, LIBMTP_album_struct::no_tracks, LIBMTP_album_struct::parent_id, LIBMTP_album_struct::storage_id, and LIBMTP_album_struct::tracks.

void LIBMTP_destroy_album_t | ( | LIBMTP_album_t * | album | ) |

This recursively deletes the memory for an album structure

Parameters:

  | album | structure to destroy

See also:
  LIBMTP_new_album_t()

References LIBMTP_album_struct::artist, LIBMTP_album_struct::composer, LIBMTP_album_struct::genre, LIBMTP_album_struct::name, and LIBMTP_album_struct::tracks.

LIBMTP_album_t* LIBMTP_Get_Album | ( | LIBMTP_mtpdevice_t * | device,
|  | uint32_t const | albid |
| ) |  |  |

This function retrieves an individual album from the device.

Parameters:

  | device | a pointer to the device to get the album from.
  | albid | the unique ID of the album to retrieve.

Returns:
  a valid album metadata or NULL on failure.

See also:
  LIBMTP_Get_Album_List()

References LIBMTP_album_struct::album_id, LIBMTP_album_struct::artist, LIBMTP_album_struct::composer, LIBMTP_album_struct::genre, LIBMTP_new_album_t(), LIBMTP_album_struct::name, LIBMTP_album_struct::no_tracks, LIBMTP_mtpdevice_struct::params, LIBMTP_album_struct::parent_id, LIBMTP_album_struct::storage_id, and LIBMTP_album_struct::tracks.

LIBMTP_album_t* LIBMTP_Get_Album_List | ( | LIBMTP_mtpdevice_t * | device | ) |

This function returns a list of the albums available on the device.

Parameters:

  | device | a pointer to the device to get the album listing from.

Returns:
  an album list on success, else NULL. If there are no albums on the device, NULL will be returned as well.

See also:
  LIBMTP_Get_Album()

References LIBMTP_album_struct::album_id, LIBMTP_album_struct::artist, LIBMTP_album_struct::composer, LIBMTP_album_struct::genre, LIBMTP_new_album_t(), LIBMTP_album_struct::name, LIBMTP_album_struct::next, LIBMTP_album_struct::no_tracks, LIBMTP_mtpdevice_struct::params, LIBMTP_album_struct::parent_id, LIBMTP_album_struct::storage_id, and LIBMTP_album_struct::tracks.

LIBMTP_album_t* LIBMTP_new_album_t | ( | void |  | ) |

This creates a new album metadata structure and allocates memory for it. Notice that if you add strings to this structure they will be freed by the corresponding `LIBMTP_destroy_album_t` operation later, so be careful of using strdup() when assigning strings.

Returns:
  a pointer to the newly allocated metadata structure.

See also:
  LIBMTP_destroy_album_t()

References LIBMTP_album_struct::album_id.

Referenced by LIBMTP_Get_Album(), and LIBMTP_Get_Album_List().

int LIBMTP_Set_Album_Name | ( | LIBMTP_mtpdevice_t * | device,
|  | LIBMTP_album_t * | album,
|  | const char * | newname |
| ) |  |  |

This function renames a single album. This simply means that the PTP_OPC_ObjectFileName property is updated, if this is supported by the device.

Parameters:

  | device | a pointer to the device that contains the file.
  | album | the album metadata of the album to rename. On success, the name member is updated. Be aware, that this name can be different than newname depending of device restrictions.
  | newname | the new name for this object.

Returns:
  0 on success, any other value means failure.

References LIBMTP_album_struct::album_id, and LIBMTP_album_struct::name.

int LIBMTP_Update_Album | ( | LIBMTP_mtpdevice_t * | device,
|  | LIBMTP_album_t const *const | metadata |
| ) |  |  |

This routine updates an album based on the metadata supplied. If the `tracks` field of the metadata contains a track listing, these tracks will be added to the album in place of those already present, i.e. the previous track listing will be deleted.

Parameters:

  | device | a pointer to the device to create the new album on.
  | metadata | the metadata for the album to be updated. notice that the field `album_id` must contain the apropriate album ID.

Returns:
  0 on success, any other value means failure.

See also:
  LIBMTP_Create_New_Album()

  LIBMTP_Delete_Object()

References LIBMTP_album_struct::album_id, LIBMTP_album_struct::artist, LIBMTP_album_struct::composer, LIBMTP_album_struct::genre, LIBMTP_album_struct::name, LIBMTP_album_struct::no_tracks, and LIBMTP_album_struct::tracks.