You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2021/03/14 20:21:42 UTC
[tika] 02/02: TIKA-3318 MP3 parser should output the xmpDM:duration
metadata as seconds not milliseconds
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 <ni...@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));
}