summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan A. Suarez Romero <jasuarez@igalia.com>2010-02-15 10:10:29 +0100
committerJuan A. Suarez Romero <jasuarez@igalia.com>2010-02-15 16:58:21 +0100
commit6ddb0b211cf7fa4feaa9142a413c79a0322b0773 (patch)
treeb5eb14e49543598a577a19c83ae0f874a5a7ddd0
parent2f0eee3d6aff29c0c0f4b8e75675ac94b8827a51 (diff)
downloadgrilo-plugins-6ddb0b211cf7fa4feaa9142a413c79a0322b0773.tar.gz
[flickr] Add support for thumbnails
-rw-r--r--src/flickr/gflickr.c31
-rw-r--r--src/flickr/gflickr.h3
-rw-r--r--src/flickr/grl-flickr.c17
3 files changed, 46 insertions, 5 deletions
diff --git a/src/flickr/gflickr.c b/src/flickr/gflickr.c
index 170546d..aacfcbc 100644
--- a/src/flickr/gflickr.c
+++ b/src/flickr/gflickr.c
@@ -9,6 +9,9 @@
#define FLICKR_PHOTO_ORIG_URL \
"http://farm%s.static.flickr.com/%s/%s_%s_o.%s"
+#define FLICKR_PHOTO_THUMB_URL \
+ "http://farm%s.static.flickr.com/%s/%s_%s_t.jpg"
+
#define FLICKR_ENDPOINT "http://api.flickr.com/services/rest/?"
#define FLICKR_PHOTOS_SEARCH_METHOD "flickr.photos.search"
@@ -265,3 +268,31 @@ g_flickr_photo_url_original (gpointer f, GHashTable *photo)
extension);
}
}
+
+gchar *
+g_flickr_photo_url_thumbnail (gpointer 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_THUMB_URL,
+ farm_id,
+ server_id,
+ photo_id,
+ secret);
+ }
+}
diff --git a/src/flickr/gflickr.h b/src/flickr/gflickr.h
index 109f643..eaf3cf8 100644
--- a/src/flickr/gflickr.h
+++ b/src/flickr/gflickr.h
@@ -38,4 +38,7 @@ g_flickr_photos_getInfo (gpointer f,
gchar *
g_flickr_photo_url_original (gpointer f, GHashTable *photo);
+gchar *
+g_flickr_photo_url_thumbnail (gpointer f, GHashTable *photo);
+
#endif /* _G_FLICKR_H_ */
diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c
index bc70e63..5e8c9f3 100644
--- a/src/flickr/grl-flickr.c
+++ b/src/flickr/grl-flickr.c
@@ -461,6 +461,7 @@ getInfo_cb (gpointer f, GHashTable *photo, gpointer user_data)
gchar *author;
gchar *date;
gchar *description;
+ gchar *thumbnail;
gchar *title;
gchar *url;
@@ -470,6 +471,7 @@ getInfo_cb (gpointer f, GHashTable *photo, gpointer user_data)
description = g_hash_table_lookup (photo, "description");
date = g_hash_table_lookup (photo, "dates_taken");
url = g_flickr_photo_url_original (f, photo);
+ thumbnail = g_flickr_photo_url_thumbnail (f, photo);
if (author) {
grl_content_media_set_author (ms->media, author);
@@ -490,6 +492,10 @@ getInfo_cb (gpointer f, GHashTable *photo, gpointer user_data)
if (url) {
grl_content_media_set_url (ms->media, url);
}
+
+ if (thumbnail) {
+ grl_content_media_set_thumbnail (ms->media, thumbnail);
+ }
}
ms->callback (ms->source, ms->media, ms->user_data, NULL);
@@ -502,12 +508,13 @@ grl_flickr_source_supported_keys (GrlMetadataSource *source)
{
static GList *keys = NULL;
if (!keys) {
- keys = grl_metadata_key_list_new (GRL_METADATA_KEY_ID,
- GRL_METADATA_KEY_URL,
- GRL_METADATA_KEY_AUTHOR,
- GRL_METADATA_KEY_TITLE,
- GRL_METADATA_KEY_DESCRIPTION,
+ keys = grl_metadata_key_list_new (GRL_METADATA_KEY_AUTHOR,
GRL_METADATA_KEY_DATE,
+ GRL_METADATA_KEY_DESCRIPTION,
+ GRL_METADATA_KEY_ID,
+ GRL_METADATA_KEY_THUMBNAIL,
+ GRL_METADATA_KEY_TITLE,
+ GRL_METADATA_KEY_URL,
NULL);
}
return keys;