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 2011/02/02 18:54:26 UTC
svn commit: r1066548 - in /tika/trunk/tika-parsers/src:
main/java/org/apache/tika/parser/mp3/ID3v23Handler.java
main/java/org/apache/tika/parser/mp3/Mp3Parser.java
test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
Author: nick
Date: Wed Feb 2 17:54:26 2011
New Revision: 1066548
URL: http://svn.apache.org/viewvc?rev=1066548&view=rev
Log:
TIKA-372 follow-on: Set two more XMPDM metadata values for MP3, and add unit tests
Modified:
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v23Handler.java
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/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v23Handler.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v23Handler.java?rev=1066548&r1=1066547&r2=1066548&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v23Handler.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v23Handler.java Wed Feb 2 17:54:26 2011
@@ -74,7 +74,9 @@ public class ID3v23Handler implements ID
}
private String getTagString(byte[] data, int offset, int length) {
- return ID3v2Frame.getTagString(data, offset, length);
+ String str = ID3v2Frame.getTagString(data, offset, length);
+ // Handle embedded nulls
+ return str.replace((char)0, '\n');
}
public boolean getTagsPresent() {
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=1066548&r1=1066547&r2=1066548&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 Wed Feb 2 17:54:26 2011
@@ -56,6 +56,7 @@ public class Mp3Parser implements Parser
Metadata metadata, ParseContext context)
throws IOException, SAXException, TikaException {
metadata.set(Metadata.CONTENT_TYPE, "audio/mpeg");
+ metadata.set(XMPDM.AUDIO_COMPRESSOR, "MP3");
XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
xhtml.startDocument();
@@ -93,9 +94,19 @@ public class Mp3Parser implements Parser
metadata.set("samplerate", String.valueOf(audioAndTags.audio.getSampleRate()));
metadata.set("channels", String.valueOf(audioAndTags.audio.getChannels()));
metadata.set("version", audioAndTags.audio.getVersion());
+
metadata.set(
XMPDM.AUDIO_SAMPLE_RATE,
Integer.toString(audioAndTags.audio.getSampleRate()));
+ if(audioAndTags.audio.getChannels() == 1) {
+ metadata.set(XMPDM.AUDIO_CHANNEL_TYPE, "Mono");
+ } else if(audioAndTags.audio.getChannels() == 2) {
+ metadata.set(XMPDM.AUDIO_CHANNEL_TYPE, "Stereo");
+ } else if(audioAndTags.audio.getChannels() == 5) {
+ metadata.set(XMPDM.AUDIO_CHANNEL_TYPE, "5.1");
+ } else if(audioAndTags.audio.getChannels() == 7) {
+ metadata.set(XMPDM.AUDIO_CHANNEL_TYPE, "7.1");
+ }
}
if (audioAndTags.lyrics != null && audioAndTags.lyrics.hasLyrics()) {
xhtml.element("p", audioAndTags.lyrics.lyricsText);
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=1066548&r1=1066547&r2=1066548&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 Wed Feb 2 17:54:26 2011
@@ -22,6 +22,7 @@ import java.io.InputStream;
import junit.framework.TestCase;
import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.XMPDM;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
@@ -83,10 +84,12 @@ public class Mp3ParserTest extends TestC
stream.close();
}
+ // Check core properties
assertEquals("audio/mpeg", metadata.get(Metadata.CONTENT_TYPE));
assertEquals("Test Title", metadata.get(Metadata.TITLE));
assertEquals("Test Artist", metadata.get(Metadata.AUTHOR));
+ // Check the textual contents
String content = handler.toString();
assertTrue(content.contains("Test Title"));
assertTrue(content.contains("Test Artist"));
@@ -95,9 +98,23 @@ public class Mp3ParserTest extends TestC
assertTrue(content.contains("Test Comment"));
assertTrue(content.contains("Rock"));
+ // Check un-typed audio properties
assertEquals("MPEG 3 Layer III Version 1", metadata.get("version"));
assertEquals("44100", metadata.get("samplerate"));
assertEquals("2", metadata.get("channels"));
+
+ // Check XMPDM-typed audio properties
+ assertEquals("Test Album", metadata.get(XMPDM.ALBUM));
+ assertEquals("Test Artist", metadata.get(XMPDM.ARTIST));
+ assertEquals(null, metadata.get(XMPDM.COMPOSER));
+ assertEquals("2008", metadata.get(XMPDM.RELEASE_DATE));
+ assertEquals("Rock", metadata.get(XMPDM.GENRE));
+ assertEquals("XXXID3v1 Comment\nTest Comment", metadata.get(XMPDM.LOG_COMMENT.getName()));
+ assertEquals("1", metadata.get(XMPDM.TRACK_NUMBER));
+
+ assertEquals("44100", metadata.get(XMPDM.AUDIO_SAMPLE_RATE));
+ assertEquals("Stereo", metadata.get(XMPDM.AUDIO_CHANNEL_TYPE));
+ assertEquals("MP3", metadata.get(XMPDM.AUDIO_COMPRESSOR));
}
/**