001 /* 002 * JBoss, Home of Professional Open Source. 003 * Copyright 2008, Red Hat Middleware LLC, and individual contributors 004 * as indicated by the @author tags. See the copyright.txt file in the 005 * distribution for a full listing of individual contributors. 006 * 007 * This is free software; you can redistribute it and/or modify it 008 * under the terms of the GNU Lesser General Public License as 009 * published by the Free Software Foundation; either version 2.1 of 010 * the License, or (at your option) any later version. 011 * 012 * This software is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this software; if not, write to the Free 019 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 020 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 021 */ 022 package org.jboss.dna.sequencer.mp3; 023 024 import java.io.File; 025 import java.io.FileOutputStream; 026 import java.io.InputStream; 027 import java.util.logging.Level; 028 import org.jaudiotagger.audio.AudioFile; 029 import org.jaudiotagger.audio.AudioFileIO; 030 import org.jaudiotagger.tag.Tag; 031 032 /** 033 * Utility for extracting metadata from MP3 files. 034 * 035 * @author Stefano Maestri 036 */ 037 public class Mp3Metadata { 038 039 private String title; 040 private String author; 041 private String album; 042 private String year; 043 private String comment; 044 045 private Mp3Metadata() { 046 047 } 048 049 public static Mp3Metadata instance( InputStream stream ) { 050 051 Mp3Metadata me = null; 052 File tmpFile = null; 053 try { 054 tmpFile = File.createTempFile("dna-sequencer-mp3", ".mp3"); 055 FileOutputStream writer = new FileOutputStream(tmpFile); 056 byte[] b = new byte[128]; 057 while (stream.read(b) != -1) { 058 writer.write(b); 059 } 060 writer.close(); 061 AudioFileIO.logger.getParent().setLevel(Level.OFF); 062 AudioFile f = AudioFileIO.read(tmpFile); 063 Tag tag = f.getTag(); 064 065 me = new Mp3Metadata(); 066 067 me.author = tag.getFirstArtist(); 068 me.album = tag.getFirstAlbum(); 069 me.title = tag.getFirstTitle(); 070 me.comment = tag.getFirstComment(); 071 me.year = tag.getFirstYear(); 072 073 } catch (Exception e) { 074 e.printStackTrace(); 075 } finally { 076 if (tmpFile != null) { 077 tmpFile.delete(); 078 } 079 } 080 return me; 081 082 } 083 084 public String getTitle() { 085 return title; 086 } 087 088 public String getAuthor() { 089 return author; 090 } 091 092 public String getAlbum() { 093 return album; 094 } 095 096 public String getYear() { 097 return year; 098 } 099 100 public String getComment() { 101 return comment; 102 } 103 104 }