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 2015/03/31 15:21:14 UTC
svn commit: r1670330 - in /tika/trunk: ./
tika-parsers/src/main/java/org/apache/tika/parser/mp3/
tika-parsers/src/test/java/org/apache/tika/parser/mp3/
tika-parsers/src/test/resources/test-documents/
Author: nick
Date: Tue Mar 31 13:21:14 2015
New Revision: 1670330
URL: http://svn.apache.org/r1670330
Log:
TIKA-1589 - Patch from Max Daniline to extract MP3 duration from files with no ID3 tags. This closes #38 from github
Added:
tika/trunk/tika-parsers/src/test/resources/test-documents/testMP3noid3.mp3 (with props)
Modified:
tika/trunk/CHANGES.txt
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
Modified: tika/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1670330&r1=1670329&r2=1670330&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Tue Mar 31 13:21:14 2015
@@ -1,4 +1,6 @@
Release 1.8 - Current Development
+ * Duration extracted from MP3s with no ID3 tags (TIKA-1589)
+
* Upgraded to PDFBox 1.8.9 (TIKA-1575).
* Tika now supports the IsaTab data standard for bioinformatics
Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java?rev=1670330&r1=1670329&r2=1670330&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java Tue Mar 31 13:21:14 2015
@@ -70,6 +70,7 @@ public class Mp3Parser extends AbstractP
// Create handlers for the various kinds of ID3 tags
ID3TagsAndAudio audioAndTags = getAllTagHandlers(stream, handler);
+ // Process tags metadata if the file has supported tags
if (audioAndTags.tags.length > 0) {
CompositeTagHandler tag = new CompositeTagHandler(audioAndTags.tags);
@@ -82,7 +83,6 @@ public class Mp3Parser extends AbstractP
metadata.set(XMPDM.COMPILATION, tag.getCompilation());
metadata.set(XMPDM.RELEASE_DATE, tag.getYear());
metadata.set(XMPDM.GENRE, tag.getGenre());
- metadata.set(XMPDM.DURATION, audioAndTags.duration);
List<String> comments = new ArrayList<String>();
for (ID3Comment comment : tag.getComments()) {
@@ -128,6 +128,9 @@ public class Mp3Parser extends AbstractP
xhtml.element("p", comment);
}
}
+ if (audioAndTags.duration > 0) {
+ metadata.set(XMPDM.DURATION, audioAndTags.duration);
+ }
if (audioAndTags.audio != null) {
metadata.set("samplerate", String.valueOf(audioAndTags.audio.getSampleRate()));
metadata.set("channels", String.valueOf(audioAndTags.audio.getChannels()));
Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java?rev=1670330&r1=1670329&r2=1670330&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java (original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java Tue Mar 31 13:21:14 2015
@@ -328,6 +328,23 @@ public class Mp3ParserTest {
assertEquals("", ID3v2Frame.getTagString(new byte[] {0,0,0,0}, 0, 3));
assertEquals("A", ID3v2Frame.getTagString(new byte[] {(byte)'A',0,0,0}, 0, 3));
}
+
+ @Test
+ public void testTIKA1589_noId3ReturnsDurationCorrectly() throws Exception {
+ Parser parser = new AutoDetectParser(); // Should auto-detect!
+ ContentHandler handler = new BodyContentHandler();
+ Metadata metadata = new Metadata();
+
+ InputStream stream = Mp3ParserTest.class.getResourceAsStream(
+ "/test-documents/testMP3noid3.mp3");
+ try {
+ parser.parse(stream, handler, metadata, new ParseContext());
+ } finally {
+ stream.close();
+ }
+
+ assertEquals("2455.510986328125", metadata.get(XMPDM.DURATION));
+ }
/**
* This test will do nothing, unless you've downloaded the
Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testMP3noid3.mp3
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testMP3noid3.mp3?rev=1670330&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tika/trunk/tika-parsers/src/test/resources/test-documents/testMP3noid3.mp3
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream