static void get_album(MbRelease release, char **album_id, char **title, int *disc_number) { char buf[256]; char *tmp_album; int discnum_offset = 0; mb_release_get_id(release, buf, sizeof(buf)); *album_id = g_strdup(buf); mb_release_get_title(release, buf, sizeof(buf)); tmp_album = buf; *disc_number = find_disc_num_and_offset(tmp_album, &discnum_offset); if (discnum_offset) { *title = g_strndup(tmp_album, discnum_offset); } else { *title = g_strdup(tmp_album); } }
static GList * mb_list_albums (SjMetadata *metadata, char **url, GError **error) { SjMetadataMusicbrainz3Private *priv; GList *albums = NULL; MbQuery query; MbReleaseFilter filter; MbResultList results; MbRelease release; char *id = NULL; char buffer[1024]; int i; g_return_val_if_fail (SJ_IS_METADATA_MUSICBRAINZ3 (metadata), NULL); priv = GET_PRIVATE (metadata); if (sj_metadata_helper_check_media (priv->cdrom, error) == FALSE) { return NULL; } priv->disc = mb_read_disc (priv->cdrom); if (priv->disc == NULL) return NULL; if (url != NULL) { mb_get_submission_url (priv->disc, NULL, 0, buffer, sizeof (buffer)); *url = g_strdup (buffer); } if (g_getenv("MUSICBRAINZ_FORCE_DISC_ID")) { id = g_strdup (g_getenv("MUSICBRAINZ_FORCE_DISC_ID")); } else { GET(id, mb_disc_get_id, priv->disc); } query = mb_query_new (priv->mb, "sound-juicer"); filter = mb_release_filter_new (); filter = mb_release_filter_disc_id (filter, id); results = mb_query_get_releases (query, filter); mb_release_filter_free (filter); g_free (id); if (results == NULL) { mb_query_free (query); return NULL; } if (mb_result_list_get_size (results) == 0) { mb_result_list_free (results); mb_query_free (query); return NULL; } for (i = 0; i < mb_result_list_get_size (results); i++) { AlbumDetails *album; MbReleaseIncludes includes; char buffer[512]; release = mb_result_list_get_release (results, i); if(release) { mb_release_get_id (release, buffer, sizeof (buffer)); includes = get_release_includes (); release = mb_query_get_release_by_id (query, buffer, includes); if(release) { mb_release_includes_free (includes); album = make_album_from_release (release); album->metadata_source = SOURCE_MUSICBRAINZ; fill_empty_durations (priv->disc, album); albums = g_list_append (albums, album); mb_release_free (release); } } } mb_result_list_free (results); mb_query_free (query); return albums; }