diff options
author | Juan A. Suarez Romero <jasuarez@igalia.com> | 2015-12-15 17:35:06 +0100 |
---|---|---|
committer | Juan A. Suarez Romero <jasuarez@igalia.com> | 2015-12-16 13:52:54 +0100 |
commit | 53e9029b3bf7fb65123f060d1782aca698827920 (patch) | |
tree | 7306b0fbd48bee38335eaa46d4a8573ade990890 | |
parent | 900a3ab4ad7c93aecc5b10ba7722b026bb65d88a (diff) |
core: merge GrlMediaAudio into GrlMedia
Get rid of GrlMediaAudio and use instead GrlMedia.
https://bugzilla.gnome.org/show_bug.cgi?id=755551
-rw-r--r-- | bindings/vala/grilo-0.3.vapi | 77 | ||||
-rw-r--r-- | libs/pls/grl-pls.c | 9 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/data/grl-media-audio.c | 680 | ||||
-rw-r--r-- | src/data/grl-media-audio.h | 158 | ||||
-rw-r--r-- | src/data/grl-media.c | 524 | ||||
-rw-r--r-- | src/data/grl-media.h | 71 | ||||
-rw-r--r-- | src/grilo.c | 1 | ||||
-rw-r--r-- | src/grilo.h | 1 | ||||
-rw-r--r-- | tools/grilo-test-ui/main.c | 4 |
10 files changed, 619 insertions, 908 deletions
diff --git a/bindings/vala/grilo-0.3.vapi b/bindings/vala/grilo-0.3.vapi index 6c9f012..2b1939d 100644 --- a/bindings/vala/grilo-0.3.vapi +++ b/bindings/vala/grilo-0.3.vapi @@ -102,16 +102,26 @@ namespace Grl { public class Media : Grl.Data { [CCode (has_construct_function = false)] public Media (); + public void add_artist (string artist); public void add_author (string author); public void add_external_player (string player); public void add_external_url (string url); + public void add_genre (string genre); public void add_keyword (string keyword); + public void add_lyrics (string lyrics); + public void add_mb_artist_id (string mb_artist_id); public void add_region_data (string region, GLib.DateTime publication_date, string certificate); public void add_thumbnail (string thumbnail); public void add_thumbnail_binary (uint8 thumbnail, size_t size); - public void add_url_data (string url, string mime); + public void add_url_data (string url, string mime, int bitrate); + [CCode (cname = "grl_media_audio_new", has_construct_function = false)] + public Media.audio_new (); + public unowned string get_album (); + public unowned string get_artist (); + public unowned string get_artist_nth (uint index); public unowned string get_author (); public unowned string get_author_nth (uint index); + public int get_bitrate (); public unowned string get_certificate (); public unowned GLib.DateTime get_creation_date (); public unowned string get_description (); @@ -119,12 +129,22 @@ namespace Grl { public unowned string get_external_url (); public unowned string get_external_url_nth (uint index); public bool get_favourite (); + public unowned string get_genre (); + public unowned string get_genre_nth (uint index); public unowned string get_id (); public unowned string get_keyword (); public unowned string get_keyword_nth (uint index); public GLib.DateTime get_last_played (); public int get_last_position (); public unowned string get_license (); + public unowned string get_lyrics (); + public unowned string get_lyrics_nth (uint index); + public unowned string get_mb_album_id (); + public unowned string get_mb_artist_id (); + public unowned string get_mb_artist_id_nth (uint index); + public unowned string get_mb_recording_id (); + public unowned string get_mb_track_id (); + public Grl.MediaType get_media_type (); public unowned string get_mime (); public unowned GLib.DateTime get_modification_date (); public int get_play_count (); @@ -145,11 +165,16 @@ namespace Grl { public uint8 get_thumbnail_binary_nth (size_t size, uint index); public unowned string get_thumbnail_nth (uint index); public unowned string get_title (); + public int get_track_number (); public unowned string get_url (); - public unowned string get_url_data (out unowned string mime); - public unowned string get_url_data_nth (uint index, out unowned string mime); + public unowned string get_url_data (out unowned string mime, out int bitrate); + public unowned string get_url_data_nth (uint index, out unowned string mime, out int bitrate); + public bool is_audio (); public string serialize (); + public void set_album (string album); + public void set_artist (string artist); public void set_author (string author); + public void set_bitrate (int bitrate); public void set_certificate (string certificate); public void set_creation_date (GLib.DateTime creation_date); public void set_description (string description); @@ -157,11 +182,17 @@ namespace Grl { public void set_external_player (string player); public void set_external_url (string url); public void set_favourite (bool favourite); + public void set_genre (string genre); public void set_id (string id); public void set_keyword (string keyword); public void set_last_played (GLib.DateTime last_played); public void set_last_position (int last_position); public void set_license (string license); + public void set_lyrics (string lyrics); + public void set_mb_album_id (string mb_album_id); + public void set_mb_artist_id (string mb_artist_id); + public void set_mb_recording_id (string mb_recording_id); + public void set_mb_track_id (string mb_track_id); public void set_mime (string mime); public void set_modification_date (GLib.DateTime modification_date); public void set_play_count (int play_count); @@ -176,49 +207,13 @@ namespace Grl { public void set_thumbnail (string thumbnail); public void set_thumbnail_binary (uint8 thumbnail, size_t size); public void set_title (string title); + public void set_track_number (int track_number); public void set_url (string url); - public void set_url_data (string url, string mime); + public void set_url_data (string url, string mime, int bitrate); public static Grl.Media unserialize (string serial); [NoAccessorMethod] public Grl.MediaType media_type { get; set construct; } } - [CCode (cheader_filename = "grilo.h", type_id = "grl_media_audio_get_type ()")] - public class MediaAudio : Grl.Media { - [CCode (has_construct_function = false, type = "GrlMedia*")] - public MediaAudio (); - public void add_artist (string artist); - public void add_genre (string genre); - public void add_lyrics (string lyrics); - public void add_mb_artist_id (string mb_artist_id); - public void add_url_data (string url, string mime, int bitrate); - public unowned string get_album (); - public unowned string get_artist (); - public unowned string get_artist_nth (uint index); - public int get_bitrate (); - public unowned string get_genre (); - public unowned string get_genre_nth (uint index); - public unowned string get_lyrics (); - public unowned string get_lyrics_nth (uint index); - public unowned string get_mb_album_id (); - public unowned string get_mb_artist_id (); - public unowned string get_mb_artist_id_nth (uint index); - public unowned string get_mb_recording_id (); - public unowned string get_mb_track_id (); - public int get_track_number (); - public unowned string get_url_data (out unowned string mime, out int bitrate); - public unowned string get_url_data_nth (uint index, out unowned string mime, out int bitrate); - public void set_album (string album); - public void set_artist (string artist); - public void set_bitrate (int bitrate); - public void set_genre (string genre); - public void set_lyrics (string lyrics); - public void set_mb_album_id (string mb_album_id); - public void set_mb_artist_id (string mb_artist_id); - public void set_mb_recording_id (string mb_recording_id); - public void set_mb_track_id (string mb_track_id); - public void set_track_number (int track_number); - public void set_url_data (string url, string mime, int bitrate); - } [CCode (cheader_filename = "grilo.h", type_id = "grl_media_box_get_type ()")] public class MediaBox : Grl.Media { [CCode (has_construct_function = false, type = "GrlMedia*")] diff --git a/libs/pls/grl-pls.c b/libs/pls/grl-pls.c index bf395a3..c5aba90 100644 --- a/libs/pls/grl-pls.c +++ b/libs/pls/grl-pls.c @@ -559,11 +559,10 @@ grl_media_new_from_pls_entry (const gchar *uri, if (audio_track) grl_data_set_int (GRL_DATA (media), GRL_METADATA_KEY_AUDIO_TRACK, atoi (audio_track)); - if (GRL_IS_MEDIA_AUDIO(media)) { - GrlMediaAudio *audio = GRL_MEDIA_AUDIO(media); - grl_media_audio_set_album (audio, g_hash_table_lookup (metadata, TOTEM_PL_PARSER_FIELD_ALBUM)); - grl_media_audio_set_artist (audio, g_hash_table_lookup (metadata, TOTEM_PL_PARSER_FIELD_AUTHOR)); - grl_media_audio_set_genre (audio, g_hash_table_lookup (metadata, TOTEM_PL_PARSER_FIELD_GENRE)); + if (grl_media_is_audio (media)) { + grl_media_set_album (media, g_hash_table_lookup (metadata, TOTEM_PL_PARSER_FIELD_ALBUM)); + grl_media_set_artist (media, g_hash_table_lookup (metadata, TOTEM_PL_PARSER_FIELD_AUTHOR)); + grl_media_set_genre (media, g_hash_table_lookup (metadata, TOTEM_PL_PARSER_FIELD_GENRE)); } return media; diff --git a/src/Makefile.am b/src/Makefile.am index c9d5e72..9c6b792 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -72,7 +72,6 @@ data_c_sources = \ data/grl-data.c \ data/grl-related-keys.c \ data/grl-media.c \ - data/grl-media-audio.c \ data/grl-media-video.c \ data/grl-media-image.c \ data/grl-media-box.c \ @@ -105,7 +104,6 @@ data_h_headers = \ data/grl-related-keys.h \ data/grl-media.h \ data/grl-media-box.h \ - data/grl-media-audio.h \ data/grl-media-video.h \ data/grl-media-image.h \ data/grl-config.h diff --git a/src/data/grl-media-audio.c b/src/data/grl-media-audio.c deleted file mode 100644 index 449211e..0000000 --- a/src/data/grl-media-audio.c +++ /dev/null @@ -1,680 +0,0 @@ -/* - * Copyright (C) 2010, 2011 Igalia S.L. - * - * Contact: Iago Toral Quiroga <itoral@igalia.com> - * - * Authors: Juan A. Suarez Romero <jasuarez@igalia.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA - * - */ - -/** - * SECTION:grl-media-audio - * @short_description: A multimedia data for audio - * @see_also: #GrlConfig, #GrlMediaBox, #GrlMediaVideo, #GrlMediaImage - * - * This high level class represents an audio multimedia item. It has methods to - * set and get properties like artist, album, and so on. - */ - -#include "grl-media-audio.h" - - -static void grl_media_audio_finalize (GObject *object); - -G_DEFINE_TYPE (GrlMediaAudio, grl_media_audio, GRL_TYPE_MEDIA); - -static void -grl_media_audio_class_init (GrlMediaAudioClass *klass) -{ - GObjectClass *gobject_class = (GObjectClass *)klass; - - gobject_class->finalize = grl_media_audio_finalize; -} - -static void -grl_media_audio_init (GrlMediaAudio *self) -{ -} - -static void -grl_media_audio_finalize (GObject *object) -{ - g_signal_handlers_destroy (object); - G_OBJECT_CLASS (grl_media_audio_parent_class)->finalize (object); -} - -/** - * grl_media_audio_new: - * - * Creates a new data audio object. - * - * Returns: a newly-allocated data audio. - * - * Since: 0.1.4 - **/ -GrlMedia * -grl_media_audio_new (void) -{ - return GRL_MEDIA (g_object_new (GRL_TYPE_MEDIA_AUDIO, - NULL)); -} - -/** - * grl_media_audio_set_artist: - * @audio: the media instance - * @artist: the audio's artist - * - * Set the artist of the audio - * - * Since: 0.1.4 - */ -void -grl_media_audio_set_artist (GrlMediaAudio *audio, const gchar *artist) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_string (GRL_DATA (audio), GRL_METADATA_KEY_ARTIST, - artist); -} - -/** - * grl_media_audio_set_album: - * @audio: the media instance - * @album: the audio's album - * - * Set the album of the audio - * - * Since: 0.1.4 - */ -void -grl_media_audio_set_album (GrlMediaAudio *audio, const gchar *album) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_string (GRL_DATA (audio), GRL_METADATA_KEY_ALBUM, - album); -} - -/** - * grl_media_audio_set_genre: - * @audio: the media instance - * @genre: the audio's genre - * - * Set the genre of the audio - * - * Since: 0.1.4 - */ -void -grl_media_audio_set_genre (GrlMediaAudio *audio, const gchar *genre) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_string (GRL_DATA (audio), GRL_METADATA_KEY_GENRE, - genre); -} - -/** - * grl_media_audio_set_lyrics: - * @audio: the media instance - * @lyrics: the audio's lyrics - * - * Set the lyrics of the audio - * - * Since: 0.1.4 - */ -void -grl_media_audio_set_lyrics (GrlMediaAudio *audio, const gchar *lyrics) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_string (GRL_DATA (audio), GRL_METADATA_KEY_LYRICS, - lyrics); -} - -/** - * grl_media_audio_set_mb_album_id: - * @audio: the media instance - * @mb_album_id: the MusicBrainz album identifier - * - * Set the MusicBrainz album identifier of the audio - * - * Since: 0.2.11 - */ -void -grl_media_audio_set_mb_album_id (GrlMediaAudio *audio, const gchar *mb_album_id) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_ALBUM_ID, - 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 - * - * Since: 0.2.12 - */ -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_recording_id: - * @audio: the media instance - * @mb_recording_id: the MusicBrainz recording identifier - * - * Set the MusicBrainz recording identifier of the audio - * - * Since: 0.2.12 - */ -void -grl_media_audio_set_mb_recording_id (GrlMediaAudio *audio, - const gchar *mb_recording_id) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_RECORDING_ID, - mb_recording_id); -} - -/** - * grl_media_audio_set_mb_track_id: - * @audio: the media instance - * @mb_track_id: the MusicBrainz track identifier - * - * Set the MusicBrainz track identifier of the audio - * - * Since: 0.2.12 - */ -void -grl_media_audio_set_mb_track_id (GrlMediaAudio *audio, const gchar *mb_track_id) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_TRACK_ID, - mb_track_id); -} - -/** - * grl_media_audio_set_bitrate: - * @audio: the media instance - * @bitrate: the audio's bitrate - * - * Set the bitrate of the audio - * - * Since: 0.1.4 - */ -void -grl_media_audio_set_bitrate (GrlMediaAudio *audio, gint bitrate) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_int (GRL_DATA (audio), GRL_METADATA_KEY_BITRATE, - bitrate); -} - -/** - * grl_media_audio_set_track_number: - * @audio: the media instance - * @track_number: the audio's track number - * - * Set the track number of the audio - */ -void -grl_media_audio_set_track_number (GrlMediaAudio *audio, gint track_number) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_set_int (GRL_DATA (audio), GRL_METADATA_KEY_TRACK_NUMBER, - track_number); -} - -/** - * grl_media_audio_set_url_data: - * @audio: the media instance - * @url: the audio's url - * @mime: the @url mime-type - * @bitrate: the @url bitrate, or -1 to ignore - * - * Sets all the keys related with the URL of an audio resource in one go. - * - * Since: 0.1.10 - **/ -void -grl_media_audio_set_url_data (GrlMediaAudio *audio, - const gchar *url, - const gchar *mime, - gint bitrate) -{ - GrlRelatedKeys *relkeys; - - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - - relkeys = grl_related_keys_new (); - grl_related_keys_set_string (relkeys, GRL_METADATA_KEY_URL, url); - grl_related_keys_set_string (relkeys, GRL_METADATA_KEY_MIME, mime); - if (bitrate >= 0) { - grl_related_keys_set_int (relkeys, GRL_METADATA_KEY_BITRATE, bitrate); - } - grl_data_set_related_keys (GRL_DATA (audio), relkeys, 0); -} - -/** - * grl_media_audio_add_artist: - * @audio: the media instance - * @artist: an audio's artist - * - * Adds a new artist to @audio. - * - * Since: 0.1.10 - **/ -void -grl_media_audio_add_artist (GrlMediaAudio *audio, const gchar *artist) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_add_string (GRL_DATA (audio), GRL_METADATA_KEY_ARTIST, artist); -} - -/** - * grl_media_audio_add_genre: - * @audio: the media instance - * @genre: an audio's genre - * - * Adds a new genre to @audio. - * - * Since: 0.1.10 - **/ -void -grl_media_audio_add_genre (GrlMediaAudio *audio, const gchar *genre) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_add_string (GRL_DATA (audio), GRL_METADATA_KEY_GENRE, genre); -} - -/** - * grl_media_audio_add_lyrics: - * @audio: the media instance - * @lyrics: an audio's lyrics - * - * Adds a new lyrics to @audio. - * - * Since: 0.1.10 - **/ -void -grl_media_audio_add_lyrics (GrlMediaAudio *audio, const gchar *lyrics) -{ - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - grl_data_add_string (GRL_DATA (audio), GRL_METADATA_KEY_LYRICS, 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. - * - * Since: 0.2.12 - **/ -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 - * @mime: the @url mime-type - * @bitrate: the @url bitrate, or -1 to ignore - * - * Sets all the keys related with the URL of a media resource and adds it to - * @audio (useful for resources with more than one URL). - * - * Since: 0.1.10 - **/ -void -grl_media_audio_add_url_data (GrlMediaAudio *audio, - const gchar *url, - const gchar *mime, - gint bitrate) -{ - GrlRelatedKeys *relkeys; - - g_return_if_fail (GRL_IS_MEDIA_AUDIO (audio)); - - relkeys = grl_related_keys_new (); - grl_related_keys_set_string (relkeys, GRL_METADATA_KEY_URL, url); - grl_related_keys_set_string (relkeys, GRL_METADATA_KEY_MIME, mime); - if (bitrate >= 0) { - grl_related_keys_set_int (relkeys, GRL_METADATA_KEY_BITRATE, bitrate); - } - grl_data_add_related_keys (GRL_DATA (audio), relkeys); -} - -/** - * grl_media_audio_get_artist: - * @audio: the media instance - * - * Returns: the artist of the audio - * - * Since: 0.1.4 - */ -const gchar * -grl_media_audio_get_artist (GrlMediaAudio *audio) -{ - return grl_data_get_string (GRL_DATA (audio), GRL_METADATA_KEY_ARTIST); -} - -/** - * grl_media_audio_get_artist_nth: - * @audio: the media instance - * @index: element to retrieve, starting at 0 - * - * Returns: the n-th artist of the audio - * - * Since: 0.1.10 - */ -const gchar * -grl_media_audio_get_artist_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_ARTIST, - index); - - if (!relkeys) { - return NULL; - } else { - return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_ARTIST); - } -} - -/** - * grl_media_audio_get_album: - * @audio: the media instance - * - * Returns: the album of the audio - * - * Since: 0.1.4 - */ -const gchar * -grl_media_audio_get_album (GrlMediaAudio *audio) -{ - return grl_data_get_string (GRL_DATA (audio), GRL_METADATA_KEY_ALBUM); -} - -/** - * grl_media_audio_get_genre: - * @audio: the media instance - * - * Returns: the genre of the audio - * - * Since: 0.1.4 - */ -const gchar * -grl_media_audio_get_genre (GrlMediaAudio *audio) -{ - return grl_data_get_string (GRL_DATA (audio), GRL_METADATA_KEY_GENRE); -} - -/** - * grl_media_audio_get_genre_nth: - * @audio: the media instance - * @index: element to retrieve, starting at 0 - * - * Returns: the n-th genre of the audio - * - * Since: 0.1.10 - */ -const gchar * -grl_media_audio_get_genre_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_GENRE, index); - - if (!relkeys) { - return NULL; - } else { - return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_GENRE); - } -} - -/** - * grl_media_audio_get_lyrics: - * @audio: the media instance - * - * Returns: the lyrics of the audio - * - * Since: 0.1.4 - */ -const gchar * -grl_media_audio_get_lyrics (GrlMediaAudio *audio) -{ - return grl_data_get_string (GRL_DATA (audio), GRL_METADATA_KEY_LYRICS); -} - -/** - * grl_media_audio_get_lyrics_nth: - * @audio: the media instance - * @index: element to retrieve, starting at 0 - * - * Returns: the n-th lyrics of the audio - * - * Since: 0.1.10 - */ -const gchar * -grl_media_audio_get_lyrics_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_LYRICS, - index); - - if (!relkeys) { - return NULL; - } else { - return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_LYRICS); - } -} - -/** - * grl_media_audio_get_mb_album_id: - * @audio: the media instance - * - * Returns: the MusicBrainz album identifier - * - * Since: 0.2.11 - */ -const gchar * -grl_media_audio_get_mb_album_id (GrlMediaAudio *audio) -{ - return grl_data_get_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_ALBUM_ID); -} - -/** - * grl_media_audio_get_mb_artist_id: - * @audio: the media instance - * - * Returns: the MusicBrainz artist identifier - * - * Since: 0.2.12 - */ -const gchar * -grl_media_audio_get_mb_artist_id (GrlMediaAudio *audio) -{ - g_return_val_if_fail (GRL_IS_MEDIA_AUDIO (audio), NULL); - 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 - * - * Since: 0.2.12 - */ -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_recording_id: - * @audio: the media instance - * - * Returns: the MusicBrainz recording identifier - * - * Since: 0.2.12 - */ -const gchar * -grl_media_audio_get_mb_recording_id (GrlMediaAudio *audio) -{ - g_return_val_if_fail (GRL_IS_MEDIA_AUDIO (audio), NULL); - return grl_data_get_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_RECORDING_ID); -} - -/** - * grl_media_audio_get_mb_track_id: - * @audio: the media instance - * - * Returns: the MusicBrainz track identifier - * Since: 0.2.12 - */ -const gchar * -grl_media_audio_get_mb_track_id (GrlMediaAudio *audio) -{ - g_return_val_if_fail (GRL_IS_MEDIA_AUDIO (audio), NULL); - return grl_data_get_string (GRL_DATA (audio), GRL_METADATA_KEY_MB_TRACK_ID); -} - -/** - * grl_media_audio_get_bitrate: - * @audio: the media instance - * - * Returns: the bitrate of the audio - * - * Since: 0.1.4 - */ -gint -grl_media_audio_get_bitrate (GrlMediaAudio *audio) -{ - return grl_data_get_int (GRL_DATA (audio), GRL_METADATA_KEY_BITRATE); -} - -/** - * grl_media_audio_get_track_number: - * @audio: the media instance - * - * Returns: the track number of the audio - */ -gint -grl_media_audio_get_track_number (GrlMediaAudio *audio) -{ - return grl_data_get_int (GRL_DATA (audio), GRL_METADATA_KEY_TRACK_NUMBER); -} - -/** - * grl_media_audio_get_url_data: - * @audio: the media instance - * @mime: (out) (transfer none): the url mime-type, or %NULL to ignore - * @bitrate: (out): the url bitrate, or %NULL to ignore - * - * Returns: all the keys related with the URL of an audio resource in one go. - * - * Since: 0.1.10 - */ -const gchar * -grl_media_audio_get_url_data (GrlMediaAudio *audio, - gchar **mime, - gint *bitrate) -{ - return grl_media_audio_get_url_data_nth (audio, 0, mime, bitrate); -} - -/** - * grl_media_audio_get_url_data_nth: - * @audio: the media instance - * @index: element to retrieve, starting at 0 - * @mime: (out) (transfer none): the url mime-type, or %NULL to ignore - * @bitrate: (out): the url bitrate, or %NULL to ignore - * - * Returns: all the keys related with the URL number @index of an audio resource - * in one go. - * - * Since: 0.1.10 - */ -const gchar * -grl_media_audio_get_url_data_nth (GrlMediaAudio *audio, - guint index, - gchar **mime, - gint *bitrate) -{ - 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_URL, index); - - if (!relkeys) { - return NULL; - } - - if (mime) { - *mime = (gchar *) grl_related_keys_get_string (relkeys, - GRL_METADATA_KEY_MIME); - } - - if (bitrate) { - *bitrate = grl_related_keys_get_int (relkeys, GRL_METADATA_KEY_BITRATE); - } - - return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_URL); -} diff --git a/src/data/grl-media-audio.h b/src/data/grl-media-audio.h deleted file mode 100644 index 2259f39..0000000 --- a/src/data/grl-media-audio.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (C) 2010, 2011 Igalia S.L. - * - * Contact: Iago Toral Quiroga <itoral@igalia.com> - * - * Authors: Juan A. Suarez Romero <jasuarez@igalia.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA - * - */ - -#if !defined (_GRILO_H_INSIDE_) && !defined (GRILO_COMPILATION) -#error "Only <grilo.h> can be included directly." -#endif - -#ifndef _GRL_MEDIA_AUDIO_H_ -#define _GRL_MEDIA_AUDIO_H_ - -#include <grl-media.h> -#include <grl-definitions.h> - -G_BEGIN_DECLS - -#define GRL_TYPE_MEDIA_AUDIO \ - (grl_media_audio_get_type()) - -#define GRL_MEDIA_AUDIO(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GRL_TYPE_MEDIA_AUDIO, \ - GrlMediaAudio)) - -#define GRL_MEDIA_AUDIO_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - GRL_TYPE_MEDIA_AUDIO, \ - GrlMediaAudioClass)) - -#define GRL_IS_MEDIA_AUDIO(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GRL_TYPE_MEDIA_AUDIO)) - -#define GRL_IS_MEDIA_AUDIO_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - GRL_TYPE_MEDIA_AUDIO)) - -#define GRL_MEDIA_AUDIO_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GRL_TYPE_MEDIA_AUDIO, \ - GrlMediaAudioClass)) - -typedef struct _GrlMediaAudio GrlMediaAudio; -typedef struct _GrlMediaAudioClass GrlMediaAudioClass; - -struct _GrlMediaAudio -{ - GrlMedia parent; - - /*< private >*/ - gpointer _grl_reserved[GRL_PADDING_SMALL]; -}; - -/** - * GrlMediaAudioClass: - * @parent_class: the parent class structure - * - * Grilo Media audio Class - */ -struct _GrlMediaAudioClass -{ - GrlMediaClass parent_class; - - /*< private >*/ - gpointer _grl_reserved[GRL_PADDING]; -}; - -void grl_media_audio_set_artist (GrlMediaAudio *audio, const gchar *artist); - -void grl_media_audio_set_album (GrlMediaAudio *audio, const gchar *album); - -void grl_media_audio_set_genre (GrlMediaAudio *audio, const gchar *genre); - -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_recording_id (GrlMediaAudio *audio, const gchar *mb_recording_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); - -void grl_media_audio_set_track_number (GrlMediaAudio *audio, gint track_number); - -void grl_media_audio_set_url_data (GrlMediaAudio *audio, const gchar *url, const gchar *mime, gint bitrate); - -void grl_media_audio_add_artist (GrlMediaAudio *audio, const gchar *artist); - -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); - -const gchar *grl_media_audio_get_artist_nth (GrlMediaAudio *audio, guint index); - -const gchar *grl_media_audio_get_album (GrlMediaAudio *audio); - -const gchar *grl_media_audio_get_genre (GrlMediaAudio *audio); - -const gchar *grl_media_audio_get_genre_nth (GrlMediaAudio *audio, guint index); - -const gchar *grl_media_audio_get_lyrics (GrlMediaAudio *audio); - -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_recording_id (GrlMediaAudio *audio); - -const gchar *grl_media_audio_get_mb_track_id (GrlMediaAudio *audio); - -gint grl_media_audio_get_bitrate (GrlMediaAudio *audio); - -gint grl_media_audio_get_track_number (GrlMediaAudio *audio); - -const gchar *grl_media_audio_get_url_data (GrlMediaAudio *audio, gchar **mime, gint *bitrate); - -const gchar *grl_media_audio_get_url_data_nth (GrlMediaAudio *audio, guint index, gchar **mime, gint *bitrate); - -GType grl_media_audio_get_type (void) G_GNUC_CONST; - -GrlMedia *grl_media_audio_new (void); - -G_END_DECLS - -#endif /* _GRL_MEDIA_AUDIO_H_ */ diff --git a/src/data/grl-media.c b/src/data/grl-media.c index ed37ea7..51dfc85 100644 --- a/src/data/grl-media.c +++ b/src/data/grl-media.c @@ -149,15 +149,38 @@ grl_media_finalize (GObject *object) * Creates a new data media object. * * Returns: a newly-allocated data media. - * - * Since: 0.1.4 **/ GrlMedia * grl_media_new (void) { return g_object_new (GRL_TYPE_MEDIA, "media-type", GRL_MEDIA_TYPE_UNKNOWN, - NULL); + NULL); +} + +/** + * grl_media_audio_new: + * + * Creates a new media audio object. + * + * Returns: a newly-allocated media audio. + * + * Since: 0.1.4 + **/ +GrlMedia * +grl_media_audio_new (void) +{ + return g_object_new (GRL_TYPE_MEDIA, + "media-type", GRL_MEDIA_TYPE_AUDIO, + NULL); +} + +gboolean +grl_media_is_audio (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), FALSE); + + return (media->priv->media_type == GRL_MEDIA_TYPE_AUDIO); } /** @@ -189,13 +212,15 @@ grl_media_set_rating (GrlMedia *media, gfloat rating, gfloat max) * @media: a #GrlMedia * @url: the media's URL * @mime: the @url mime type + * @bitrate: the @url bitrate, or -1 to ignore * - * Set the media's URL and its mime-type. - * - * Since: 0.1.10 + * Set the media's URL and its mime-type and bitrate. **/ void -grl_media_set_url_data (GrlMedia *media, const gchar *url, const gchar *mime) +grl_media_set_url_data (GrlMedia *media, + const gchar *url, + const gchar *mime, + gint bitrate) { GrlRelatedKeys *relkeys; @@ -204,6 +229,9 @@ grl_media_set_url_data (GrlMedia *media, const gchar *url, const gchar *mime) relkeys = grl_related_keys_new (); grl_related_keys_set_string (relkeys, GRL_METADATA_KEY_URL, url); grl_related_keys_set_string (relkeys, GRL_METADATA_KEY_MIME, mime); + if (bitrate >= 0) { + grl_related_keys_set_int (relkeys, GRL_METADATA_KEY_BITRATE, bitrate); + } grl_data_set_related_keys (GRL_DATA (media), relkeys, 0); } @@ -212,13 +240,15 @@ grl_media_set_url_data (GrlMedia *media, const gchar *url, const gchar *mime) * @media: a #GrlMedia * @url: a media's URL * @mime: th @url mime type + * @bitrate: the @url bitrate, or -1 to ignore * - * Adds a new media's URL with its mime-type. - * - * Since: 0.1.10 + * Adds a new media's URL with its mime-type and bitrate. **/ void -grl_media_add_url_data (GrlMedia *media, const gchar *url, const gchar *mime) +grl_media_add_url_data (GrlMedia *media, + const gchar *url, + const gchar *mime, + gint bitrate) { GrlRelatedKeys *relkeys; @@ -227,6 +257,9 @@ grl_media_add_url_data (GrlMedia *media, const gchar *url, const gchar *mime) relkeys = grl_related_keys_new (); grl_related_keys_set_string (relkeys, GRL_METADATA_KEY_URL, url); grl_related_keys_set_string (relkeys, GRL_METADATA_KEY_MIME, mime); + if (bitrate >= 0) { + grl_related_keys_set_int (relkeys, GRL_METADATA_KEY_BITRATE, bitrate); + } grl_data_add_related_keys (GRL_DATA (media), relkeys); } @@ -347,6 +380,64 @@ grl_media_add_keyword (GrlMedia *media, } /** + * grl_media_add_artist: + * @media: the media instance + * @artist: an audio's artist + * + * Adds a new artist to @media. + **/ +void +grl_media_add_artist (GrlMedia *media, const gchar *artist) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_add_string (GRL_DATA (media), GRL_METADATA_KEY_ARTIST, artist); +} + +/** + * grl_media_add_genre: + * @media: the media instance + * @genre: an audio's genre + * + * Adds a new genre to @media. + **/ +void +grl_media_add_genre (GrlMedia *media, const gchar *genre) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_add_string (GRL_DATA (media), GRL_METADATA_KEY_GENRE, genre); +} + +/** + * grl_media_add_lyrics: + * @media: the media instance + * @lyrics: an audio's lyrics + * + * Adds a new lyrics to @media. + **/ +void +grl_media_add_lyrics (GrlMedia *media, const gchar *lyrics) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_add_string (GRL_DATA (media), GRL_METADATA_KEY_LYRICS, lyrics); +} + +/** + * grl_media_add_mb_artist_id: + * @media: the media instance + * @mb_artist_id: a MusicBrainz artist identifier + * + * Adds a new MusicBrainz artist id to @media. + **/ +void +grl_media_add_mb_artist_id (GrlMedia *media, + const gchar *mb_artist_id) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_add_string (GRL_DATA (media), GRL_METADATA_KEY_MB_ARTIST_ID, + mb_artist_id); +} + +/** * grl_media_serialize: * @media: a #GrlMedia * @@ -1296,6 +1387,159 @@ grl_media_set_size (GrlMedia *media, gint64 size) } /** + * grl_media_set_track_number: + * @media: the media instance + * @track_number: the audio's track number + * + * Set the track number of the media + */ +void +grl_media_set_track_number (GrlMedia *media, gint track_number) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_int (GRL_DATA (media), GRL_METADATA_KEY_TRACK_NUMBER, + track_number); +} + +/** + * grl_media_set_bitrate: + * @media: the media instance + * @bitrate: the audio's bitrate + * + * Set the bitrate of the media + */ +void +grl_media_set_bitrate (GrlMedia *media, gint bitrate) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_int (GRL_DATA (media), GRL_METADATA_KEY_BITRATE, + bitrate); +} + +/** + * grl_media_set_mb_track_id: + * @media: the media instance + * @mb_track_id: the MusicBrainz track identifier + * + * Set the MusicBrainz track identifier of the media + */ +void +grl_media_set_mb_track_id (GrlMedia *media, const gchar *mb_track_id) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_MB_TRACK_ID, + mb_track_id); +} + +/** + * grl_media_set_mb_recording_id: + * @media: the media instance + * @mb_recording_id: the MusicBrainz recording identifier + * + * Set the MusicBrainz recording identifier of the media + */ +void +grl_media_set_mb_recording_id (GrlMedia *media, + const gchar *mb_recording_id) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_MB_RECORDING_ID, + mb_recording_id); +} + +/** + * grl_media_set_mb_artist_id: + * @media: the media instance + * @mb_artist_id: the MusicBrainz artist identifier + * + * Set the MusicBrainz artist identifier of the media + */ +void +grl_media_set_mb_artist_id (GrlMedia *media, const gchar *mb_artist_id) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_MB_ARTIST_ID, + mb_artist_id); +} + +/** + * grl_media_set_mb_album_id: + * @media: the media instance + * @mb_album_id: the MusicBrainz album identifier + * + * Set the MusicBrainz album identifier of the media + */ +void +grl_media_set_mb_album_id (GrlMedia *media, const gchar *mb_album_id) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_MB_ALBUM_ID, + mb_album_id); +} + +/** + * grl_media_set_lyrics: + * @media: the media instance + * @lyrics: the audio's lyrics + * + * Set the lyrics of the media + */ +void +grl_media_set_lyrics (GrlMedia *media, const gchar *lyrics) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_LYRICS, + lyrics); +} + +/** + * grl_media_set_genre: + * @media: the media instance + * @genre: the audio's genre + * + * Set the genre of the media + */ +void +grl_media_set_genre (GrlMedia *media, const gchar *genre) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_GENRE, + genre); +} + +/** + * grl_media_set_album: + * @media: the media instance + * @album: the audio's album + * + * Set the album of the media + */ +void +grl_media_set_album (GrlMedia *media, const gchar *album) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_ALBUM, + album); +} + +/** + * grl_media_set_artist: + * @media: the media instance + * @artist: the audio's artist + * + * Set the artist of the media + * + * Since: 0.1.4 + */ +void +grl_media_set_artist (GrlMedia *media, const gchar *artist) +{ + g_return_if_fail (GRL_IS_MEDIA (media)); + grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_ARTIST, + artist); +} + +/** * grl_media_get_id: * @media: the media object * @@ -1331,17 +1575,20 @@ grl_media_get_url (GrlMedia *media) * grl_media_get_url_data: * @media: the media object * @mime: (out) (transfer none): the mime-type, or %NULL to ignore. + * @bitrate: (out): the url bitrate, or %NULL to ignore * * Returns: the media's URL and its mime-type. * * Since: 0.1.10 */ const gchar * -grl_media_get_url_data (GrlMedia *media, gchar **mime) +grl_media_get_url_data (GrlMedia *media, + gchar **mime, + gint *bitrate) { g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); - return grl_media_get_url_data_nth (media, 0, mime); + return grl_media_get_url_data_nth (media, 0, mime, bitrate); } /** @@ -1349,13 +1596,17 @@ grl_media_get_url_data (GrlMedia *media, gchar **mime) * @media: the media object * @index: element to retrieve * @mime: (out) (transfer none): the mime-type, or %NULL to ignore. + * @bitrate: (out): the url bitrate, or %NULL to ignore * * Returns: the n-th media's URL and its mime-type. * * Since: 0.1.10 */ const gchar * -grl_media_get_url_data_nth (GrlMedia *media, guint index, gchar **mime) +grl_media_get_url_data_nth (GrlMedia *media, + guint index, + gchar **mime, + gint *bitrate) { GrlRelatedKeys *relkeys; @@ -1372,6 +1623,10 @@ grl_media_get_url_data_nth (GrlMedia *media, guint index, gchar **mime) GRL_METADATA_KEY_MIME); } + if (bitrate) { + *bitrate = grl_related_keys_get_int (relkeys, GRL_METADATA_KEY_BITRATE); + } + return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_URL); } @@ -2070,3 +2325,244 @@ grl_media_get_size (GrlMedia *media) g_return_val_if_fail (GRL_IS_MEDIA (media), -1); return grl_data_get_int64 (GRL_DATA (media), GRL_METADATA_KEY_SIZE); } + +/** + * grl_media_get_track_number: + * @media: the media instance + * + * Returns: the track number of the media + */ +gint +grl_media_get_track_number (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), -1); + return grl_data_get_int (GRL_DATA (media), GRL_METADATA_KEY_TRACK_NUMBER); +} + +/** + * grl_media_get_bitrate: + * @media: the media instance + * + * Returns: the bitrate of the media + */ +gint +grl_media_get_bitrate (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), -1); + return grl_data_get_int (GRL_DATA (media), GRL_METADATA_KEY_BITRATE); +} + +/** + * grl_media_get_mb_album_id: + * @media: the media instance + * + * Returns: the MusicBrainz album identifier + */ +const gchar * +grl_media_get_mb_album_id (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + return grl_data_get_string (GRL_DATA (media), GRL_METADATA_KEY_MB_ALBUM_ID); +} + +/** + * grl_media_get_mb_artist_id: + * @media: the media instance + * + * Returns: the MusicBrainz artist identifier + */ +const gchar * +grl_media_get_mb_artist_id (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + return grl_data_get_string (GRL_DATA (media), GRL_METADATA_KEY_MB_ARTIST_ID); +} + +/** + * grl_media_get_mb_artist_id_nth: + * @media: the media instance + * @index: element to retrieve, starting at 0 + * + * Returns: the n-th MusicBrainz artist identifier of the media + */ +const gchar * +grl_media_get_mb_artist_id_nth (GrlMedia *media, guint index) +{ + GrlRelatedKeys *relkeys; + + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + + relkeys = + grl_data_get_related_keys (GRL_DATA (media), + 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_get_mb_recording_id: + * @media: the media instance + * + * Returns: the MusicBrainz recording identifier + */ +const gchar * +grl_media_get_mb_recording_id (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + return grl_data_get_string (GRL_DATA (media), GRL_METADATA_KEY_MB_RECORDING_ID); +} + +/** + * grl_media_get_mb_track_id: + * @media: the media instance + * + * Returns: the MusicBrainz track identifier + * Since: 0.2.12 + */ +const gchar * +grl_media_get_mb_track_id (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + return grl_data_get_string (GRL_DATA (media), GRL_METADATA_KEY_MB_TRACK_ID); +} + +/** + * grl_media_get_lyrics: + * @media: the media instance + * + * Returns: the lyrics of the media + */ +const gchar * +grl_media_get_lyrics (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + return grl_data_get_string (GRL_DATA (media), GRL_METADATA_KEY_LYRICS); +} + +/** + * grl_media_get_lyrics_nth: + * @media: the media instance + * @index: element to retrieve, starting at 0 + * + * Returns: the n-th lyrics of the media + */ +const gchar * +grl_media_get_lyrics_nth (GrlMedia *media, guint index) +{ + GrlRelatedKeys *relkeys; + + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + + relkeys = + grl_data_get_related_keys (GRL_DATA (media), + GRL_METADATA_KEY_LYRICS, + index); + + if (!relkeys) { + return NULL; + } else { + return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_LYRICS); + } +} + +/** + * grl_media_get_genre: + * @media: the media instance + * + * Returns: the genre of the media + */ +const gchar * +grl_media_get_genre (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + return grl_data_get_string (GRL_DATA (media), GRL_METADATA_KEY_GENRE); +} + +/** + * grl_media_get_genre_nth: + * @media: the media instance + * @index: element to retrieve, starting at 0 + * + * Returns: the n-th genre of the media + */ +const gchar * +grl_media_get_genre_nth (GrlMedia *media, guint index) +{ + GrlRelatedKeys *relkeys; + + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + + relkeys = + grl_data_get_related_keys (GRL_DATA (media), GRL_METADATA_KEY_GENRE, index); + + if (!relkeys) { + return NULL; + } else { + return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_GENRE); + } +} + +/** + * grl_media_get_album: + * @media: the media instance + * + * Returns: the album of the media + */ +const gchar * +grl_media_get_album (GrlMedia *media) +{ + g_return_val_if_fail (GRL_MEDIA (media), NULL); + return grl_data_get_string (GRL_DATA (media), GRL_METADATA_KEY_ALBUM); +} + +/** + * grl_media_get_artist: + * @media: the media instance + * + * Returns: the artist of the media + */ +const gchar * +grl_media_get_artist (GrlMedia *media) +{ + g_return_val_if_fail (GRL_MEDIA (media), NULL); + return grl_data_get_string (GRL_DATA (media), GRL_METADATA_KEY_ARTIST); +} + +/** + * grl_media_get_artist_nth: + * @media: the media instance + * @index: element to retrieve, starting at 0 + * + * Returns: the n-th artist of the media + */ +const gchar * +grl_media_get_artist_nth (GrlMedia *media, guint index) +{ + GrlRelatedKeys *relkeys; + + g_return_val_if_fail (GRL_IS_MEDIA (media), NULL); + + relkeys = + grl_data_get_related_keys (GRL_DATA (media), + GRL_METADATA_KEY_ARTIST, + index); + + if (!relkeys) { + return NULL; + } else { + return grl_related_keys_get_string (relkeys, GRL_METADATA_KEY_ARTIST); + } +} + +GrlMediaType +grl_media_get_media_type (GrlMedia *media) +{ + g_return_val_if_fail (GRL_IS_MEDIA (media), GRL_MEDIA_TYPE_UNKNOWN); + + return media->priv->media_type; +} diff --git a/src/data/grl-media.h b/src/data/grl-media.h index 7cc4efd..af1d311 100644 --- a/src/data/grl-media.h +++ b/src/data/grl-media.h @@ -165,7 +165,7 @@ void grl_media_set_license (GrlMedia *media, const gchar *license); void grl_media_set_rating (GrlMedia *media, gfloat rating, gfloat max); -void grl_media_set_url_data (GrlMedia *media, const gchar *url, const gchar *mime); +void grl_media_set_url_data (GrlMedia *media, const gchar *url, const gchar *mime, gint bitrate); void grl_media_set_favourite (GrlMedia *media, gboolean favourite); @@ -173,7 +173,27 @@ void grl_media_set_keyword (GrlMedia *media, const gchar *keyword); void grl_media_set_size (GrlMedia *media, gint64 size); -void grl_media_add_url_data (GrlMedia *media, const gchar *url, const gchar *mime); +void grl_media_set_track_number (GrlMedia *media, gint track_number); + +void grl_media_set_bitrate (GrlMedia *media, gint bitrate); + +void grl_media_set_mb_track_id (GrlMedia *media, const gchar *mb_track_id); + +void grl_media_set_mb_recording_id (GrlMedia *media, const gchar *mb_recording_id); + +void grl_media_set_mb_artist_id (GrlMedia *media, const gchar *mb_artist_id); + +void grl_media_set_mb_album_id (GrlMedia *media, const gchar *mb_album_id); + +void grl_media_set_lyrics (GrlMedia *media, const gchar *lyrics); + +void grl_media_set_genre (GrlMedia *media, const gchar *genre); + +void grl_media_set_album (GrlMedia *media, const gchar *album); + +void grl_media_set_artist (GrlMedia *media, const gchar *artist); + +void grl_media_add_url_data (GrlMedia *media, const gchar *url, const gchar *mime, gint bitrate); void grl_media_add_author (GrlMedia *media, const gchar *author); @@ -187,13 +207,21 @@ void grl_media_add_external_url (GrlMedia *media, const gchar *url); void grl_media_add_keyword (GrlMedia *media, const gchar *keyword); +void grl_media_add_artist (GrlMedia *media, const gchar *artist); + +void grl_media_add_genre (GrlMedia *media, const gchar *genre); + +void grl_media_add_lyrics (GrlMedia *media, const gchar *lyrics); + +void grl_media_add_mb_artist_id (GrlMedia *media, const gchar *mb_artist_id); + const gchar *grl_media_get_id (GrlMedia *media); const gchar *grl_media_get_url (GrlMedia *media); -const gchar *grl_media_get_url_data (GrlMedia *media, gchar **mime); +const gchar *grl_media_get_url_data (GrlMedia *media, gchar **mime, gint *bitrate); -const gchar *grl_media_get_url_data_nth (GrlMedia *media, guint index, gchar **mime); +const gchar *grl_media_get_url_data_nth (GrlMedia *media, guint index, gchar **mime, gint *bitrate); const gchar *grl_media_get_author (GrlMedia *media); @@ -268,10 +296,45 @@ const gchar * grl_media_get_keyword_nth (GrlMedia *media, guint index); gint64 grl_media_get_size (GrlMedia *media); +gint grl_media_get_track_number (GrlMedia *media); + +gint grl_media_get_bitrate (GrlMedia *media); + +const gchar *grl_media_get_mb_album_id (GrlMedia *media); + +const gchar *grl_media_get_mb_artist_id (GrlMedia *media); + +const gchar *grl_media_get_mb_artist_id_nth (GrlMedia *media, guint index); + +const gchar *grl_media_get_mb_recording_id (GrlMedia *media); + +const gchar *grl_media_get_mb_track_id (GrlMedia *media); + +const gchar *grl_media_get_lyrics (GrlMedia *media); + +const gchar *grl_media_get_lyrics_nth (GrlMedia *media, guint index); + +const gchar *grl_media_get_genre (GrlMedia *media); + +const gchar *grl_media_get_genre_nth (GrlMedia *media, guint index); + +const gchar *grl_media_get_album (GrlMedia *media); + +const gchar *grl_media_get_artist (GrlMedia *media); + +const gchar *grl_media_get_artist_nth (GrlMedia *media, guint index); + +GrlMediaType grl_media_get_media_type (GrlMedia *media); + GType grl_media_get_type (void) G_GNUC_CONST; GrlMedia *grl_media_new (void); +GrlMedia *grl_media_audio_new (void); + +gboolean +grl_media_is_audio (GrlMedia *media); + gchar *grl_media_serialize (GrlMedia *media); gchar *grl_media_serialize_extended (GrlMedia *media, diff --git a/src/grilo.c b/src/grilo.c index 6ae63ce..de2684d 100644 --- a/src/grilo.c +++ b/src/grilo.c @@ -110,7 +110,6 @@ post_parse_hook_cb (GOptionContext *context, /* Register GrlMedia in glib typesystem */ g_type_class_ref (GRL_TYPE_MEDIA_BOX); - g_type_class_ref (GRL_TYPE_MEDIA_AUDIO); g_type_class_ref (GRL_TYPE_MEDIA_VIDEO); g_type_class_ref (GRL_TYPE_MEDIA_IMAGE); diff --git a/src/grilo.h b/src/grilo.h index 436038b..9f93287 100644 --- a/src/grilo.h +++ b/src/grilo.h @@ -34,7 +34,6 @@ #include <grl-metadata-key.h> #include <grl-data.h> #include <grl-media.h> -#include <grl-media-audio.h> #include <grl-media-video.h> #include <grl-media-image.h> #include <grl-media-box.h> diff --git a/tools/grilo-test-ui/main.c b/tools/grilo-test-ui/main.c index 951a70a..4b82ca4 100644 --- a/tools/grilo-test-ui/main.c +++ b/tools/grilo-test-ui/main.c @@ -345,7 +345,7 @@ get_icon_for_media (GrlMedia *media) return g_themed_icon_new ("folder"); } else if (GRL_IS_MEDIA_VIDEO (media)) { return g_themed_icon_new ("gnome-mime-video"); - } else if (GRL_IS_MEDIA_AUDIO (media)) { + } else if (grl_media_is_audio (media)) { return g_themed_icon_new ("gnome-mime-audio"); } else if (GRL_IS_MEDIA_IMAGE (media)) { return g_themed_icon_new ("gnome-mime-image"); @@ -616,7 +616,7 @@ resolve_cb (GrlSource *source, when the treeview is cleared */ /* Set/unset show button */ - if ((GRL_IS_MEDIA_AUDIO (media) || + if ((grl_media_is_audio (media) || GRL_IS_MEDIA_VIDEO (media) || GRL_IS_MEDIA_IMAGE (media)) && (ui_state->last_url = grl_media_get_url (media))) { |