This is an automated email from the ASF dual-hosted git repository. nick pushed a commit to branch branch_1x in repository https://gitbox.apache.org/repos/asf/tika.git
commit 21b3cf8b5a209ab6cf0176d8bc55e640fdc8c351 Author: Nick Burch <n...@gagravarr.org> AuthorDate: Sun Mar 14 20:20:14 2021 +0000 TIKA-3318 MP3 parser should output the xmpDM:duration metadata as seconds not milliseconds --- .../src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java | 13 ++++++++----- .../test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java b/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java index 52dad7c..c14b300 100644 --- a/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java +++ b/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java @@ -69,10 +69,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) { @@ -151,7 +151,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); } @@ -250,7 +250,10 @@ 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/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java b/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java index e670809..01fa4f7 100644 --- a/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java +++ b/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java @@ -39,7 +39,7 @@ public class Mp3ParserTest extends TikaTest { */ private static void checkDuration(Metadata metadata, int expected) { assertEquals("Wrong duration", expected, - Math.round(Float.valueOf(metadata.get(XMPDM.DURATION)) / 1000)); + Math.round(Float.valueOf(metadata.get(XMPDM.DURATION)))); } /** @@ -126,7 +126,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); } @@ -306,7 +306,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)); }