diff options
author | Victor Toso <me@victortoso.com> | 2014-08-17 16:00:09 -0300 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2014-11-27 14:05:24 +0100 |
commit | 2fa07bd6d6d6b4f918d15cbe563bcf2fd29b5f94 (patch) | |
tree | 562ad9bf14a14629fe62bd5265377f08bd391ace | |
parent | 9cee9ffd2de288ef3081c01a10344f309174953e (diff) | |
download | grilo-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.vala | 2 | ||||
-rw-r--r-- | doc/grilo/grilo-sections.txt | 5 | ||||
-rw-r--r-- | src/data/grl-media-audio.c | 70 | ||||
-rw-r--r-- | src/data/grl-media-audio.h | 8 | ||||
-rw-r--r-- | src/grl-metadata-key.c | 12 | ||||
-rw-r--r-- | src/grl-metadata-key.h | 1 |
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 |