This is an automated email from the ASF dual-hosted git repository.

tballison 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 7c1260ebc1 TIKA-4907: Mp3Parser writes no null album and no duration 
into the body (#3198)
7c1260ebc1 is described below

commit 7c1260ebc12b026907f09af1ede68b02fa162abe
Author: Tim Allison <[email protected]>
AuthorDate: Fri Sep 18 14:42:36 2026 -0400

    TIKA-4907: Mp3Parser writes no null album and no duration into the body 
(#3198)
---
 CHANGES.txt                                           |  4 ++++
 .../java/org/apache/tika/parser/mp3/Mp3Parser.java    |  5 +++--
 .../org/apache/tika/parser/mp3/Mp3ParserTest.java     | 19 +++++++++++++++++++
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index ecec37d02f..75af8ccca4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,9 @@
 Release 4.1.0 - unreleased
 
+   * Mp3Parser no longer writes the literal "null" (a missing album) or the
+     duration into the body; an untagged MP3 has an empty body, and a TEXT
+     inference binding no longer embeds it (TIKA-4907).
+
    * VLM parsers: a raw HTML block in the model's markdown (jina-ocr-v1 and
      DeepSeek-OCR write tables that way) is now emitted as XHTML table 
(TIKA-4906).
 
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
index b55a41ae6d..1aeabe89e8 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
@@ -250,7 +250,9 @@ public class Mp3Parser implements Parser {
 
             // ID3v1.1 Track addition
             StringBuilder sb = new StringBuilder();
-            sb.append(tag.getAlbum());
+            if (tag.getAlbum() != null) {
+                sb.append(tag.getAlbum());
+            }
             if (tag.getTrackNumber() != null) {
                 sb.append(", track ").append(tag.getTrackNumber());
                 metadata.set(Audio.RAW_TRACK_NUMBER, tag.getTrackNumber());
@@ -287,7 +289,6 @@ public class Mp3Parser implements Parser {
             xhtml.element("p", tag.getYear());
             xhtml.element("p", tag.getGenre());
         }
-        xhtml.element("p", String.valueOf(audioAndTags.durationSeconds()));
         for (String comment : comments) {
             xhtml.element("p", comment);
         }
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
index 59808166c1..bc51896377 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
@@ -17,6 +17,7 @@
 package org.apache.tika.parser.mp3;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 import java.io.ByteArrayOutputStream;
@@ -415,6 +416,24 @@ public class Mp3ParserTest extends TikaTest {
         assertEquals("2.4555110931396484", 
getXML("testMP3noid3.mp3").metadata.get(XMPDM.DURATION));
     }
 
+    /** An untagged file has no body text: no "null" album and no duration 
paragraph (TIKA-4907). */
+    @Test
+    public void testNoId3HasEmptyBody() throws Exception {
+        Metadata metadata = new Metadata();
+        String content = getText("testMP3noid3.mp3", metadata);
+        assertEquals("", content.trim());
+        assertEquals("2.4555110931396484", metadata.get(XMPDM.DURATION));
+    }
+
+    /** The duration lives in metadata only; a tagged file's body no longer 
repeats it. */
+    @Test
+    public void testDurationNotInBody() throws Exception {
+        Metadata metadata = new Metadata();
+        String content = getText("testMP3id3v2.mp3", metadata);
+        assertContains("Test Title", content);
+        assertFalse(content.contains(metadata.get(XMPDM.DURATION)), content);
+    }
+
     /**
      * This test will do nothing, unless you've downloaded the
      * mp3 file from TIKA-424 - the file cannot be

Reply via email to