[grilo-plugins] flickr: Offer multiple thumbnail sizes



commit 2beda247809c3a1b334a860c260573c50be6c889
Author: Debarshi Ray <debarshir gnome org>
Date:   Tue Jul 30 17:26:51 2013 +0200

    flickr: Offer multiple thumbnail sizes
    
    Currently we are offering the "thumbnail" and "small 320" sizes.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=705149
    
    Signed-off-by: Juan A. Suarez Romero <jasuarez igalia com>

 src/flickr/gflickr.c    |   31 +++++++++++++++++++++++++++++++
 src/flickr/gflickr.h    |    3 +++
 src/flickr/grl-flickr.c |   25 ++++++++++++++++++++-----
 3 files changed, 54 insertions(+), 5 deletions(-)
---
diff --git a/src/flickr/gflickr.c b/src/flickr/gflickr.c
index 35bad08..9285aeb 100644
--- a/src/flickr/gflickr.c
+++ b/src/flickr/gflickr.c
@@ -20,6 +20,9 @@
 #define FLICKR_PHOTO_ORIG_URL                           \
   "http://farm%s.static.flickr.com/%s/%s_%s_o.%s";
 
+#define FLICKR_PHOTO_SMALL_URL                          \
+  "http://farm%s.static.flickr.com/%s/%s_%s_n.jpg";
+
 #define FLICKR_PHOTO_THUMB_URL                          \
   "http://farm%s.static.flickr.com/%s/%s_%s_t.jpg";
 
@@ -638,6 +641,34 @@ g_flickr_photo_url_original (GFlickr *f, GHashTable *photo)
 }
 
 gchar *
+g_flickr_photo_url_small (GFlickr *f, GHashTable *photo)
+{
+  gchar *farm_id;
+  gchar *secret;
+  gchar *photo_id;
+  gchar *server_id;
+
+  if (!photo) {
+    return NULL;
+  }
+
+  farm_id = g_hash_table_lookup (photo, "photo_farm");
+  secret = g_hash_table_lookup (photo, "photo_secret");
+  photo_id = g_hash_table_lookup (photo, "photo_id");
+  server_id = g_hash_table_lookup (photo, "photo_server");
+
+  if (!farm_id || !secret || !photo_id || !server_id) {
+    return NULL;
+  } else {
+    return g_strdup_printf (FLICKR_PHOTO_SMALL_URL,
+                            farm_id,
+                            server_id,
+                            photo_id,
+                            secret);
+  }
+}
+
+gchar *
 g_flickr_photo_url_thumbnail (GFlickr *f, GHashTable *photo)
 {
   gchar *farm_id;
diff --git a/src/flickr/gflickr.h b/src/flickr/gflickr.h
index 8984648..ffe5927 100644
--- a/src/flickr/gflickr.h
+++ b/src/flickr/gflickr.h
@@ -114,6 +114,9 @@ gchar *
 g_flickr_photo_url_original (GFlickr *f, GHashTable *photo);
 
 gchar *
+g_flickr_photo_url_small (GFlickr *f, GHashTable *photo);
+
+gchar *
 g_flickr_photo_url_thumbnail (GFlickr *f, GHashTable *photo);
 
 gchar *
diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c
index b67d13e..651efe8 100644
--- a/src/flickr/grl-flickr.c
+++ b/src/flickr/grl-flickr.c
@@ -441,13 +441,17 @@ token_info_cb (GFlickr *f,
 static void
 update_media (GrlMedia *media, GHashTable *photo)
 {
+  GrlRelatedKeys *relkeys;
+  gchar *image[2] = { NULL };
   gchar *author;
   gchar *date;
   gchar *description;
   gchar *id;
+  gchar *small;
   gchar *thumbnail;
   gchar *title;
   gchar *url;
+  gint i;
 
   author = g_hash_table_lookup (photo, "owner_realname");
   if (!author) {
@@ -496,11 +500,6 @@ update_media (GrlMedia *media, GHashTable *photo)
     grl_media_set_id (media, id);
   }
 
-  if (thumbnail) {
-    grl_media_set_thumbnail (media, thumbnail);
-    g_free (thumbnail);
-  }
-
   if (title && title[0] != '\0') {
     grl_media_set_title (media, title);
   }
@@ -509,6 +508,22 @@ update_media (GrlMedia *media, GHashTable *photo)
     grl_media_set_url (media, url);
     g_free (url);
   }
+
+  small = g_flickr_photo_url_small (NULL, photo);
+  image[0] = small;
+  image[1] = thumbnail;
+
+  for (i = 0; i < G_N_ELEMENTS (image); i++) {
+    if (image[i]) {
+      relkeys = grl_related_keys_new_with_keys (GRL_METADATA_KEY_THUMBNAIL,
+                                                image[i],
+                                                NULL);
+      grl_data_add_related_keys (GRL_DATA (media), relkeys);
+    }
+  }
+
+  g_free (small);
+  g_free (thumbnail);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]