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 <n...@gagravarr.org>
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));
     }
     

Reply via email to