summaryrefslogtreecommitdiff
path: root/libmediaart/extract.c
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2013-10-16 19:27:54 +0100
committerSam Thursfield <sam.thursfield@codethink.co.uk>2013-10-17 18:15:28 +0100
commit7f31cc45e7ad46abcde3c93cb4c5ca4d7de51998 (patch)
tree45ffbd4782013c36f25976c623beb9813ac5a4cf /libmediaart/extract.c
parentf9ea070bbc45f142f2d94391837c6a441a2152fe (diff)
downloadlibmediaart-7f31cc45e7ad46abcde3c93cb4c5ca4d7de51998.tar.gz
extract: Rewrite media_art_process() to use media_art_process_file()
Diffstat (limited to 'libmediaart/extract.c')
-rw-r--r--libmediaart/extract.c127
1 files changed, 15 insertions, 112 deletions
diff --git a/libmediaart/extract.c b/libmediaart/extract.c
index abd0970..7e46875 100644
--- a/libmediaart/extract.c
+++ b/libmediaart/extract.c
@@ -1159,8 +1159,8 @@ media_art_process_file (const guchar *buffer,
title,
media_art_type_name[type],
file,
- &cache_art_file,
- &local_art_file);
+ &cache_art_file,
+ &local_art_file);
if (!cache_art_file) {
g_debug ("Album art path could not be obtained, not processing any further");
@@ -1292,119 +1292,22 @@ media_art_process (const unsigned char *buffer,
const gchar *title,
const gchar *uri)
{
- gchar *art_path;
- gchar *local_art_uri = NULL;
- gboolean processed = TRUE, a_exists, created = FALSE;
- guint64 mtime, a_mtime = 0;
-
- g_return_val_if_fail (type > MEDIA_ART_NONE && type < MEDIA_ART_TYPE_COUNT, FALSE);
-
- g_debug ("Processing media art: artist:'%s', title:'%s', type:'%s', uri:'%s'. Buffer is %ld bytes, mime:'%s'",
- artist ? artist : "",
- title ? title : "",
- media_art_type_name[type],
- uri,
- (long int) len,
- mime);
-
- /* TODO: We can definitely work with GFiles better here */
-
- mtime = get_mtime_by_uri (uri);
-
- media_art_get_path (artist,
- title,
- media_art_type_name[type],
- uri,
- &art_path,
- &local_art_uri);
-
- if (!art_path) {
- g_debug ("Album art path could not be obtained, not processing any further");
-
- g_free (local_art_uri);
-
- return FALSE;
- }
-
- a_exists = g_file_test (art_path, G_FILE_TEST_EXISTS);
-
- if (a_exists) {
- a_mtime = get_mtime_by_path (art_path);
- }
-
- if ((buffer && len > 0) && ((!a_exists) || (a_exists && mtime > a_mtime))) {
- processed = media_art_set (buffer, len, mime, type, artist, title);
- set_mtime (art_path, mtime);
- created = TRUE;
- }
-
- if ((!created) && ((!a_exists) || (a_exists && mtime > a_mtime))) {
- /* If not, we perform a heuristic on the dir */
- gchar *key;
- gchar *dirname = NULL;
- GFile *file, *dirf;
-
- file = g_file_new_for_uri (uri);
- dirf = g_file_get_parent (file);
- if (dirf) {
- dirname = g_file_get_path (dirf);
- g_object_unref (dirf);
- }
- g_object_unref (file);
-
- key = g_strdup_printf ("%i-%s-%s-%s",
- type,
- artist ? artist : "",
- title ? title : "",
- dirname ? dirname : "");
-
- g_free (dirname);
-
- if (!g_hash_table_lookup (media_art_cache, key)) {
- if (!media_art_heuristic (artist,
- title,
- type,
- uri,
- local_art_uri)) {
- /* If the heuristic failed, we
- * request the download the
- * media-art to the media-art
- * downloaders
- */
- media_art_request_download (type,
- artist,
- title,
- local_art_uri,
- art_path);
- }
+ GFile *file;
+ gboolean result;
- set_mtime (art_path, mtime);
+ g_return_val_if_fail (uri != NULL, FALSE);
- g_hash_table_insert (media_art_cache,
- key,
- GINT_TO_POINTER(TRUE));
- } else {
- g_free (key);
- }
- } else {
- if (!created) {
- g_debug ("Album art already exists for uri:'%s' as '%s'",
- uri,
- art_path);
- }
- }
+ file = g_file_new_for_uri(uri);
- if (local_art_uri && !g_file_test (local_art_uri, G_FILE_TEST_EXISTS)) {
- /* We can't reuse art_exists here because the
- * situation might have changed
- */
- if (g_file_test (art_path, G_FILE_TEST_EXISTS)) {
- media_art_copy_to_local (art_path, local_art_uri);
- }
- }
+ result = media_art_process_file(buffer,
+ len,
+ mime,
+ type,
+ artist,
+ title,
+ file);
- g_free (art_path);
- g_free (local_art_uri);
+ g_object_unref(file);
- return processed;
+ return file;
}