[grilo-plugins] tmdb: Use new metadata keys from grilo core
- From: Juan A. Suarez Romero <jasuarez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins] tmdb: Use new metadata keys from grilo core
- Date: Thu, 1 Nov 2012 09:06:47 +0000 (UTC)
commit af26db35ed7dbc103c07b3ef3a0a0d78a614b0a7
Author: Mathias Hasselmann <mathias openismus com>
Date: Tue Oct 23 23:28:13 2012 +0200
tmdb: Use new metadata keys from grilo core
With https://bugzilla.gnome.org/show_bug.cgi?id=686206
several metadata keys got moved from this plugin to grilo
core. This commit replaces the custom key definitions by the
generic definitions, leaving "tmdb-backdrop", "tmdb-poster",
"tmdb-id" and "tmdb-imdb-id" as the only TMDB specific keys.
src/tmdb/grl-tmdb.c | 226 +++++++++++++++++++-------------------------------
1 files changed, 86 insertions(+), 140 deletions(-)
---
diff --git a/src/tmdb/grl-tmdb.c b/src/tmdb/grl-tmdb.c
index e5ebdf0..fac1320 100644
--- a/src/tmdb/grl-tmdb.c
+++ b/src/tmdb/grl-tmdb.c
@@ -53,15 +53,10 @@ enum {
PROP_API_KEY
};
-static GrlKeyID GRL_TMDB_METADATA_KEY_BACKDROPS = GRL_METADATA_KEY_INVALID;
-static GrlKeyID GRL_TMDB_METADATA_KEY_POSTERS = GRL_METADATA_KEY_INVALID;
+static GrlKeyID GRL_TMDB_METADATA_KEY_BACKDROP = GRL_METADATA_KEY_INVALID;
+static GrlKeyID GRL_TMDB_METADATA_KEY_POSTER = GRL_METADATA_KEY_INVALID;
static GrlKeyID GRL_TMDB_METADATA_KEY_IMDB_ID = GRL_METADATA_KEY_INVALID;
static GrlKeyID GRL_TMDB_METADATA_KEY_TMDB_ID = GRL_METADATA_KEY_INVALID;
-static GrlKeyID GRL_TMDB_METADATA_KEY_KEYWORDS = GRL_METADATA_KEY_INVALID;
-static GrlKeyID GRL_TMDB_METADATA_KEY_PERFORMER = GRL_METADATA_KEY_INVALID;
-static GrlKeyID GRL_TMDB_METADATA_KEY_PRODUCER = GRL_METADATA_KEY_INVALID;
-static GrlKeyID GRL_TMDB_METADATA_KEY_DIRECTOR = GRL_METADATA_KEY_INVALID;
-static GrlKeyID GRL_TMDB_METADATA_KEY_ORIGINAL_TITLE = GRL_METADATA_KEY_INVALID;
struct _GrlTmdbSourcePrivate {
char *api_key;
@@ -146,13 +141,13 @@ grl_tmdb_source_plugin_init (GrlRegistry *registry,
return FALSE;
}
- GRL_TMDB_METADATA_KEY_BACKDROPS =
+ GRL_TMDB_METADATA_KEY_BACKDROP =
register_metadata_key (registry,
- "tmdb-backdrops",
- "tmdb-backdrops",
+ "tmdb-backdrop",
+ "tmdb-backdrop",
"A list of URLs for movie backdrops");
- GRL_TMDB_METADATA_KEY_POSTERS =
+ GRL_TMDB_METADATA_KEY_POSTER =
register_metadata_key (registry,
"tmdb-poster",
"tmdb-poster",
@@ -170,36 +165,6 @@ grl_tmdb_source_plugin_init (GrlRegistry *registry,
"tmdb-id",
"ID of this movie at tmdb.org");
- GRL_TMDB_METADATA_KEY_KEYWORDS =
- register_metadata_key (registry,
- "tmdb-keywords",
- "tmdb-keywords",
- "A list of keywords about the movie");
-
- GRL_TMDB_METADATA_KEY_PERFORMER =
- register_metadata_key (registry,
- "tmdb-performer",
- "tmdb-performer",
- "A list of actors taking part in the movie");
-
- GRL_TMDB_METADATA_KEY_PRODUCER =
- register_metadata_key (registry,
- "tmdb-producer",
- "tmdb-producer",
- "A list of producers of the movie");
-
- GRL_TMDB_METADATA_KEY_DIRECTOR =
- register_metadata_key (registry,
- "tmdb-director",
- "tmdb-director",
- "Director of the movie");
-
- GRL_TMDB_METADATA_KEY_ORIGINAL_TITLE =
- register_metadata_key (registry,
- "tmdb-original-title",
- "tmdb-original-title",
- "Original title of a movie");
-
GrlTmdbSource *source = grl_tmdb_source_new (api_key);
grl_registry_register_source (registry,
plugin,
@@ -265,13 +230,15 @@ grl_tmdb_source_init (GrlTmdbSource *self)
/* Fast keys */
g_hash_table_add (self->priv->supported_keys,
- GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_BACKDROPS));
+ GRLKEYID_TO_POINTER (GRL_METADATA_KEY_THUMBNAIL));
g_hash_table_add (self->priv->supported_keys,
- GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_ORIGINAL_TITLE));
+ GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_BACKDROP));
g_hash_table_add (self->priv->supported_keys,
- GRLKEYID_TO_POINTER (GRL_METADATA_KEY_RATING));
+ GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_POSTER));
g_hash_table_add (self->priv->supported_keys,
- GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_POSTERS));
+ GRLKEYID_TO_POINTER (GRL_METADATA_KEY_ORIGINAL_TITLE));
+ g_hash_table_add (self->priv->supported_keys,
+ GRLKEYID_TO_POINTER (GRL_METADATA_KEY_RATING));
g_hash_table_add (self->priv->supported_keys,
GRLKEYID_TO_POINTER (GRL_METADATA_KEY_PUBLICATION_DATE));
g_hash_table_add (self->priv->supported_keys,
@@ -293,13 +260,13 @@ grl_tmdb_source_init (GrlTmdbSource *self)
g_hash_table_add (self->priv->slow_keys,
GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_IMDB_ID));
g_hash_table_add (self->priv->slow_keys,
- GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_KEYWORDS));
+ GRLKEYID_TO_POINTER (GRL_METADATA_KEY_KEYWORD));
g_hash_table_add (self->priv->slow_keys,
- GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_PERFORMER));
+ GRLKEYID_TO_POINTER (GRL_METADATA_KEY_PERFORMER));
g_hash_table_add (self->priv->slow_keys,
- GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_PRODUCER));
+ GRLKEYID_TO_POINTER (GRL_METADATA_KEY_PRODUCER));
g_hash_table_add (self->priv->slow_keys,
- GRLKEYID_TO_POINTER (GRL_TMDB_METADATA_KEY_DIRECTOR));
+ GRLKEYID_TO_POINTER (GRL_METADATA_KEY_DIRECTOR));
self->priv->wc = grl_net_wc_new ();
grl_net_wc_set_throttling (self->priv->wc, 1);
@@ -511,9 +478,29 @@ neutral_backdrop_filter (JsonNode *node)
return NULL;
}
-static void on_request_ready (GObject *source,
- GAsyncResult *result,
- gpointer user_data) {
+static void
+add_image (GrlTmdbSource *self,
+ GrlMedia *media,
+ GrlKeyID detail_key,
+ const char *image_path)
+{
+ SoupURI *uri;
+ char *str;
+
+ str = g_strconcat ("original", image_path, NULL);
+ uri = soup_uri_new_with_base (self->priv->image_base_uri, str);
+ g_free (str);
+
+ str = soup_uri_to_string (uri, FALSE);
+ grl_media_add_thumbnail (media, str);
+ grl_data_add_string (GRL_DATA (media), detail_key, str);
+ g_free (str);
+}
+
+static void
+on_request_ready (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data) {
ResolveClosure *closure = (ResolveClosure *) user_data;
GrlTmdbRequest *request = GRL_TMDB_REQUEST (source);
GError *error = NULL;
@@ -538,8 +525,7 @@ static void on_request_ready (GObject *source,
iter = values = grl_tmdb_request_get_string_list (request, "$.genres..name");
while (iter != NULL) {
grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_METADATA_KEY_GENRE,
- (char *) iter->data);
+ GRL_METADATA_KEY_GENRE, iter->data);
iter = iter->next;
}
g_list_free_full (values, g_free);
@@ -549,8 +535,7 @@ static void on_request_ready (GObject *source,
iter = values = grl_tmdb_request_get_string_list (request, "$.production_companies..name");
while (iter != NULL) {
grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_METADATA_KEY_STUDIO,
- (char *) iter->data);
+ GRL_METADATA_KEY_STUDIO, iter->data);
iter = iter->next;
}
g_list_free_full (values, g_free);
@@ -586,50 +571,31 @@ static void on_request_ready (GObject *source,
break;
case GRL_TMDB_REQUEST_DETAIL_MOVIE_IMAGES:
{
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_BACKDROPS)) {
+ /* Add posters first and backdrops later.
+ * Posters more likely make a good thumbnail than backdrops.
+ */
+ if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_POSTER)) {
iter = values = grl_tmdb_request_get_string_list_with_filter (request,
- "$.backdrops",
+ "$.posters",
neutral_backdrop_filter);
while (iter != NULL) {
- SoupURI *backdrop_uri;
- char *path;
-
- path = g_strconcat ("original", (char *) iter->data, NULL);
-
- backdrop_uri = soup_uri_new_with_base (closure->self->priv->image_base_uri,
- path);
- g_free (path);
- path = soup_uri_to_string (backdrop_uri, FALSE);
-
- grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_TMDB_METADATA_KEY_BACKDROPS,
- path);
- g_free (path);
+ add_image (closure->self, closure->rs->media,
+ GRL_TMDB_METADATA_KEY_POSTER,
+ iter->data);
iter = iter->next;
}
g_list_free_full (values, g_free);
}
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_POSTERS)) {
+ if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_BACKDROP)) {
iter = values = grl_tmdb_request_get_string_list_with_filter (request,
- "$.posters",
+ "$.backdrops",
neutral_backdrop_filter);
while (iter != NULL) {
- SoupURI *backdrop_uri;
- char *path;
-
- path = g_strconcat ("original", (char *) iter->data, NULL);
-
- backdrop_uri = soup_uri_new_with_base (closure->self->priv->image_base_uri,
- path);
- g_free (path);
- path = soup_uri_to_string (backdrop_uri, FALSE);
-
- grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_TMDB_METADATA_KEY_POSTERS,
- path);
- g_free (path);
+ add_image (closure->self, closure->rs->media,
+ GRL_TMDB_METADATA_KEY_BACKDROP,
+ iter->data);
iter = iter->next;
}
@@ -639,13 +605,11 @@ static void on_request_ready (GObject *source,
break;
case GRL_TMDB_REQUEST_DETAIL_MOVIE_KEYWORDS:
{
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_KEYWORDS)) {
+ if (SHOULD_RESOLVE (GRL_METADATA_KEY_KEYWORD)) {
iter = values = grl_tmdb_request_get_string_list (request,
"$.keywords..name");
while (iter != NULL) {
- grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_TMDB_METADATA_KEY_KEYWORDS,
- (char *) iter->data);
+ grl_media_add_keyword (closure->rs->media, iter->data);
iter = iter->next;
}
g_list_free_full (values, g_free);
@@ -654,41 +618,38 @@ static void on_request_ready (GObject *source,
break;
case GRL_TMDB_REQUEST_DETAIL_MOVIE_CAST:
{
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_PERFORMER)) {
+ if (SHOULD_RESOLVE (GRL_METADATA_KEY_PERFORMER)) {
values = grl_tmdb_request_get_string_list (request, "$.cast..name");
iter = values;
while (iter != NULL) {
- grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_TMDB_METADATA_KEY_PERFORMER,
- (char *) iter->data);
+ grl_media_video_add_performer (GRL_MEDIA_VIDEO (closure->rs->media),
+ iter->data);
iter = iter->next;
}
g_list_free_full (values, g_free);
}
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_PRODUCER)) {
+ if (SHOULD_RESOLVE (GRL_METADATA_KEY_PRODUCER)) {
values = grl_tmdb_request_get_string_list_with_filter (request,
"$.crew[*]",
producer_filter);
iter = values;
while (iter != NULL) {
- grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_TMDB_METADATA_KEY_PRODUCER,
- (char *) iter->data);
+ grl_media_video_add_producer (GRL_MEDIA_VIDEO (closure->rs->media),
+ iter->data);
iter = iter->next;
}
g_list_free_full (values, g_free);
}
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_DIRECTOR)) {
+ if (SHOULD_RESOLVE (GRL_METADATA_KEY_DIRECTOR)) {
values = grl_tmdb_request_get_string_list_with_filter (request,
"$.crew[*]",
director_filter);
iter = values;
while (iter != NULL) {
- grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_TMDB_METADATA_KEY_DIRECTOR,
- (char *) iter->data);
+ grl_media_video_add_director (GRL_MEDIA_VIDEO (closure->rs->media),
+ iter->data);
iter = iter->next;
}
g_list_free_full (values, g_free);
@@ -832,44 +793,29 @@ on_search_ready (GObject *source,
}
}
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_BACKDROPS)) {
- value = grl_tmdb_request_get (request, "$.results[0].backdrop_path");
+ /* Add posters first and backdrops later.
+ * Posters more likely make a good thumbnail than backdrops.
+ */
+ if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_POSTER)) {
+ value = grl_tmdb_request_get (request, "$.results[0].poster_path");
if (value != NULL) {
- SoupURI *backdrop_uri;
- char *path;
-
- path = g_strconcat ("original", g_value_get_string (value), NULL);
+ add_image (closure->self, closure->rs->media,
+ GRL_TMDB_METADATA_KEY_POSTER,
+ g_value_get_string (value));
- backdrop_uri = soup_uri_new_with_base (closure->self->priv->image_base_uri,
- path);
- g_free (path);
- path = soup_uri_to_string (backdrop_uri, FALSE);
+ g_value_unset (value);
- grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_TMDB_METADATA_KEY_BACKDROPS,
- path);
- g_free (path);
- g_value_unset (value);
}
}
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_POSTERS)) {
- value = grl_tmdb_request_get (request, "$.results[0].poster_path");
+ if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_BACKDROP)) {
+ value = grl_tmdb_request_get (request, "$.results[0].backdrop_path");
if (value != NULL) {
- SoupURI *backdrop_uri;
- char *path;
-
- path = g_strconcat ("original", g_value_get_string (value), NULL);
+ add_image (closure->self, closure->rs->media,
+ GRL_TMDB_METADATA_KEY_BACKDROP,
+ g_value_get_string (value));
- backdrop_uri = soup_uri_new_with_base (closure->self->priv->image_base_uri,
- path);
- g_free (path);
- path = soup_uri_to_string (backdrop_uri, FALSE);
-
- grl_data_add_string (GRL_DATA (closure->rs->media),
- GRL_TMDB_METADATA_KEY_POSTERS,
- path);
- g_free (path);
+ g_value_unset (value);
}
}
@@ -894,8 +840,8 @@ on_search_ready (GObject *source,
/* We need to do additional requests. Check if we should have resolved
* images and try to get some more */
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_BACKDROPS) ||
- SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_POSTERS))
+ if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_BACKDROP) ||
+ SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_POSTER))
g_queue_push_tail (closure->pending_requests,
create_and_run_request (self,
closure,
@@ -911,15 +857,15 @@ on_search_ready (GObject *source,
closure,
GRL_TMDB_REQUEST_DETAIL_MOVIE));
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_KEYWORDS))
+ if (SHOULD_RESOLVE (GRL_METADATA_KEY_KEYWORD))
g_queue_push_tail (closure->pending_requests,
create_and_run_request (self,
closure,
GRL_TMDB_REQUEST_DETAIL_MOVIE_KEYWORDS));
- if (SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_PERFORMER) ||
- SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_PRODUCER) ||
- SHOULD_RESOLVE (GRL_TMDB_METADATA_KEY_DIRECTOR))
+ if (SHOULD_RESOLVE (GRL_METADATA_KEY_PERFORMER) ||
+ SHOULD_RESOLVE (GRL_METADATA_KEY_PRODUCER) ||
+ SHOULD_RESOLVE (GRL_METADATA_KEY_DIRECTOR))
g_queue_push_tail (closure->pending_requests,
create_and_run_request (self,
closure,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]