summaryrefslogtreecommitdiff
path: root/src/tracker-writeback/tracker-writeback-taglib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tracker-writeback/tracker-writeback-taglib.c')
-rw-r--r--src/tracker-writeback/tracker-writeback-taglib.c289
1 files changed, 0 insertions, 289 deletions
diff --git a/src/tracker-writeback/tracker-writeback-taglib.c b/src/tracker-writeback/tracker-writeback-taglib.c
deleted file mode 100644
index 0c30edda2..000000000
--- a/src/tracker-writeback/tracker-writeback-taglib.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (C) 2010, Nokia <ivan.frade@nokia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-
-#include <taglib/tag_c.h>
-
-#include <glib-object.h>
-
-#include <libtracker-sparql/tracker-ontologies.h>
-
-#include "tracker-writeback-file.h"
-
-#define TRACKER_TYPE_WRITEBACK_TAGLIB (tracker_writeback_taglib_get_type ())
-
-typedef struct TrackerWritebackTaglib TrackerWritebackTaglib;
-typedef struct TrackerWritebackTaglibClass TrackerWritebackTaglibClass;
-
-struct TrackerWritebackTaglib {
- TrackerWritebackFile parent_instance;
-};
-
-struct TrackerWritebackTaglibClass {
- TrackerWritebackFileClass parent_class;
-};
-
-static GType tracker_writeback_taglib_get_type (void) G_GNUC_CONST;
-static gboolean writeback_taglib_update_file_metadata (TrackerWritebackFile *wbf,
- GFile *file,
- GPtrArray *values,
- TrackerSparqlConnection *connection,
- GCancellable *cancellable,
- GError **error);
-static const gchar * const *writeback_taglib_content_types (TrackerWritebackFile *wbf);
-static gchar* writeback_taglib_get_artist_name (TrackerSparqlConnection *connection,
- const gchar *urn);
-static gchar* writeback_taglib_get_album_name (TrackerSparqlConnection *connection,
- const gchar *urn);
-
-G_DEFINE_DYNAMIC_TYPE (TrackerWritebackTaglib, tracker_writeback_taglib, TRACKER_TYPE_WRITEBACK_FILE);
-
-static void
-tracker_writeback_taglib_class_init (TrackerWritebackTaglibClass *klass)
-{
- TrackerWritebackFileClass *writeback_file_class = TRACKER_WRITEBACK_FILE_CLASS (klass);
-
- writeback_file_class->update_file_metadata = writeback_taglib_update_file_metadata;
- writeback_file_class->content_types = writeback_taglib_content_types;
-}
-
-static void
-tracker_writeback_taglib_class_finalize (TrackerWritebackTaglibClass *klass)
-{
-}
-
-static void
-tracker_writeback_taglib_init (TrackerWritebackTaglib *wbt)
-{
-}
-
-static const gchar * const *
-writeback_taglib_content_types (TrackerWritebackFile *wbf)
-{
- static const gchar *content_types [] = {
- "audio/x-mpc",
- "audio/x-musepack",
- "audio/mpc",
- "audio/musepack",
- "audio/mpeg",
- "audio/x-mpeg",
- "audio/mp3",
- "audio/x-mp3",
- "audio/mpeg3",
- "audio/x-mpeg3",
- "audio/mpg",
- "audio/x-mpg",
- "audio/x-mpegaudio",
- "audio/flac",
- "audio/mp4",
- "audio/asf",
- "application/asx",
- "video/x-ms-asf-plugin",
- "application/x-mplayer2",
- "video/x-ms-asf",
- "application/vnd.ms-asf",
- "video/x-ms-asf-plugin",
- "video/x-ms-wm",
- "video/x-ms-wmx",
- "audio/aiff",
- "audio/x-aiff",
- "sound/aiff",
- "audio/rmf",
- "audio/x-rmf",
- "audio/x-pn-aiff",
- "audio/x-gsm",
- "audio/mid",
- "audio/x-midi",
- "audio/vnd.qcelp",
- "audio/wav",
- "audio/x-wav",
- "audio/wave",
- "audio/x-pn-wav",
- "audio/tta",
- "audio/x-tta",
- "audio/ogg",
- "application/ogg",
- "audio/x-ogg",
- "application/x-ogg",
- "audio/x-speex",
- NULL
- };
-
- return content_types;
-}
-
-static gboolean
-writeback_taglib_update_file_metadata (TrackerWritebackFile *writeback_file,
- GFile *file,
- GPtrArray *values,
- TrackerSparqlConnection *connection,
- GCancellable *cancellable,
- GError **error)
-{
- gboolean ret;
- gchar *path;
- TagLib_File *taglib_file = NULL;
- TagLib_Tag *tag;
- guint n;
-
- ret = FALSE;
- path = g_file_get_path (file);
- taglib_file = taglib_file_new (path);
-
- if (!taglib_file || !taglib_file_is_valid (taglib_file)) {
- goto out;
- }
-
- tag = taglib_file_tag (taglib_file);
-
- for (n = 0; n < values->len; n++) {
- const GStrv row = g_ptr_array_index (values, n);
-
- if (g_strcmp0 (row[2], TRACKER_PREFIX_NIE "title") == 0) {
- taglib_tag_set_title (tag, row[3]);
- }
-
- if (g_strcmp0 (row[2], TRACKER_PREFIX_NMM "performer") == 0) {
- gchar *artist_name = writeback_taglib_get_artist_name (connection, row[3]);
-
- if (artist_name) {
- taglib_tag_set_artist (tag, artist_name);
- g_free (artist_name);
- }
- }
-
- if (g_strcmp0 (row[2], TRACKER_PREFIX_NMM "musicAlbum") == 0) {
- gchar *album_name = writeback_taglib_get_album_name (connection, row[3]);
-
- if (album_name) {
- taglib_tag_set_album (tag, album_name);
- g_free (album_name);
- }
- }
-
- if (g_strcmp0 (row[2], TRACKER_PREFIX_RDFS "comment") == 0) {
- taglib_tag_set_comment (tag, row[3]);
- }
-
- if (g_strcmp0 (row[2], TRACKER_PREFIX_NMM "genre") == 0) {
- taglib_tag_set_genre (tag, row[3]);
- }
-
- if (g_strcmp0 (row[2], TRACKER_PREFIX_NMM "trackNumber") == 0) {
- taglib_tag_set_track (tag, atoi (row[3]));
- }
- }
-
- taglib_file_save (taglib_file);
-
- ret = TRUE;
-
- out:
- g_free (path);
- if (taglib_file) {
- taglib_file_free (taglib_file);
- }
-
- return ret;
-}
-
-static gchar*
-writeback_taglib_get_from_query (TrackerSparqlConnection *connection,
- const gchar *urn,
- const gchar *query,
- const gchar *errmsg)
-{
- TrackerSparqlCursor *cursor;
- GError *error = NULL;
- gchar *value = NULL;
-
- cursor = tracker_sparql_connection_query (connection,
- query,
- NULL,
- &error);
-
- if (error || !cursor || !tracker_sparql_cursor_next (cursor, NULL, NULL)) {
- g_warning ("Couldn't find %s for artist with urn '%s', %s",
- errmsg,
- urn,
- error ? error->message : "no such was found");
-
- if (error) {
- g_error_free (error);
- }
- } else {
- value = g_strdup (tracker_sparql_cursor_get_string (cursor, 0, NULL));
- }
-
- g_object_unref (cursor);
-
- return value;
-}
-
-
-static gchar*
-writeback_taglib_get_artist_name (TrackerSparqlConnection *connection,
- const gchar *urn)
-{
- gchar *val, *query;
-
- query = g_strdup_printf ("SELECT ?artistName WHERE {<%s> nmm:artistName ?artistName}",
- urn);
- val = writeback_taglib_get_from_query (connection, urn, query, "artist name");
- g_free (query);
-
- return val;
-}
-
-static gchar*
-writeback_taglib_get_album_name (TrackerSparqlConnection *connection,
- const gchar *urn)
-{
- gchar *val, *query;
-
- query = g_strdup_printf ("SELECT ?albumName WHERE {<%s> dc:title ?albumName}",
- urn);
- val = writeback_taglib_get_from_query (connection, urn, query, "album name");
- g_free (query);
-
- return val;
-}
-
-TrackerWriteback *
-writeback_module_create (GTypeModule *module)
-{
- tracker_writeback_taglib_register_type (module);
-
- return g_object_new (TRACKER_TYPE_WRITEBACK_TAGLIB, NULL);
-}
-
-const gchar * const *
-writeback_module_get_rdf_types (void)
-{
- static const gchar *rdftypes[] = {
- TRACKER_PREFIX_NFO "Audio",
- NULL
- };
-
- return rdftypes;
-}