libextractor

GNU libextractor
Log | Files | Refs | Submodules | README | LICENSE

commit 360069bc1b11c8f4ad48af6486271192102997c9
parent 47e38234709ddf395d5f763018eabd0ab684bc24
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sat,  8 Mar 2008 04:47:01 +0000

update

Diffstat:
MChangeLog | 2+-
Msrc/plugins/flacextractor.c | 2++
Msrc/plugins/id3v23extractor.c | 2++
Msrc/plugins/id3v24extractor.c | 2++
Msrc/plugins/id3v2extractor.c | 3++-
Msrc/plugins/mp3extractor.c | 24++++++++++++++++++++----
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);