You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by wk...@apache.org on 2011/06/08 09:17:07 UTC

svn commit: r1133264 - in /incubator/stanbol/trunk/enhancer/engines/metaxa: ./ src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/ src/main/resources/

Author: wkasper
Date: Wed Jun  8 07:17:07 2011
New Revision: 1133264

URL: http://svn.apache.org/viewvc?rev=1133264&view=rev
Log:
Stanbol-210: Removed dependencies on LGPL libs
Replaced MP3 extractor based on jaudiotagger by one based on mp3agic (MIT license)
Updated extractorregistry

Added:
    incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/
    incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractor.java
    incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractorFactory.java
Modified:
    incubator/stanbol/trunk/enhancer/engines/metaxa/pom.xml
    incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/resources/extractionregistry.xml

Modified: incubator/stanbol/trunk/enhancer/engines/metaxa/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/metaxa/pom.xml?rev=1133264&r1=1133263&r2=1133264&view=diff
==============================================================================
--- incubator/stanbol/trunk/enhancer/engines/metaxa/pom.xml (original)
+++ incubator/stanbol/trunk/enhancer/engines/metaxa/pom.xml Wed Jun  8 07:17:07 2011
@@ -62,7 +62,13 @@
             </Embed-Dependency>
             <Embed-Transitive>true</Embed-Transitive>
             <Import-Package>
-              !com.jacob.test.*,
+              !com.jacob.*,
+              !jcifs.*,
+              !org.bibsonomy.*,
+              !ronaldhttpclient.*,
+              !org.htmlparser.*,
+              !org.jaudiotagger.*,
+              !org.textmining.*,
               !com.sun.image.codec.jpeg.*,
               !com.sun.javadoc,
               !com.sun.msv.*,
@@ -136,6 +142,11 @@
       <scope>compile</scope>
     </dependency>
     <dependency>
+    	<groupId>mp3agic</groupId>
+    	<artifactId>mp3agic</artifactId>
+    	<version>0.6</version>
+    </dependency>
+    <dependency>
       <groupId>com.ibm.icu</groupId>
       <artifactId>icu4j</artifactId>
       <scope>compile</scope>

