summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Toso <me@victortoso.com>2014-08-17 16:00:09 -0300
committerBastien Nocera <hadess@hadess.net>2014-11-27 14:05:24 +0100
commit2fa07bd6d6d6b4f918d15cbe563bcf2fd29b5f94 (patch)
tree562ad9bf14a14629fe62bd5265377f08bd391ace
parent9cee9ffd2de288ef3081c01a10344f309174953e (diff)
downloadgrilo-2fa07bd6d6d6b4f918d15cbe563bcf2fd29b5f94.tar.gz
core: add GRL_METADATA_KEY_MB_ARTIST_ID
MusicBrainz artist identifier. https://bugzilla.gnome.org/show_bug.cgi?id=732878
-rw-r--r--bindings/vala/grilo-0.2-custom.vala2
-rw-r--r--doc/grilo/grilo-sections.txt5
-rw-r--r--src/data/grl-media-audio.c70
-rw-r--r--src/data/grl-media-audio.h8
-rw-r--r--src/grl-metadata-key.c12
-rw-r--r--src/grl-metadata-key.h1
6 files changed, 98 insertions, 0 deletions
diff --git a/bindings/vala/grilo-0.2-custom.vala b/bindings/vala/grilo-0.2-custom.vala
index bf8ef82..dea3824 100644
--- a/bindings/vala/grilo-0.2-custom.vala
+++ b/bindings/vala/grilo-0.2-custom.vala
@@ -116,6 +116,8 @@ namespace Grl {
public static Grl.KeyID MB_ALBUM_ID;
[CCode (cname ="GRL_METADATA_KEY_MB_TRACK_ID")]
public static Grl.KeyID MB_TRACK_ID;
+ [CCode (cname ="GRL_METADATA_KEY_MB_ARTIST_ID")]
+ public static Grl.KeyID MB_ARTIST_ID;
public static unowned GLib.List list_new (Grl.KeyID p, ...);
}
diff --git a/doc/grilo/grilo-sections.txt b/doc/grilo/grilo-sections.txt
index 1586961..7fb71a3 100644
--- a/doc/grilo/grilo-sections.txt
+++ b/doc/grilo/grilo-sections.txt
@@ -549,6 +549,7 @@ grl_media_audio_new
grl_media_audio_add_artist
grl_media_audio_add_genre
grl_media_audio_add_lyrics
+grl_media_audio_add_mb_artist_id
grl_media_audio_add_url_data
grl_media_audio_get_album
grl_media_audio_get_artist
@@ -559,6 +560,8 @@ grl_media_audio_get_genre_nth
grl_media_audio_get_lyrics
grl_media_audio_get_lyrics_nth
grl_media_audio_get_mb_album_id
+grl_media_audio_get_mb_artist_id
+grl_media_audio_get_mb_artist_id_nth
grl_media_audio_get_mb_track_id
grl_media_audio_get_track_number
grl_media_audio_get_url_data
@@ -569,6 +572,7 @@ grl_media_audio_set_bitrate
grl_media_audio_set_genre
grl_media_audio_set_lyrics
grl_media_audio_set_mb_album_id
+grl_media_audio_set_mb_artist_id
grl_media_audio_set_mb_track_id
grl_media_audio_set_track_number
grl_media_audio_set_url_data
@@ -656,6 +660,7 @@ GRL_METADATA_KEY_LAST_POSITION
GRL_METADATA_KEY_LICENSE
GRL_METADATA_KEY_LYRICS
GRL_METADATA_KEY_MB_ALBUM_ID
+GRL_METADATA_KEY_MB_ARTIST_ID
GRL_METADATA_KEY_MB_TRACK_ID
GRL_METADATA_KEY_MIME
GRL_METADATA_KEY_MODIFICATION_DATE
diff --git a/src/data/grl-media-audio.c b/src/data/grl-media-audio.c
index 40a967a..3f4ab4f 100644
--- a/src/data/grl-media-audio.c
+++ b/src/data/grl-media-audio.c
@@ -160,6 +160,21 @@ grl_media_audio_set_mb_album_id (GrlMediaAudio *audio, const gchar *mb_album_id)
}
/**
+ * grl_media_audio_set_mb_artist_id:
+ * @audio: the media instance
+ * @mb_artist_id: the MusicBrainz artist identifier
+ *
+ * Set the MusicBrainz artist identifier of the audio
+ */
+void
+grl_media_audio_set_mb_artist_id (GrlMediaAudio *audio, const gchar *mb_artist_id)
+{
+ g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio));
+ grl_data_set_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_ARTIST_ID,
+ mb_artist_id);
+}
+
+/**
* grl_media_audio_set_mb_track_id:
* @audio: the media instance
* @mb_track_id: the MusicBrainz track identifier
@@ -285,6 +300,22 @@ grl_media_audio_add_lyrics (GrlMediaAudio *audio, const gchar *lyrics)
}
/**
+ * grl_media_audio_add_mb_artist_id:
+ * @audio: the media instance
+ * @mb_artist_id: a MusicBrainz artist identifier
+ *
+ * Adds a new MusicBrainz artist id to @audio.
+ **/
+void
+grl_media_audio_add_mb_artist_id (GrlMediaAudio *audio,
+ const gchar *mb_artist_id)
+{
+ g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio));
+ grl_data_add_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_ARTIST_ID,
+ mb_artist_id);
+}
+
+/**
* grl_media_audio_add_url_data:
* @audio: the media instance
* @url: an audio's url
@@ -468,6 +499,45 @@ grl_media_audio_get_mb_album_id (GrlMediaAudio *audio)
}
/**
+ * grl_media_audio_get_mb_artist_id:
+ * @audio: the media instance
+ *
+ * Returns: the MusicBrainz artist identifier
+ */
+const gchar *
+grl_media_audio_get_mb_artist_id (GrlMediaAudio *audio)
+{
+ g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio));
+ return grl_data_get_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_ARTIST_ID);
+}
+
+/**
+ * grl_media_audio_get_mb_artist_id_nth:
+ * @audio: the media instance
+ * @index: element to retrieve, starting at 0
+ *
+ * Returns: the n-th MusicBrainz artist identifier of the audio
+ */
+const gchar *
+grl_media_audio_get_mb_artist_id_nth (GrlMediaAudio *audio, guint index)
+{
+ GrlRelatedKeys *relkeys;
+
+ g_return_val_if_fail (GRL_IS_MEDIA_AUDIO (audio), NULL);
+
+ relkeys =
+ grl_data_get_related_keys (GRL_DATA (audio),
+ GRL_METADATA_KEY_MB_ARTIST_ID,
+ index);
+
+ if (!relkeys) {
+ return NULL;
+ } else {
+ return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_MB_ARTIST_ID);
+ }
+}
+
+/**
* grl_media_audio_get_mb_track_id:
* @audio: the media instance
*
diff --git a/src/data/grl-media-audio.h b/src/data/grl-media-audio.h
index 442ce76..a52b90e 100644
--- a/src/data/grl-media-audio.h
+++ b/src/data/grl-media-audio.h
@@ -95,6 +95,8 @@ void grl_media_audio_set_lyrics (GrlMediaAudio *audio, const gchar *lyrics);
void grl_media_audio_set_mb_album_id (GrlMediaAudio *audio, const gchar *mb_album_id);
+void grl_media_audio_set_mb_artist_id (GrlMediaAudio *audio, const gchar *mb_artist_id);
+
void grl_media_audio_set_mb_track_id (GrlMediaAudio *audio, const gchar *mb_track_id);
void grl_media_audio_set_bitrate (GrlMediaAudio *audio, gint bitrate);
@@ -109,6 +111,8 @@ void grl_media_audio_add_genre (GrlMediaAudio *audio, const gchar *genre);
void grl_media_audio_add_lyrics (GrlMediaAudio *audio, const gchar *lyrics);
+void grl_media_audio_add_mb_artist_id (GrlMediaAudio *audio, const gchar *mb_artist_id);
+
void grl_media_audio_add_url_data (GrlMediaAudio *audio, const gchar *url, const gchar *mime, gint bitrate);
const gchar *grl_media_audio_get_artist (GrlMediaAudio *audio);
@@ -127,6 +131,10 @@ const gchar *grl_media_audio_get_lyrics_nth (GrlMediaAudio *audio, guint index);
const gchar *grl_media_audio_get_mb_album_id (GrlMediaAudio *audio);
+const gchar *grl_media_audio_get_mb_artist_id (GrlMediaAudio *audio);
+
+const gchar *grl_media_audio_get_mb_artist_id_nth (GrlMediaAudio *audio, guint index);
+
const gchar *grl_media_audio_get_mb_track_id (GrlMediaAudio *audio);
gint grl_media_audio_get_bitrate (GrlMediaAudio *audio);
diff --git a/src/grl-metadata-key.c b/src/grl-metadata-key.c
index 6d36892..4edf85f 100644
--- a/src/grl-metadata-key.c
+++ b/src/grl-metadata-key.c
@@ -548,11 +548,23 @@ grl_metadata_key_setup_system_keys (GrlRegistry *registry)
GRL_METADATA_KEY_MB_TRACK_ID,
NULL);
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("mb-artist-id",
+ "MusicBrainz Artist Id",
+ "Artist identifier in MusicBrainz",
+ NULL,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_MB_ARTIST_ID,
+ NULL);
+
/* Create the relations */
grl_registry_register_metadata_key_relation (registry,
GRL_METADATA_KEY_TITLE,
GRL_METADATA_KEY_TITLE_FROM_FILENAME);
grl_registry_register_metadata_key_relation (registry,
+ GRL_METADATA_KEY_ARTIST,
+ GRL_METADATA_KEY_MB_ARTIST_ID);
+ grl_registry_register_metadata_key_relation (registry,
GRL_METADATA_KEY_URL,
GRL_METADATA_KEY_MIME);
grl_registry_register_metadata_key_relation (registry,
diff --git a/src/grl-metadata-key.h b/src/grl-metadata-key.h
index 464099e..e66db45 100644
--- a/src/grl-metadata-key.h
+++ b/src/grl-metadata-key.h
@@ -100,6 +100,7 @@ typedef guint32 GrlKeyID;
#define GRL_METADATA_KEY_TITLE_FROM_FILENAME 51
#define GRL_METADATA_KEY_MB_ALBUM_ID 52
#define GRL_METADATA_KEY_MB_TRACK_ID 53
+#define GRL_METADATA_KEY_MB_ARTIST_ID 54
G_BEGIN_DECLS