This is an automated email from the ASF dual-hosted git repository.
nick pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new 31da853 TIKA-3318 MP3 parser should output the xmpDM:duration
metadata as seconds not milliseconds
31da853 is described below
commit 31da853a5779806b1b83f4709e90ac2e3ac2688e
Author: Nick Burch <[email protected]>
AuthorDate: Sun Mar 14 19:07:02 2021 +0000
TIKA-3318 MP3 parser should output the xmpDM:duration metadata as seconds
not milliseconds
---
.../main/java/org/apache/tika/parser/mp3/Mp3Parser.java | 14 ++++++++------
.../java/org/apache/tika/parser/mp3/Mp3ParserTest.java | 8 ++++----
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
index 7a02473..11a7d4b 100644
---
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
+++
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
@@ -70,10 +70,10 @@ public class Mp3Parser extends AbstractParser {
// Create handlers for the various kinds of ID3 tags
ID3TagsAndAudio audioAndTags = getAllTagHandlers(stream, handler);
- //process as much metadata as possible before
- //writing to xhtml
+ // Before we start on the XHTML output, process and store
+ // as much metadata as possible
if (audioAndTags.duration > 0) {
- metadata.set(XMPDM.DURATION, audioAndTags.duration);
+ metadata.set(XMPDM.DURATION, audioAndTags.durationSeconds());
}
if (audioAndTags.audio != null) {
@@ -152,7 +152,7 @@ public class Mp3Parser extends AbstractParser {
xhtml.element("p", tag.getYear());
xhtml.element("p", tag.getGenre());
}
- xhtml.element("p", String.valueOf(audioAndTags.duration));
+ xhtml.element("p", String.valueOf(audioAndTags.durationSeconds()));
for (String comment : comments) {
xhtml.element("p", comment);
}
@@ -261,7 +261,9 @@ public class Mp3Parser extends AbstractParser {
private ID3Tags[] tags;
private AudioFrame audio;
private LyricsHandler lyrics;
- private float duration;
+ private float duration; // Milliseconds
+ private float durationSeconds() {
+ return duration / 1000;
+ }
}
-
}
diff --git
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
index f952c84..ed0b16c 100644
---
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
+++
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
@@ -38,8 +38,8 @@ public class Mp3ParserTest extends TikaTest {
* @param expected the expected duration, rounded as seconds
*/
private static void checkDuration(Metadata metadata, int expected) {
- assertEquals("Wrong duration", expected,
- Math.round(Float.valueOf(metadata.get(XMPDM.DURATION)) /
1000));
+ assertEquals("Wrong duration", expected,
+ Math.round(Float.valueOf(metadata.get(XMPDM.DURATION))));
}
/**
@@ -124,7 +124,7 @@ public class Mp3ParserTest extends TikaTest {
String content = getXML("testMP3id3v1.mp3").xml;
assertContains("<meta name=\"xmpDM:audioSampleRate\"
content=\"44100\"",
content);
- assertContains("<meta name=\"xmpDM:duration\" content=\"2455",
+ assertContains("<meta name=\"xmpDM:duration\" content=\"2.455",
content);
assertContains("meta name=\"xmpDM:audioChannelType\"
content=\"Mono\"", content);
}
@@ -300,7 +300,7 @@ public class Mp3ParserTest extends TikaTest {
@Test
public void testTIKA1589_noId3ReturnsDurationCorrectly() throws Exception {
- assertEquals("2455.510986328125",
+ assertEquals("2.4555110931396484",
getXML("testMP3noid3.mp3").metadata.get(XMPDM.DURATION));
}