diff --git a/audio/glyr/Makefile b/audio/glyr/Makefile index c44b655236d..73c0aeb5c1e 100644 --- a/audio/glyr/Makefile +++ b/audio/glyr/Makefile @@ -3,6 +3,7 @@ COMMENT = music related metadata searchengine GH_ACCOUNT = sahib GH_PROJECT = glyr GH_TAGNAME = 1.0.10 +REVISION = 0 CATEGORIES = audio net SHARED_LIBS += glyr 0.0 # 1.1 @@ -22,4 +23,8 @@ MODCMAKE_POLICY_VERSION_OVERRIDE = Yes NO_TEST = Yes +# ensure the one generated in the builddir is picked up +post-configure: + cp ${WRKBUILD}/lib/config.h ${WRKSRC}/lib/config.h + .include diff --git a/audio/glyr/patches/patch-CMakeLists_txt b/audio/glyr/patches/patch-CMakeLists_txt index d8bf2dc3b10..2e84e07628d 100644 --- a/audio/glyr/patches/patch-CMakeLists_txt +++ b/audio/glyr/patches/patch-CMakeLists_txt @@ -1,5 +1,17 @@ ---- CMakeLists.txt.orig Mon Jan 19 00:47:10 2015 -+++ CMakeLists.txt Wed Jun 17 20:30:15 2015 +chunk 1: https://github.com/sahib/glyr/pull/104 + +Index: CMakeLists.txt +--- CMakeLists.txt.orig ++++ CMakeLists.txt +@@ -38,7 +38,7 @@ ENDIF() + # ------------------------------------------------ + SET(GLYR_VERSION_MAJOR "1") + SET(GLYR_VERSION_MINOR "0") +-SET(GLYR_VERSION_MICRO "9") ++SET(GLYR_VERSION_MICRO "10") + SET(GLYR_VERSION_NAME "Raving Raven") + # ------------------------------------------------ + @@ -92,6 +92,7 @@ FIND_PACKAGE(CURL REQUIRED) PKG_CHECK_MODULES(GLIBPKG glib-2.0>=2.10 gthread-2.0 REQUIRED) PKG_CHECK_MODULES(SQLITE3 sqlite3 REQUIRED) diff --git a/audio/glyr/patches/patch-lib_core_c b/audio/glyr/patches/patch-lib_core_c index a9f43ed538f..faa859c1cce 100644 --- a/audio/glyr/patches/patch-lib_core_c +++ b/audio/glyr/patches/patch-lib_core_c @@ -1,3 +1,8 @@ +Lower loglevel to debug + +fix curl_easy_setopt warnings about wanting a long +cf https://github.com/curl/curl/issues/9779 +include the right curl header Index: lib/core.c --- lib/core.c.orig +++ lib/core.c @@ -10,3 +15,66 @@ Index: lib/core.c #include "stringlib.h" #include "core.h" +@@ -48,7 +48,7 @@ static int _msg (const char * fmt, va_list params) + + if (written != -1 && tmp_buf != NULL) + { +- g_log (G_LOG_DOMAIN,G_LOG_LEVEL_INFO,"%s",tmp_buf); ++ g_log (G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s",tmp_buf); + g_free (tmp_buf); + tmp_buf = NULL; + } +@@ -403,14 +403,14 @@ static struct header_data * retrieve_content_info (gch + info = g_malloc0 (sizeof (struct header_data) ); + gchar * link_user_agent = g_strdup_printf ("%s / linkvalidator",useragent); + +- curl_easy_setopt (eh, CURLOPT_TIMEOUT, 10); ++ curl_easy_setopt (eh, CURLOPT_TIMEOUT, 10L); + curl_easy_setopt (eh, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt (eh, CURLOPT_USERAGENT, link_user_agent); + curl_easy_setopt (eh, CURLOPT_URL,url); +- curl_easy_setopt (eh, CURLOPT_FOLLOWLOCATION, TRUE); ++ curl_easy_setopt (eh, CURLOPT_FOLLOWLOCATION, (long)TRUE); + curl_easy_setopt (eh, CURLOPT_MAXREDIRS, 5L); +- curl_easy_setopt (eh, CURLOPT_HEADER,TRUE); +- curl_easy_setopt (eh, CURLOPT_SSL_VERIFYPEER, FALSE); ++ curl_easy_setopt (eh, CURLOPT_HEADER, (long)TRUE); ++ curl_easy_setopt (eh, CURLOPT_SSL_VERIFYPEER, (long)FALSE); + + /* Dirty hack here: Amazon bitches at me when setting NOBODY to true * + * But otherwise large images won't pass with other providers * +@@ -418,11 +418,11 @@ static struct header_data * retrieve_content_info (gch + */ + if (strstr (url,"amazon") != NULL) + { +- curl_easy_setopt (eh, CURLOPT_NOBODY,FALSE); ++ curl_easy_setopt (eh, CURLOPT_NOBODY,(long)FALSE); + } + else + { +- curl_easy_setopt (eh, CURLOPT_NOBODY,TRUE); ++ curl_easy_setopt (eh, CURLOPT_NOBODY,(long)TRUE); + } + + curl_easy_setopt (eh, CURLOPT_HEADERFUNCTION, header_cb); +@@ -477,9 +477,9 @@ static DLBufferContainer * DL_setopt (CURL *eh, GlyrMe + // Pass vars to curl + curl_easy_setopt (eh, CURLOPT_URL, url); + curl_easy_setopt (eh, CURLOPT_PRIVATE, magic_private_ptr); +- curl_easy_setopt (eh, CURLOPT_VERBOSE, (s && s->verbosity >= 4) ); ++ curl_easy_setopt (eh, CURLOPT_VERBOSE, (long) (s && s->verbosity >= 4) ); + curl_easy_setopt (eh, CURLOPT_WRITEFUNCTION, DL_buffer); +- curl_easy_setopt (eh, CURLOPT_SSL_VERIFYPEER, FALSE); ++ curl_easy_setopt (eh, CURLOPT_SSL_VERIFYPEER, (long) FALSE); + + DLBufferContainer * dlbuffer = g_malloc0 (sizeof (DLBufferContainer) ); + curl_easy_setopt (eh, CURLOPT_WRITEDATA, (void *) dlbuffer); +@@ -489,7 +489,7 @@ static DLBufferContainer * DL_setopt (CURL *eh, GlyrMe + + // amazon plugin requires redirects + curl_easy_setopt (eh, CURLOPT_FOLLOWLOCATION, 1L); +- curl_easy_setopt (eh, CURLOPT_MAXREDIRS, (s) ? s->redirects : 2); ++ curl_easy_setopt (eh, CURLOPT_MAXREDIRS, (long) ((s) ? s->redirects : 2)); + + // Do not download 404 pages + curl_easy_setopt (eh, CURLOPT_FAILONERROR, 1L); diff --git a/audio/glyr/patches/patch-lib_glyr_h b/audio/glyr/patches/patch-lib_glyr_h new file mode 100644 index 00000000000..97cfc7d46f6 --- /dev/null +++ b/audio/glyr/patches/patch-lib_glyr_h @@ -0,0 +1,14 @@ +https://github.com/sahib/glyr/issues/99 + +Index: lib/glyr.h +--- lib/glyr.h.orig ++++ lib/glyr.h +@@ -18,7 +18,7 @@ + * along with glyr. If not, see . + **************************************************************/ + #ifndef GLYR_H +-#define GLYR_GLYR_H ++#define GLYR_H + + /** + * SECTION:glyr diff --git a/audio/glyr/patches/patch-lib_intern_albumlist_musicbrainz_c b/audio/glyr/patches/patch-lib_intern_albumlist_musicbrainz_c new file mode 100644 index 00000000000..f33984f9155 --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_albumlist_musicbrainz_c @@ -0,0 +1,68 @@ +adapt for musicbrainz api v2 + +Index: lib/intern/albumlist/musicbrainz.c +--- lib/intern/albumlist/musicbrainz.c.orig ++++ lib/intern/albumlist/musicbrainz.c +@@ -23,7 +23,7 @@ + + static const gchar * albumlist_musicbrainz_url (GlyrQuery * sets) + { +- return "http://musicbrainz.org/ws/1/release/?type=xml&artist=${artist}&limit=100"; ++ return "http://musicbrainz.org/ws/2/release/?query=artist:${artist}&limit=100"; + } + + ///////////////////////////////////////////////////////////// +@@ -33,6 +33,8 @@ static const gchar * albumlist_musicbrainz_url (GlyrQu + #define TYPE_BEGIN "type=\"" + #define TYPE_ENDIN "\" " + ++#define GROUP_BEGIN "" + + #define ARTIST_BEGIN "" + #define ARTIST_ENDIN "" +@@ -40,6 +42,9 @@ static const gchar * albumlist_musicbrainz_url (GlyrQu + #define TITLE_BEGIN "" + #define TITLE_ENDIN "" + ++ ++#define STATUS_BEGIN "" + ///////////////////////////////////////////////////////////// + + static bool is_in_list (GList * list, const char * to_cmp) +@@ -70,8 +75,8 @@ static bool type_is_valid (const char * type) + return result; + + static const char * valid_types[] = { +- "Single Official", +- "Album Official", ++ "Single", ++ "Album", + NULL + }; + +@@ -97,8 +102,12 @@ static GList * albumlist_musicbrainz_parse (cb_object + while (continue_search (g_list_length (result_list),capo->s) && + (node = strstr (node + 1, ALBUM_BEGIN) ) != NULL) + { +- gchar * type = get_search_value (node, TYPE_BEGIN, TYPE_ENDIN); +- if (type_is_valid (type)) ++ gchar * rg = get_search_value (node, GROUP_BEGIN, GROUP_ENDIN); ++ gchar * type = get_search_value (rg, TYPE_BEGIN, TYPE_ENDIN); ++ gchar * statusn = get_search_value (node, STATUS_BEGIN, STATUS_ENDIN); ++ gchar * status = strstr(statusn, ">"); ++ status++; ++ if (type_is_valid (type) && g_strcmp0(status, "Official") == 0) + { + gchar * artist = get_search_value (node,ARTIST_BEGIN, ARTIST_ENDIN); + if (artist != NULL && +@@ -123,6 +132,8 @@ static GList * albumlist_musicbrainz_parse (cb_object + } + + g_free (type); ++ g_free (rg); ++ g_free (statusn); + } + return result_list; + } diff --git a/audio/glyr/patches/patch-lib_intern_common_musicbrainz_c b/audio/glyr/patches/patch-lib_intern_common_musicbrainz_c new file mode 100644 index 00000000000..6340d17e4b8 --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_common_musicbrainz_c @@ -0,0 +1,38 @@ +Tentatively port to MB API v2 + +Index: lib/intern/common/musicbrainz.c +--- lib/intern/common/musicbrainz.c.orig ++++ lib/intern/common/musicbrainz.c +@@ -57,11 +57,11 @@ const gchar * generic_musicbrainz_url (GlyrQuery * set + switch (please_what_type (sets) ) + { + case GLYR_TYPE_TAG_TITLE : +- return g_strdup_printf ("http://musicbrainz.org/ws/1/track/?type=xml&title=%s&artist=%s&release=%s",wrap_t,wrap_a,wrap_b); ++ return g_strdup_printf ("http://musicbrainz.org/ws/2/recording/?query=recording:%s%%20AND%%20artist:%s%%20AND%%20release:%s",wrap_t,wrap_a,wrap_b); + case GLYR_TYPE_TAG_ALBUM : +- return g_strdup_printf ("http://musicbrainz.org/ws/1/release/?type=xml&title=%s&artist=%s",wrap_b,wrap_a); ++ return g_strdup_printf ("http://musicbrainz.org/ws/2/release/?query=release:%s%%20AND%%20artist:%s",wrap_b,wrap_a); + case GLYR_TYPE_TAG_ARTIST: +- return g_strdup_printf ("http://musicbrainz.org/ws/1/artist/?type=xml&name=%s",wrap_a); ++ return g_strdup_printf ("http://musicbrainz.org/ws/2/artist/?query=%s",wrap_a); + default: + return NULL; + } +@@ -150,7 +150,7 @@ GlyrMemCache * generic_musicbrainz_parse (cb_object * + switch (please_what_type (capo->s) ) + { + case GLYR_TYPE_TAG_TITLE: +- type = "track"; ++ type = "recording"; + break; + case GLYR_TYPE_TAG_ALBUM: + type = "release"; +@@ -160,7 +160,7 @@ GlyrMemCache * generic_musicbrainz_parse (cb_object * + break; + } + +- gchar * info_page_url = g_strdup_printf ("http://musicbrainz.org/ws/1/%s/%s?type=xml&inc=%s",type,mbid,include); ++ gchar * info_page_url = g_strdup_printf ("http://musicbrainz.org/ws/2/%s/%s?inc=%s",type,mbid,include); + if (info_page_url) + { + info = download_single (info_page_url,capo->s,NULL); diff --git a/audio/glyr/patches/patch-lib_intern_lyrics_elyrics_c b/audio/glyr/patches/patch-lib_intern_lyrics_elyrics_c new file mode 100644 index 00000000000..3c2527bcac2 --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_lyrics_elyrics_c @@ -0,0 +1,17 @@ +https://github.com/sahib/glyr/issues/102 + +Index: lib/intern/lyrics/elyrics.c +--- lib/intern/lyrics/elyrics.c.orig ++++ lib/intern/lyrics/elyrics.c +@@ -88,9 +88,9 @@ static void remove_from_from_string (gchar * string) + + ///////////////////////////////// + +-#define LYRICS_BEGIN "
" ++#define LYRICS_BEGIN "
" + #define LYRICS_ALT_END "these lyrics are submitted by" +-#define LYRICS_END "
" ++#define LYRICS_END "

