[multivalued in grilo-plugins (v3) 2/3] lastfm-albumart: Provide all available thumbnails
- From: "Juan A. Suarez Romero" <jasuarez igalia com>
- To: grilo-list gnome org
- Subject: [multivalued in grilo-plugins (v3) 2/3] lastfm-albumart: Provide all available thumbnails
- Date: Thu, 3 Mar 2011 13:38:34 +0100
Signed-off-by: Juan A. Suarez Romero <jasuarez igalia com>
---
src/lastfm-albumart/grl-lastfm-albumart.c | 35 ++++++++++++++++++++++------
1 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/src/lastfm-albumart/grl-lastfm-albumart.c b/src/lastfm-albumart/grl-lastfm-albumart.c
index 12cfb28..d25b35a 100644
--- a/src/lastfm-albumart/grl-lastfm-albumart.c
+++ b/src/lastfm-albumart/grl-lastfm-albumart.c
@@ -41,7 +41,10 @@ GRL_LOG_DOMAIN_STATIC(lastfm_albumart_log_domain);
/* -------- Last.FM API -------- */
#define LASTFM_GET_ALBUM "http://ws.audioscrobbler.com/1.0/album/%s/%s/info.xml"
-#define LASTFM_XML_COVER "/album/coverart/medium"
+
+#define LASTFM_XML_COVER_MEDIUM "/album/coverart/medium"
+#define LASTFM_XML_COVER_LARGE "/album/coverart/large"
+#define LASTFM_XML_COVER_SMALL "/album/coverart/small"
/* ------- Pluging Info -------- */
@@ -145,7 +148,7 @@ grl_lastfm_albumart_source_finalize (GObject *object)
/* ======================= Utilities ==================== */
static gchar *
-xml_get_image (const gchar *xmldata)
+xml_get_image (const gchar *xmldata, const gchar *image_node)
{
xmlDocPtr doc;
xmlXPathContextPtr xpath_ctx;
@@ -164,8 +167,7 @@ xml_get_image (const gchar *xmldata)
return NULL;
}
- xpath_res = xmlXPathEvalExpression ((xmlChar *) LASTFM_XML_COVER,
- xpath_ctx);
+ xpath_res = xmlXPathEvalExpression ((xmlChar *) image_node, xpath_ctx);
if (!xpath_res) {
xmlXPathFreeContext (xpath_ctx);
xmlFreeDoc (doc);
@@ -194,6 +196,7 @@ read_done_cb (GObject *source_object,
(GrlMetadataSourceResolveSpec *) user_data;
GError *error = NULL;
GError *wc_error = NULL;
+ GrlRelatedKeys *relkeys;
gchar *content = NULL;
gchar *image = NULL;
@@ -213,11 +216,27 @@ read_done_cb (GObject *source_object,
return;
}
- image = xml_get_image (content);
+ image = xml_get_image (content, LASTFM_XML_COVER_MEDIUM);
+ if (image) {
+ relkeys = grl_related_keys_new_with_keys (GRL_METADATA_KEY_THUMBNAIL, image,
+ NULL);
+ grl_data_add_related_keys (GRL_DATA (rs->media), relkeys);
+ g_free (image);
+ }
+
+ image = xml_get_image (content, LASTFM_XML_COVER_LARGE);
+ if (image) {
+ relkeys = grl_related_keys_new_with_keys (GRL_METADATA_KEY_THUMBNAIL, image,
+ NULL);
+ grl_data_add_related_keys (GRL_DATA (rs->media), relkeys);
+ g_free (image);
+ }
+
+ image = xml_get_image (content, LASTFM_XML_COVER_SMALL);
if (image) {
- grl_data_set_string (GRL_DATA (rs->media),
- GRL_METADATA_KEY_THUMBNAIL,
- image);
+ relkeys = grl_related_keys_new_with_keys (GRL_METADATA_KEY_THUMBNAIL, image,
+ NULL);
+ grl_data_add_related_keys (GRL_DATA (rs->media), relkeys);
g_free (image);
}
--
1.7.1
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]