Added: incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractor.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractor.java?rev=1133264&view=auto
==============================================================================
--- incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractor.java (added)
+++ incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractor.java Wed Jun  8 07:17:07 2011
@@ -0,0 +1,107 @@
+package org.apache.stanbol.enhancer.engines.metaxa.core.mp3;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+import org.ontoware.rdf2go.model.Model;
+import org.ontoware.rdf2go.model.node.Resource;
+import org.ontoware.rdf2go.model.node.URI;
+import org.ontoware.rdf2go.vocabulary.RDF;
+import org.semanticdesktop.aperture.extractor.AbstractFileExtractor;
+import org.semanticdesktop.aperture.extractor.ExtractorException;
+import org.semanticdesktop.aperture.rdf.RDFContainer;
+import org.semanticdesktop.aperture.rdf.util.ModelUtil;
+import org.semanticdesktop.aperture.vocabulary.NCO;
+import org.semanticdesktop.aperture.vocabulary.NID3;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.mpatric.mp3agic.ID3Wrapper;
+import com.mpatric.mp3agic.ID3v1;
+import com.mpatric.mp3agic.ID3v2;
+import com.mpatric.mp3agic.InvalidDataException;
+import com.mpatric.mp3agic.Mp3File;
+import com.mpatric.mp3agic.UnsupportedTagException;
+
+/**
+ *
+ * @author <a href="mailto:kasper@dfki.de">Walter Kasper</a>
+ * 
+ */
+
+public class MP3FileExtractor extends AbstractFileExtractor {
+  
+  private Logger logger = LoggerFactory.getLogger(MP3FileExtractor.class);
+  
+  @Override
+  protected void performExtraction(URI arg0, File arg1, Charset arg2, String arg3, RDFContainer result) throws ExtractorException {
+    try {
+      Mp3File mp3File = new Mp3File(arg1.toString());
+      ID3v1 id3v1 = mp3File.getId3v1Tag();
+      ID3v2 id3v2 = mp3File.getId3v2Tag();
+      ID3Wrapper wrapper = new ID3Wrapper(id3v1,id3v2);
+      addId3Fields(wrapper,result);
+      result.add(RDF.type, NID3.ID3Audio);
+      
+    } catch (UnsupportedTagException e) {
+      throw new ExtractorException(e);
+    } catch (InvalidDataException e) {
+      throw new ExtractorException(e);
+    } catch (IOException e) {
+      throw new ExtractorException(e);
+    }
+  }
+
+  private void addId3Fields(ID3Wrapper wrapper, RDFContainer result) {
+    String value = null;
+    if ((value = wrapper.getAlbum()) != null) {
+      result.add(NID3.albumTitle,value);
+    }
+    if ((value = wrapper.getArtist()) != null) {
+      addSimpleContact(NID3.originalArtist,value,result);
+    }
+    if ((value = wrapper.getComment()) != null) {
+      result.add(NID3.comments,value);
+    }
+    if ((value = wrapper.getComposer())!= null) {
+      addSimpleContact(NID3.composer,value,result);
+    }
+    if ((value  = wrapper.getCopyright()) != null) {
+      result.add(NID3.copyrightMessage,value);
+    }
+    if ((value  = wrapper.getEncoder()) != null) {
+      addSimpleContact(NID3.encodedBy, value,result);
+    }
+    if ((value  = wrapper.getGenreDescription()) != null) {
+      result.add(NID3.contentType,value);
+    }
+    if ((value  = wrapper.getTitle()) != null) {
+      result.add(NID3.title,value);
+    }
+    if ((value  = wrapper.getOriginalArtist()) != null) {
+      addSimpleContact(NID3.originalArtist,value,result);
+    }
+    if ((value  = wrapper.getTrack()) != null) {
+      addSimpleContact(NID3.trackNumber,value,result);
+    }
+    if ((value  = wrapper.getYear()) != null) {
+      try {
+        int year = Integer.parseInt(value);
+        result.add(NID3.recordingYear,year);
+      }
+      catch(NumberFormatException e) {}
+    }
+  }
+  
+  protected void addSimpleContact(URI property, String fullname, RDFContainer container) {
+    Model model = container.getModel();
+    Resource resource = ModelUtil.generateRandomResource(model);
+    model.addStatement(resource, RDF.type, NCO.Contact);
+    model.addStatement(resource, NCO.fullname, fullname);
+    model.addStatement(container.getDescribedUri(), property, resource);
+}
+
+
+  
+}

Added: incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractorFactory.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractorFactory.java?rev=1133264&view=auto
==============================================================================
--- incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractorFactory.java (added)
+++ incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/java/org/apache/stanbol/enhancer/engines/metaxa/core/mp3/MP3FileExtractorFactory.java Wed Jun  8 07:17:07 2011
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH.
+ * All rights reserved.
+ * 
+ * Licensed under the Aperture BSD-style license.
+ */
+package org.apache.stanbol.enhancer.engines.metaxa.core.mp3;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.semanticdesktop.aperture.extractor.FileExtractor;
+import org.semanticdesktop.aperture.extractor.FileExtractorFactory;
+
+/**
+ * A FileExtractorFactory implementation for the MP3FileExtractors
+ */
+public class MP3FileExtractorFactory implements FileExtractorFactory {
+
+    private static final Set MIME_TYPES = Collections.singleton("audio/mpeg");
+    
+    /**
+     * @see FileExtractorFactory#get()
+     */
+    public FileExtractor get() {
+        return new MP3FileExtractor();
+    }
+
+    /**
+     * @see FileExtractorFactory#getSupportedMimeTypes()
+     */
+    public Set getSupportedMimeTypes() {
+        return MIME_TYPES;
+    }
+
+}
+

Modified: incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/resources/extractionregistry.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/resources/extractionregistry.xml?rev=1133264&r1=1133263&r2=1133264&view=diff
==============================================================================
--- incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/resources/extractionregistry.xml (original)
+++ incubator/stanbol/trunk/enhancer/engines/metaxa/src/main/resources/extractionregistry.xml Wed Jun  8 07:17:07 2011
@@ -71,6 +71,7 @@
 		<name>org.semanticdesktop.aperture.extractor.xml.XmlExtractorFactory</name>
 	</extractorFactory>
 	<extractorFactory>
-		<name>org.semanticdesktop.aperture.extractor.mp3.MP3FileExtractorFactory</name>
+		<name>org.apache.stanbol.enhancer.engines.metaxa.core.mp3.MP3FileExtractorFactory</name>
 	</extractorFactory>
+	-->
 </extractorFactories>