summaryrefslogtreecommitdiff
path: root/libjuicer
diff options
context:
space:
mode:
authorChristophe Fergeau <cfergeau@redhat.com>2011-08-01 11:45:02 +0200
committerChristophe Fergeau <cfergeau@redhat.com>2012-01-13 00:26:49 +0100
commit3a01cdb287d7a91d94b6b9988a281050cbc56881 (patch)
treefdfdeede5ae5125c47420ad076d9c8ec1ef81e3d /libjuicer
parentfeb2589e39c35a2c2e8c2001bfbc97357984c415 (diff)
mb4: use libdiscid for discid extraction
libmusicbrainz4 no longer provides an API to get the discid of a physical CD, libdiscid has to be used for that.
Diffstat (limited to 'libjuicer')
-rw-r--r--libjuicer/sj-metadata-musicbrainz4.c36
1 files changed, 15 insertions, 21 deletions
diff --git a/libjuicer/sj-metadata-musicbrainz4.c b/libjuicer/sj-metadata-musicbrainz4.c
index e9abc6a..8fd7f05 100644
--- a/libjuicer/sj-metadata-musicbrainz4.c
+++ b/libjuicer/sj-metadata-musicbrainz4.c
@@ -29,6 +29,7 @@
#include <glib.h>
#include <glib-object.h>
#include <gconf/gconf-client.h>
+#include <discid/discid.h>
#include <musicbrainz4/mb4_c.h>
#include "sj-metadata-musicbrainz4.h"
@@ -76,6 +77,7 @@
typedef struct {
Mb4Query mb;
+ DiscId *disc;
char *cdrom;
/* Proxy */
char *http_proxy;
@@ -437,51 +439,40 @@ mb4_list_albums (SjMetadata *metadata, char **url, GError **error)
GList *albums = NULL;
Mb4ReleaseList releases;
Mb4Release release;
- char *discid = NULL;
+ const char *discid = NULL;
char buffer[1024];
int i;
g_return_val_if_fail (SJ_IS_METADATA_MUSICBRAINZ4 (metadata), NULL);
priv = GET_PRIVATE (metadata);
-#if 0
if (sj_metadata_helper_check_media (priv->cdrom, error) == FALSE) {
return NULL;
}
-#endif
-#if 0
- priv->disc = mb_read_disc (priv->cdrom);
+ priv->disc = discid_new ();
if (priv->disc == NULL)
return NULL;
+ if (discid_read (priv->disc, priv->cdrom) == 0)
+ return NULL;
- if (url != NULL) {
- mb_get_submission_url (priv->disc, NULL, 0, buffer, sizeof (buffer));
- *url = g_strdup (buffer);
- }
-#endif
- g_warning("no reading of disc");
- /* priv->disc = NULL; */
- g_warning("no setting of url");
- *url = NULL;
+ if (url != NULL)
+ *url = g_strdup (discid_get_submission_url (priv->disc));
if (g_getenv("MUSICBRAINZ_FORCE_DISC_ID")) {
- discid = g_strdup (g_getenv("MUSICBRAINZ_FORCE_DISC_ID"));
+ discid = g_getenv("MUSICBRAINZ_FORCE_DISC_ID");
} else {
- g_warning("no MusicBrainz ID, use MISICBRAINZ_FORCE_DISC_ID");
- //GET(discid, mb_disc_get_id, priv->disc);
+ discid = discid_get_id (priv->disc);
}
releases = mb4_query_lookup_discid(priv->mb, discid);
if (releases == NULL) {
- g_free (discid);
return NULL;
}
if (mb4_release_list_size (releases) == 0) {
mb4_release_list_delete (releases);
- g_free (discid);
return NULL;
}
@@ -520,7 +511,6 @@ mb4_list_albums (SjMetadata *metadata, char **url, GError **error)
}
}
mb4_release_list_delete (releases);
- g_free (discid);
return albums;
}
@@ -643,13 +633,17 @@ static void
sj_metadata_musicbrainz4_finalize (GObject *object)
{
SjMetadataMusicbrainz4Private *priv;
-
+
priv = GET_PRIVATE (object);
if (priv->mb != NULL) {
mb4_query_delete (priv->mb);
priv->mb = NULL;
}
+ if (priv->disc != NULL) {
+ discid_free (priv->disc);
+ priv->disc = NULL;
+ }
g_free (priv->cdrom);
G_OBJECT_CLASS (sj_metadata_musicbrainz4_parent_class)->finalize (object);