Package com.pugh.sockso.music.tag

Source Code of com.pugh.sockso.music.tag.Mp3Tag

/**
* Uses jaudiotagger to read mp3 v1 & v2 tags
*
*/

package com.pugh.sockso.music.tag;

import java.io.File;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.datatype.Artwork;
import org.jaudiotagger.tag.id3.ID3v1Tag;
import org.jaudiotagger.tag.id3.ID3v24Frames;
import org.jaudiotagger.tag.id3.ID3v24Tag;

public class Mp3Tag extends AudioTag {

    private static final Logger log = Logger.getLogger( AudioTag.class );

    /**
     *  Returns ID3Data for the file.
     *
     *  We would prefer to use ID3V2 tags, so we try to parse the ID3V2
     *  tags first, and then v1 to get any missing tags.
     *
     */

    public void parse( final File file ) {

        try {

            MP3File f = (MP3File) AudioFileIO.read( file );
            if ( f.hasID3v2Tag() )
                parseID3v2Tag( f );
            if ( f.hasID3v1Tag() )
                parseID3v1Tag( f );

        } catch ( Exception e ) {
            log.error( "Error parsing MP3 tag: " + e.getMessage() );
        }

    }

    private void parseID3v2Tag( MP3File f ) {

        ID3v24Tag v2tag  = f.getID3v2TagAsv24();

        artistTitle = v2tag.getFirst( ID3v24Frames.FRAME_ID_ARTIST );
        albumArtist = v2tag.getFirst( FieldKey.ALBUM_ARTIST );
        albumTitle  = v2tag.getFirst( ID3v24Frames.FRAME_ID_ALBUM );
        trackTitle  = v2tag.getFirst( ID3v24Frames.FRAME_ID_TITLE );
        albumYear   = v2tag.getFirst( ID3v24Frames.FRAME_ID_YEAR );
        genre       = v2tag.getFirst( ID3v24Frames.FRAME_ID_GENRE );

        String trackN = v2tag.getFirst( ID3v24Frames.FRAME_ID_TRACK );

        if ( ! trackN.equals("") ) {
            try {
                trackNumber = Integer.parseInt(trackN);
            } catch (final NumberFormatException e) {
                log.warn("Could not parse track number: " + trackN, e);
            }
        }

        Artwork artwork = v2tag.getFirstArtwork();

        if ( artwork != null ) {
            try {
                coverArt = artwork.getImage();
            } catch (final IOException ioe) {
                log.warn("Could not read cover art from tag", ioe);
            }
        }

    }

    private void parseID3v1Tag( MP3File f ) {

        ID3v1Tag tag = f.getID3v1Tag();

        try {

            artistTitle = tag.getArtist().get(0).toString();
            albumTitle  = tag.getAlbum().get(0).toString();
            trackTitle  = tag.getTitle().get(0).toString();
            albumYear   = tag.getYear().get(0).toString();
            genre       = tag.getGenre().get(0).toString();

            String trackN = tag.getTrack().get(0).toString();

            if ( ! trackN.equals("") ) {
                try {
                    trackNumber = Integer.parseInt(trackN);
                } catch (final NumberFormatException e) {
                    log.warn("Could not parse track number " + trackN, e);
                }
            }
       
        } catch ( final Exception e ) {}

    }

}
TOP

Related Classes of com.pugh.sockso.music.tag.Mp3Tag

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.