commit 360069bc1b11c8f4ad48af6486271192102997c9
parent 47e38234709ddf395d5f763018eabd0ab684bc24
Author: Christian Grothoff <christian@grothoff.org>
Date: Sat, 8 Mar 2008 04:47:01 +0000
update
Diffstat:
6 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -2,7 +2,7 @@ Fri Mar 7 13:29:01 EET 2008
Added disc number.
Thu Mar 6 23:11:39 MST 2008
- Added track number and ISRC for FLAC files.
+ Added track number and ISRC for FLAC/mp3/ogg files.
Wed Feb 13 10:16:55 EET 2008
Added a plugin for AppleSingle/AppleDouble files.
diff --git a/src/plugins/flacextractor.c b/src/plugins/flacextractor.c
@@ -247,8 +247,10 @@ flac_metadata(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *me
static void
flac_error(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
{
+#if 0
fprintf(stderr,
"Got error: %u\n", status);
+#endif
}
/* mimetype = audio/flac */
diff --git a/src/plugins/id3v23extractor.c b/src/plugins/id3v23extractor.c
@@ -81,6 +81,8 @@ static Matches tmap[] = {
{"TOFN", EXTRACTOR_FILENAME},
{"TOPE", EXTRACTOR_ARTIST},
{"TPUB", EXTRACTOR_PUBLISHER},
+ {"TRCK", EXTRACTOR_TRACK_NUMBER},
+ {"TRSC", EXTRACTOR_ISRC},
{"TRSN", EXTRACTOR_SOURCE},
{"TRSO", EXTRACTOR_CREATED_FOR},
{"TSRC", EXTRACTOR_RESOURCE_IDENTIFIER},
diff --git a/src/plugins/id3v24extractor.c b/src/plugins/id3v24extractor.c
@@ -84,6 +84,8 @@ static Matches tmap[] = {
{"TOFN", EXTRACTOR_FILENAME},
{"TOPE", EXTRACTOR_ARTIST},
{"TPUB", EXTRACTOR_PUBLISHER},
+ {"TRCK", EXTRACTOR_TRACK_NUMBER},
+ {"TRSC", EXTRACTOR_ISRC},
{"TRSN", EXTRACTOR_SOURCE},
{"TRSO", EXTRACTOR_CREATED_FOR},
{"TSRC", EXTRACTOR_RESOURCE_IDENTIFIER},
diff --git a/src/plugins/id3v2extractor.c b/src/plugins/id3v2extractor.c
@@ -75,7 +75,8 @@ static Matches tmap[] = {
{"TCR", EXTRACTOR_COPYRIGHT},
{"SLT", EXTRACTOR_LYRICS},
{"TOA", EXTRACTOR_ARTIST},
- {"TRC", EXTRACTOR_RESOURCE_IDENTIFIER},
+ {"TRC", EXTRACTOR_ISRC},
+ {"TRK", EXTRACTOR_TRACK_NUMBER},
{"TCM", EXTRACTOR_CREATOR},
{"TOT", EXTRACTOR_ALBUM},
{"TOL", EXTRACTOR_AUTHOR},
diff --git a/src/plugins/mp3extractor.c b/src/plugins/mp3extractor.c
@@ -44,6 +44,7 @@ typedef struct
char *year;
char *comment;
const char *genre;
+ unsigned int track_number;
} id3tag;
static const char *const genre_names[] = {
@@ -280,6 +281,16 @@ get_id3 (const char *data, size_t size, id3tag * id3)
pos += 4;
id3->comment = convertToUtf8 (pos, 30, "ISO-8859-1");
trim (id3->comment);
+ if ( (pos[28] == '\0') &&
+ (pos[29] != '\0') )
+ {
+ /* ID3v1.1 */
+ id3->track_number = pos[29];
+ }
+ else
+ {
+ id3->track_number = 0;
+ }
pos += 30;
id3->genre = "";
if (pos[0] < GENRE_NAME_COUNT)
@@ -446,6 +457,7 @@ libextractor_mp3_extract (const char *filename,
{
id3tag info;
char *word;
+ char track[16];
if (0 != get_id3 (data, size, &info))
return klist;
@@ -462,14 +474,18 @@ libextractor_mp3_extract (const char *filename,
klist = addkword (klist, info.genre, EXTRACTOR_GENRE);
if (strlen (info.comment) > 0)
klist = addkword (klist, info.comment, EXTRACTOR_COMMENT);
-
+ if (info.track_number != 0)
+ {
+ snprintf(track, 15, "%u", info.track_number);
+ klist = addkword (klist, track, EXTRACTOR_TRACK_NUMBER);
+ }
/* A keyword that has all of the information together) */
- word =
- (char *) malloc (strlen (info.artist) + strlen (info.title) +
- strlen (info.album) + 6);
+ word = malloc (strlen (info.artist) + strlen (info.title) +
+ strlen (info.album) + 6);
sprintf (word, "%s: %s (%s)", info.artist, info.title, info.album);
klist = addkword (klist, word, EXTRACTOR_DESCRIPTION);
+
free (word);
free (info.title);
free (info.year);