[tracker] tracker-extract-mp3.c: Retrieve nmm:trackNumber.
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] tracker-extract-mp3.c: Retrieve nmm:trackNumber.
- Date: Wed, 28 Oct 2009 16:42:52 +0000 (UTC)
commit d63046f079050d2e06c51c4e5a185c160dcd7b8e
Author: Carlos Garnacho <carlos lanedo com>
Date: Wed Oct 28 16:02:23 2009 +0100
tracker-extract-mp3.c: Retrieve nmm:trackNumber.
Also, track number is dealt everywhere as a integer, so no strings are leaked.
src/tracker-extract/tracker-extract-mp3.c | 23 ++++++++++++++++++++---
1 files changed, 20 insertions(+), 3 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
index f186f1c..868591f 100644
--- a/src/tracker-extract/tracker-extract-mp3.c
+++ b/src/tracker-extract/tracker-extract-mp3.c
@@ -90,9 +90,9 @@ typedef struct {
gchar *album;
gchar *year;
gchar *comment;
- gchar *trackno;
gchar *genre;
gchar *encoding;
+ gint track_number;
} id3tag;
typedef struct {
@@ -131,6 +131,8 @@ typedef struct {
gchar *publisher;
gchar *comment;
+ gint track_number;
+
unsigned char *albumartdata;
size_t albumartsize;
gchar *albumartmime;
@@ -736,14 +738,14 @@ get_id3 (const gchar *data,
if (pos[28] != 0) {
id3->comment = g_convert (pos, 30, "UTF-8", encoding, NULL, NULL, NULL);
- id3->trackno = NULL;
+ id3->track_number = 0;
} else {
gchar buf[5];
id3->comment = g_convert (pos, 28, "UTF-8", encoding, NULL, NULL, NULL);
snprintf (buf, 5, "%d", pos[29]);
- id3->trackno = g_strdup (buf);
+ id3->track_number = atoi (buf);
}
pos += 30;
@@ -1952,6 +1954,16 @@ extract_mp3 (const gchar *uri,
filedata.id3v22_info.comment,
filedata.id3v1_info.comment);
+ if (filedata.id3v24_info.track_number != 0) {
+ filedata.track_number = filedata.id3v24_info.track_number;
+ } else if (filedata.id3v23_info.track_number != 0) {
+ filedata.track_number = filedata.id3v23_info.track_number;
+ } else if (filedata.id3v22_info.track_number != 0) {
+ filedata.track_number = filedata.id3v22_info.track_number;
+ } else if (filedata.id3v1_info.track_number != 0) {
+ filedata.track_number = filedata.id3v1_info.track_number;
+ }
+
if (!tracker_is_blank_string (filedata.performer)) {
filedata.performer_uri = tracker_uri_printf_escaped ("urn:artist:%s", filedata.performer);
tracker_sparql_builder_subject_iri (metadata, filedata.performer_uri);
@@ -2036,6 +2048,11 @@ extract_mp3 (const gchar *uri,
}
g_free (filedata.publisher);
+ if (filedata.track_number > 0) {
+ tracker_sparql_builder_predicate (metadata, "nmm:trackNumber");
+ tracker_sparql_builder_object_int64 (metadata, filedata.track_number);
+ }
+
/* Get mp3 stream info */
mp3_parse (buffer, buffer_size, audio_offset, uri, metadata, &filedata);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]