\n" + + static GList * lyrics_elyrics_parse (cb_object * capo) + { diff --git a/audio/glyr/patches/patch-lib_intern_lyrics_lyricsreg_c b/audio/glyr/patches/patch-lib_intern_lyrics_lyricsreg_c new file mode 100644 index 00000000000..39dcc2a3f72 --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_lyrics_lyricsreg_c @@ -0,0 +1,16 @@ +https://github.com/sahib/glyr/issues/102 + +Index: lib/intern/lyrics/lyricsreg.c +--- lib/intern/lyrics/lyricsreg.c.orig ++++ lib/intern/lyrics/lyricsreg.c +@@ -20,8 +20,8 @@ + #include "../../core.h" + #include "../../stringlib.h" + +-#define INFO_BEGIN "
" +-#define INFO_ENDIN " \n
\n" ++#define INFO_ENDIN "
" + + static const char * lyrics_lyricsreg_url (GlyrQuery * s) + { diff --git a/audio/glyr/patches/patch-lib_intern_lyrics_lyricswiki_c b/audio/glyr/patches/patch-lib_intern_lyrics_lyricswiki_c new file mode 100644 index 00000000000..06e7f3d3108 --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_lyrics_lyricswiki_c @@ -0,0 +1,15 @@ +https://github.com/sahib/glyr/commit/e580b1c446d4ac7077a59c52de2b996d0d832d2f + +doesnt work anyway ? +Index: lib/intern/lyrics/lyricswiki.c +--- lib/intern/lyrics/lyricswiki.c.orig ++++ lib/intern/lyrics/lyricswiki.c +@@ -65,7 +65,7 @@ static gboolean lv_cmp_content (const gchar * to_artis + + #define LYR_NODE "
\n\n
\n" ++#define MAGISTRIX_LYRICS_END_INDICATOR "
\n
"); ++ gchar * data = get_search_value (cache->data, MAGISTRIX_LYRIC_START_INDICATOR, MAGISTRIX_LYRICS_END_INDICATOR); + if (data != NULL) + { + result = DL_init(); +@@ -49,11 +52,11 @@ static GlyrMemCache * parse_lyric_page (GlyrMemCache * + + /////////////////////////////////// + +-#define SEARCH_FIRST_RESULT "" +-#define SEARCH_LAST_RESULT "
" +-#define SEARCH_NODE "
" +-#define SEARCH_LINK_START "–\n" ++#define SEARCH_LAST_RESULT "" ++#define SEARCH_NODE "
  • " ++#define SEARCH_LINK_START "" + + static GList * parse_search_result_page (cb_object * capo) + { +@@ -93,12 +96,15 @@ static GList * parse_search_result_page (cb_object * c + + /////////////////////////////////// + ++#define MAGISTRIX_SEARCH_RESULT_TITLE "Deine Suchergebnisse" ++#define MAGISTRIX_SEARCH_RESULT_FAILURE "Es konnten leider keine Ergebnisse gefunden werden." ++ + static GList * lyrics_magistrix_parse (cb_object * capo) + { + GList * result_list = NULL; +- if (strstr (capo->cache->data,"Es wurden keine Songtexte gefunden") == NULL) /* "No songtext" page? */ ++ if (strstr (capo->cache->data, MAGISTRIX_SEARCH_RESULT_FAILURE) == NULL) /* "No songtext" page? */ + { +- if (strstr (capo->cache->data,"<title>Songtext-Suche") == NULL) /* Are we not on the search result page? */ ++ if (strstr (capo->cache->data, MAGISTRIX_SEARCH_RESULT_TITLE) == NULL) /* Are we not on the search result page? */ + { + GlyrMemCache * result = parse_lyric_page (capo->cache); + if (result != NULL) diff --git a/audio/glyr/patches/patch-lib_intern_lyrics_vagalume_c b/audio/glyr/patches/patch-lib_intern_lyrics_vagalume_c new file mode 100644 index 00000000000..b242b2c0a01 --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_lyrics_vagalume_c @@ -0,0 +1,16 @@ +https://github.com/sahib/glyr/issues/102 + +Index: lib/intern/lyrics/vagalume.c +--- lib/intern/lyrics/vagalume.c.orig ++++ lib/intern/lyrics/vagalume.c +@@ -24,8 +24,8 @@ + /* JSON Parsing */ + #include "../../jsmn/jsmn.h" + +-#define VAGALUME_DOMAIN "http://www.vagalume.com.br" +-#define VAGALUME_PATH "/api/search.php?art=${artist}&mus=${title}" ++#define VAGALUME_DOMAIN "http://api.vagalume.com.br" ++#define VAGALUME_PATH "/search.php?art=${artist}&mus=${title}" + + /** + * Vagalume Provider written by: Felipe Bessa Coelho diff --git a/audio/glyr/patches/patch-lib_intern_photos_lastfm_c b/audio/glyr/patches/patch-lib_intern_photos_lastfm_c new file mode 100644 index 00000000000..2e8d78f1afa --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_photos_lastfm_c @@ -0,0 +1,123 @@ +XXX needs to parse the returned XML +taken/adapted from similar_artist & cover implems + +only returns the dummy picture 2a96cbd8b46e442fc41c2b86b821562f.png ? + +Index: lib/intern/photos/lastfm.c +--- lib/intern/photos/lastfm.c.orig ++++ lib/intern/photos/lastfm.c +@@ -28,79 +28,57 @@ + + static const gchar * photos_lastfm_url (GlyrQuery * settings) + { +- return "http://ws.audioscrobbler.com/2.0/?method=artist.getimages&autocorrect=1&artist=${artist}&api_key="API_KEY_LASTFM; ++ return "http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&autocorrect=1&artist=${artist}&api_key="API_KEY_LASTFM; + } + + ///////////////////////////////// + +-static gboolean size_fits (GlyrQuery * s, gchar ** ref) +-{ +- gboolean result = FALSE; +- if (ref != NULL) +- { +- gchar * search_ptr = ref[0]; +- if (search_ptr != NULL) +- { +- search_ptr = strchr (search_ptr,'"'); +- +- gint ratio = 0; +- gchar * width_string = get_search_value (search_ptr,"width=\"","\""); +- gchar * height_string = get_search_value (search_ptr,"height=\"","\""); +- if (width_string && height_string) +- { +- ratio = (strtol (width_string,NULL,10) + strtol (height_string,NULL,10) ) /2; +- } +- g_free (width_string); +- g_free (height_string); +- +- gboolean original_size_allowed = TRUE; +- if (g_strstr_len (ref[0],100,"original") != NULL) +- { +- /* Deny extremelly large images by default, except explicitely wanted */ +- if (! (ratio >= 1000 && s->img_min_size >= 1000 && s->img_max_size == -1) ) +- { +- original_size_allowed = FALSE; +- } +- } +- +- if (size_is_okay (ratio, s->img_min_size, s->img_max_size) == TRUE && original_size_allowed == TRUE) +- { +- result = TRUE; +- } +- +- search_ptr = strchr (search_ptr,'>'); +- } +- ref[0] = search_ptr + 1; +- } +- return result; +-} +- + ///////////////////////////////// + + static GList * photos_lastfm_parse (cb_object * capo) + { +- gchar * root = capo->cache->data; ++ /* Handle size requirements (Default to large) */ ++ const gchar * tag_ssize = NULL ; ++ const gchar * tag_esize = ""; ++ ++ /* find desired size */ ++ if ( size_is_okay (300,capo->s->img_min_size,capo->s->img_max_size) ) ++ tag_ssize = ""; ++ else if ( size_is_okay (125,capo->s->img_min_size,capo->s->img_max_size) ) ++ tag_ssize = ""; ++ else if ( size_is_okay (64, capo->s->img_min_size,capo->s->img_max_size) ) ++ tag_ssize = ""; ++ else if ( size_is_okay (34, capo->s->img_min_size,capo->s->img_max_size) ) ++ tag_ssize = ""; ++ else if ( true || false ) ++ tag_ssize = ""; ++ ++ /* The result (perhaps) */ + GList * result_list = NULL; ++ gchar * find = capo->cache->data; + +- while (continue_search (g_list_length (result_list),capo->s) && (root = strstr (root,SIZE_FO) ) != NULL) ++ while (continue_search (g_list_length (result_list),capo->s) && (find = strstr (find+1, "") ) != NULL) + { +- gchar * begin = root + strlen (SIZE_FO); +- if (size_fits (capo->s,&begin) == TRUE) +- { +- gchar * endin = strstr (begin,URL_ENDIN); +- if (endin != NULL) ++ gchar * artist = get_search_value (find, "", ""); ++ ++ if (levenshtein_strnormcmp (capo->s, artist, capo->s->artist) <= capo->s->fuzzyness) { ++ ++ gchar * img_start = strstr(find, tag_ssize); ++ ++ if (img_start != NULL) + { +- gchar * urlb = copy_value (begin,endin); +- if (urlb != NULL) ++ gchar * url = get_search_value (find, (gchar*) tag_ssize, (gchar*) tag_esize); ++ if (url != NULL) + { +- GlyrMemCache * cache = DL_init(); +- cache->data = urlb; +- cache->size = strlen (urlb); +- result_list = g_list_prepend (result_list,cache); ++ GlyrMemCache * result = DL_init(); ++ result->data = url; ++ result->size = strlen (url); ++ result_list = g_list_prepend (result_list,result); + } + } + } +- root += (sizeof SIZE_FO) - 1; ++ ++ g_free (artist); + } + return result_list; + } diff --git a/audio/glyr/patches/patch-lib_intern_relations_musicbrainz_c b/audio/glyr/patches/patch-lib_intern_relations_musicbrainz_c new file mode 100644 index 00000000000..e50a96b760d --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_relations_musicbrainz_c @@ -0,0 +1,39 @@ +Index: lib/intern/relations/musicbrainz.c +--- lib/intern/relations/musicbrainz.c.orig ++++ lib/intern/relations/musicbrainz.c +@@ -23,9 +23,12 @@ + + ///////////////////////////////// + +-#define RELATION_TARGLYR_GET_TYPE "" ++#define RELATION_TARGLYR_GET_TYPE "" + #define RELATION_BEGIN_TYPE "" ++ + /* Wrap around the (a bit more) generic versions */ + static GList * relations_musicbrainz_parse (cb_object * capo) + { +@@ -46,8 +49,11 @@ static GList * relations_musicbrainz_parse (cb_object + while (continue_search (ctr,capo->s) && (node = strstr (node+nlen,RELATION_BEGIN_TYPE) ) ) + { + node += nlen; +- gchar * target = get_search_value (node,"target=\"","\""); ++ gchar * targetn = get_search_value (node, TARGET_BEGIN, TARGET_ENDIN); + gchar * type = get_search_value (node,"type=\"","\""); ++ // strip id="xxxx"> ++ gchar* target = strstr(targetn, ">"); ++ target++; + + if (type != NULL && target != NULL) + { +@@ -59,7 +65,7 @@ static GList * relations_musicbrainz_parse (cb_object + ctr++; + + g_free (type); +- g_free (target); ++ g_free (targetn); + } + } + } diff --git a/audio/glyr/patches/patch-lib_intern_tracklist_musicbrainz_c b/audio/glyr/patches/patch-lib_intern_tracklist_musicbrainz_c new file mode 100644 index 00000000000..afed3b82377 --- /dev/null +++ b/audio/glyr/patches/patch-lib_intern_tracklist_musicbrainz_c @@ -0,0 +1,43 @@ +port to MB API v2 + +Index: lib/intern/tracklist/musicbrainz.c +--- lib/intern/tracklist/musicbrainz.c.orig ++++ lib/intern/tracklist/musicbrainz.c +@@ -22,17 +22,33 @@ + + static const gchar * tracklist_musicbrainz_url (GlyrQuery * sets) + { +- return "http://musicbrainz.org/ws/1/release/?type=xml&artist=${artist}&releasetypes=Official&limit=10&title=${album}&limit=1"; ++ return "http://musicbrainz.org/ws/2/release/?query=artist:${artist}%20AND%20release=${album}&limit=1"; + } + + ///////////////////////////////// + + #define REL_ID_BEGIN "id=\"" + #define REL_ID_ENDIN "\" " +-#define REL_ID_FORM "http://musicbrainz.org/ws/1/release/%s?type=xml&inc=tracks" ++#define REL_ID_FORM "http://musicbrainz.org/ws/2/release/%s?inc=recordings" + +-#define DUR_BEGIN "" +-#define DUR_ENDIN "" ++/* parse the following XML ++ ++ ++ ++ 1 ++ 1 ++ 253000 ++ ++ Les Ailes d’un ange ++ 253000 ++ 2016 ++ ++ ++ ++*/ ++ ++#define DUR_BEGIN "" ++#define DUR_ENDIN "" + #define TIT_BEGIN "" + #define TIT_ENDIN "" + diff --git a/audio/glyr/patches/patch-lib_register_plugins_c b/audio/glyr/patches/patch-lib_register_plugins_c new file mode 100644 index 00000000000..07648ddcc29 --- /dev/null +++ b/audio/glyr/patches/patch-lib_register_plugins_c @@ -0,0 +1,77 @@ +drop most broken providers, keep only lastfm & musicbrainz which need fixing, wip + +working lyrics providers: lyrix & elyrics, lyricswiki ? + +no working albumreview, nor backdrops & guitartabs provider + +Index: lib/register_plugins.c +--- lib/register_plugins.c.orig ++++ lib/register_plugins.c +@@ -143,9 +143,6 @@ void plugin_add_to_list (GList ** list, void * data) + static void register_provider_plugins (void) + { + plugin_add_to_list (&glyrMetaDataSourceList,&ainfo_lastfm_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&ainfo_lyricsreg_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&ainfo_bbcmusic_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&ainfo_echonest_src); + plugin_add_to_list (&glyrMetaDataSourceList,&albumlist_musicbrainz_src); + + // FIXME: Seems to be broken too. (serverside) +@@ -159,56 +156,20 @@ static void register_provider_plugins (void) + + + // FIXME: No real data yet there.. adele:19 gives a correct mbid, but no results +- plugin_add_to_list(&glyrMetaDataSourceList,&cover_coverartarchive_src); + +- plugin_add_to_list (&glyrMetaDataSourceList,&cover_discogs_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&cover_google_src); + plugin_add_to_list (&glyrMetaDataSourceList,&cover_lastfm_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&cover_jamendo_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&cover_lyricswiki_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&cover_rhapsody_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&cover_picsearch_src); + plugin_add_to_list (&glyrMetaDataSourceList,&cover_musicbrainz_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&cover_slothradio_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_lipwalk_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_lyrdb_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_lyricsreg_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_lyricstime_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_lyricsvip_src); ++ + plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_lyricswiki_src); + plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_lyrix_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_magistrix_src); +- //plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_metrolyrics_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_metallum_src); + plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_elyrics_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_vagalume_src); +- +- // FIXME: Chartlyrics reacts very slowly, and often not at all +- // add again when running again ( :( - good api though) +- // 28.1.2012: Seems to be on again, API fails too often though still. +- plugin_add_to_list (&glyrMetaDataSourceList,&lyrics_chartlyrics_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&photos_flickr_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&photos_google_src); + plugin_add_to_list (&glyrMetaDataSourceList,&photos_lastfm_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&photos_discogs_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&photos_singerpictures_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&photos_rhapsody_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&photos_picsearch_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&photos_bbcmusic_src); + plugin_add_to_list (&glyrMetaDataSourceList,&relations_musicbrainz_src); + +- // FIXME: Silly amazon requires to be a Seller to use their API +- //plugin_add_to_list(&glyrMetaDataSourceList,&review_amazon_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&review_metallum_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&review_echonest_src); + plugin_add_to_list (&glyrMetaDataSourceList,&similar_artist_lastfm_src); + plugin_add_to_list (&glyrMetaDataSourceList,&similar_song_lastfm_src); + plugin_add_to_list (&glyrMetaDataSourceList,&tags_musicbrainz_src); + plugin_add_to_list (&glyrMetaDataSourceList,&tracklist_musicbrainz_src); +- // FIXME: Searchfunction of guitaretabs seems to be broken +- //plugin_add_to_list(&glyrMetaDataSourceList,&guitartabs_guitaretab_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&guitartabs_chordie_src); +- plugin_add_to_list (&glyrMetaDataSourceList,&backdrops_htbackdrops_src); + + /* Special offline providers */ + plugin_add_to_list (&glyrMetaDataSourceList,&relations_generated_src); diff --git a/audio/glyr/patches/patch-src_utils_ping_url_c b/audio/glyr/patches/patch-src_utils_ping_url_c new file mode 100644 index 00000000000..5e63fee4163 --- /dev/null +++ b/audio/glyr/patches/patch-src_utils_ping_url_c @@ -0,0 +1,29 @@ +ihttps://github.com/curl/curl/issues/9779 + +Index: src/utils/ping_url.c +--- src/utils/ping_url.c.orig ++++ src/utils/ping_url.c +@@ -129,18 +129,18 @@ static struct header_data * url_is_gettable (gchar * u + + info = g_malloc0 (sizeof (struct header_data) ); + +- curl_easy_setopt (eh, CURLOPT_TIMEOUT, 3); ++ curl_easy_setopt (eh, CURLOPT_TIMEOUT, 3L); + curl_easy_setopt (eh, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt (eh, CURLOPT_USERAGENT, GLYR_DEFAULT_USERAGENT"/linkvalidator"); + curl_easy_setopt (eh, CURLOPT_URL,url); +- curl_easy_setopt (eh, CURLOPT_FOLLOWLOCATION, TRUE); +- curl_easy_setopt (eh, CURLOPT_HEADER,TRUE); +- curl_easy_setopt (eh, CURLOPT_NOBODY,TRUE); ++ curl_easy_setopt (eh, CURLOPT_FOLLOWLOCATION, (long)TRUE); ++ curl_easy_setopt (eh, CURLOPT_HEADER,(long)TRUE); ++ curl_easy_setopt (eh, CURLOPT_NOBODY,(long)TRUE); + curl_easy_setopt (eh, CURLOPT_HEADERFUNCTION, header_cb); + curl_easy_setopt (eh, CURLOPT_WRITEFUNCTION, empty_cb); + curl_easy_setopt (eh, CURLOPT_WRITEHEADER, info); + +- curl_easy_setopt (eh, CURLOPT_VERBOSE,TRUE); ++ curl_easy_setopt (eh, CURLOPT_VERBOSE,(long)TRUE); + + rc = curl_easy_perform (eh); + curl_easy_cleanup (eh);