I was hoping to have this patch finished today and beg for an upload prior to
the freeze, but 3-5 is not a straightforward substitution ☹ 

Attached are two patches: a straightforward substitution and the beginnings of
fixing up the bits that need fixing.  I still hope to have this ready for
squeeze.

(don't mind the NMU stuff in these patches, that's just from my working copy)
Description: Use libmusicbrainz5 instead of 3
Author: Jon Dowland <[email protected]>

--- a/configure.in	(revision 2279)
+++ b/configure.in	(working copy)
@@ -224,13 +224,13 @@
 AC_SUBST(GPOD_CFLAGS)
 AC_SUBST(GPOD_LIBS)    
     
-AC_ARG_WITH([libmusicbrainz3],
-    [AS_HELP_STRING([--with-libmusicbrainz3],
-        [Add support for libmusicbrainz3])],
+AC_ARG_WITH([libmusicbrainz5],
+    [AS_HELP_STRING([--with-libmusicbrainz5],
+        [Add support for libmusicbrainz5])],
         [],
-        [with_libmusicbrainz3=check])
-AS_IF([test "x$with_libmusicbrainz3" != xno], 
-    [PKG_CHECK_MODULES(MUSICBRAINZ,[libmusicbrainz3 libcurl],[MUSICBRAINZ_DEFINES="-DHAVE_MUSICBRAINZ" AC_DEFINE([MUSICBRAINZ_ENABLED],[1],[Define to 1 if you have musicbrainz3 support])],AC_MSG_NOTICE([Compiling without libmusicbrainz3 support]))
+        [with_libmusicbrainz5=check])
+AS_IF([test "x$with_libmusicbrainz5" != xno], 
+    [PKG_CHECK_MODULES(MUSICBRAINZ,[libmusicbrainz5 libcurl],[MUSICBRAINZ_DEFINES="-DHAVE_MUSICBRAINZ" AC_DEFINE([MUSICBRAINZ_ENABLED],[1],[Define to 1 if you have musicbrainz5 support])],AC_MSG_NOTICE([Compiling without libmusicbrainz5 support]))
     AC_SUBST(MUSICBRAINZ_DEFINES)
     AC_SUBST(MUSICBRAINZ_CFLAGS)
     AC_SUBST(MUSICBRAINZ_LIBS)
--- a/src/support.c	(revision 2279)
+++ b/src/support.c	(working copy)
@@ -2375,12 +2375,12 @@
 gchar *get_cover_art_url(gchar * artist, gchar * title, gchar * album)
 {
     int i;
-    MbWebService mb;
-    MbQuery query;
-    MbReleaseFilter release_filter;
-    MbResultList results;
-    MbRelease release;
-    MbReleaseIncludes includes;
+    Mb5WebService mb;
+    Mb5Query query;
+    Mb5ReleaseFilter release_filter;
+    Mb5ResultList results;
+    Mb5Release release;
+    Mb5ReleaseIncludes includes;
 
     char id[1024];
     char asin[1024];
@@ -2393,41 +2393,41 @@
     if (album == NULL && artist == NULL)
         return ret;
 
-    mb = mb_webservice_new();
+    mb = mb5_webservice_new();
 
-    query = mb_query_new(mb, "gnome-mplayer");
+    query = mb5_query_new(mb, "gnome-mplayer");
 
-    release_filter = mb_release_filter_new();
+    release_filter = mb5_release_filter_new();
     if (release_filter == NULL)
         return ret;
     if (artist != NULL && strlen(artist) > 0)
-        release_filter = mb_release_filter_artist_name(release_filter, artist);
+        release_filter = mb5_release_filter_artist_name(release_filter, artist);
     if (album != NULL && strlen(album) > 0)
-        release_filter = mb_release_filter_title(release_filter, album);
+        release_filter = mb5_release_filter_title(release_filter, album);
 
-    results = mb_query_get_releases(query, release_filter);
-    mb_release_filter_free(release_filter);
+    results = mb5_query_get_releases(query, release_filter);
+    mb5_release_filter_free(release_filter);
 
     if (results != NULL) {
-        //printf("items found:  %i\n", mb_result_list_get_size(results));
+        //printf("items found:  %i\n", mb5_result_list_get_size(results));
 
         highest_score = -1;
-        for (i = 0; i < mb_result_list_get_size(results); i++) {
-            score = mb_result_list_get_score(results, i);
-            release = mb_result_list_get_release(results, i);
+        for (i = 0; i < mb5_result_list_get_size(results); i++) {
+            score = mb5_result_list_get_score(results, i);
+            release = mb5_result_list_get_release(results, i);
             if (release != NULL) {
-                mb_release_get_id(release, id, 1024);
-                mb_release_free(release);
-                includes = mb_release_includes_new();
+                mb5_release_get_id(release, id, 1024);
+                mb5_release_free(release);
+                includes = mb5_release_includes_new();
                 if (includes != NULL) {
-                    includes = mb_track_includes_url_relations(includes);
-                    release = mb_query_get_release_by_id(query, id, includes);
-                    mb_release_includes_free(includes);
+                    includes = mb5_track_includes_url_relations(includes);
+                    release = mb5_query_get_release_by_id(query, id, includes);
+                    mb5_release_includes_free(includes);
                 }
             }
             if (release != NULL) {
-                mb_release_get_asin(release, asin, 1024);
-                mb_release_free(release);
+                mb5_release_get_asin(release, asin, 1024);
+                mb5_release_free(release);
                 if (strlen(asin) > 0) {
                     //printf("asin = %s score = %i\n",asin,score);
                     if (score > highest_score) {
@@ -2441,11 +2441,11 @@
             if (score == 100 && ret != NULL)
                 break;
         }
-        mb_result_list_free(results);
+        mb5_result_list_free(results);
     }
 
-    mb_query_free(query);
-    mb_webservice_free(mb);
+    mb5_query_free(query);
+    mb5_webservice_free(mb);
 
     return ret;
 }
--- a/src/support.h	(revision 2279)
+++ b/src/support.h	(working copy)
@@ -47,7 +47,7 @@
 #endif
 
 #ifdef HAVE_MUSICBRAINZ
-#include <musicbrainz3/mb_c.h>
+#include <musicbrainz5/mb5_c.h>
 #include <curl/curl.h>
 #endif
 

--- gnome-mplayer-1.0.6.orig/src/support.c
+++ gnome-mplayer-1.0.6/src/support.c
@@ -2330,7 +2330,6 @@ gboolean gpod_load_tracks(gchar * mount_
 gchar *get_cover_art_url(gchar * artist, gchar * title, gchar * album)
 {
     int i;
-    Mb5WebService mb;
     Mb5Query query;
     Mb5ReleaseFilter release_filter;
     Mb5ResultList results;
@@ -2342,26 +2341,34 @@ gchar *get_cover_art_url(gchar * artist,
     gchar *ret = NULL;
     gint score, highest_score;
 
+    param_names = g_new (gchar*, 3);
+    param_values = g_new (gchar*, 3);
+
     if (disable_cover_art_fetch)
         return ret;
 
     if (album == NULL && artist == NULL)
         return ret;
 
-    mb = mb5_webservice_new();
+    query = mb5_query_new(mb, "gnome-mplayer", 0);
 
-    query = mb5_query_new(mb, "gnome-mplayer");
+    param_names[0] = g_strdup ("query");
+    if (artist != NULL && strlen(artist) > 0) {
+        if (album != NULL && strlen(album) > 0) {
+            param_values[0] = g_strdup_printf ("artist:\"%s\" AND 
release:\"%s\"", artist, album);
+        } else {
+            param_values[0] = g_strdup_printf ("artist:\"%s\"", artist);
+        }
+    } else if (album != NULL && strlen(album) > 0) {
+        param_values[0] = g_strdup_printf ("release:\"%s\"", album);
+    }
 
-    release_filter = mb5_release_filter_new();
-    if (release_filter == NULL)
-        return ret;
-    if (artist != NULL && strlen(artist) > 0)
-        release_filter = mb5_release_filter_artist_name(release_filter, 
artist);
-    if (album != NULL && strlen(album) > 0)
-        release_filter = mb5_release_filter_title(release_filter, album);
+    param_names[1] = g_strdup ("limit");
+    param_values[1] = g_strdup ("1"); // XXX: probably want more than that
+    param_names[2] = NULL;
+    param_values[2] = NULL;
 
-    results = mb5_query_get_releases(query, release_filter);
-    mb5_release_filter_free(release_filter);
+    results = mb5_query_query(query, "release", "", "", 2, param_names, 
param_values);
 
     if (results != NULL) {
         //printf("items found:  %i\n", mb5_result_list_get_size(results));
@@ -2401,6 +2408,8 @@ gchar *get_cover_art_url(gchar * artist,
 
     mb5_query_free(query);
     mb5_webservice_free(mb);
+    g_strfreev (param_names);
+    g_strfreev (param_values);
 
     return ret;
 }
_______________________________________________
pkg-multimedia-maintainers mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-multimedia-maintainers

Reply via email to