Reworked how mp3s are being read and loaded int player

This commit is contained in:
Isaac Parenteau
2019-10-15 00:19:48 -05:00
parent 68a472d804
commit 232fd1746d
11 changed files with 221 additions and 188 deletions

View File

@@ -0,0 +1,172 @@
/**
*
* Project: Eight Track, File: Mp3UploadResults.java
*
* Copyright 2019-2019 Locusworks LLC.
* All rights reserved. Federal copyright law prohibits unauthorized reproduction by
* any means and imposes fines up to $25,000 for violation. No part of this material
* may be reproduced, transmitted, transcribed, stored in a retrieval system, copied,
* modified, duplicated, adapted or translated into another program language in any
* form or by any means, electronic, mechanical, photocopying, recording, or
* otherwise, without the prior written permission from Locusworks. Locusworks
* affirms that Eight-Track(R) software and data is subject to United States
* Government Purpose Rights. Contact Locusworks, 1313 Lawnview Drive
* Forney TX 75126, (802) 488-0438, for commercial licensing opportunities.
*
* IN NO EVENT SHALL LOCUSWORKS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
* INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT
* OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF LOCUSWORKS HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NO RESPONSIBILITY IS ASSUMED BY
* LOCUSWORKS FOR ITS USE, OR FOR ANY INFRINGEMENTS OF PATENTS OR OTHER RIGHTS OF
* THIRD PARTIES RESULTING FROM ITS USE. LOCUSWORKS SPECIFICALLY DISCLAIMS ANY
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND
* ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS
* IS". LOCUSWORKS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
* ENHANCEMENTS, OR MODIFICATIONS.
*/
package net.locusworks.discord.eighttrack.audio;
import com.mpatric.mp3agic.ID3v2;
public class Mp3UploadResults {
private String genre;
private String composure;
private String album;
private String trackNumber;
private String discNumber;
private String artist;
private String title;
private String releaseDate;
private byte[] rawData;
private Throwable err;
public Mp3UploadResults(ID3v2 tag, byte[] data) {
parseResults(tag);
this.rawData = data;
}
public Mp3UploadResults(Throwable err) {
this.err = err;
}
private void parseResults(ID3v2 metadata) {
genre = metadata.getGenreDescription();
composure = metadata.getComposer();
album = metadata.getAlbum();
trackNumber = metadata.getTrack();
discNumber = metadata.getPartOfSet();
artist = metadata.getArtist();
title = metadata.getTitle();
releaseDate = metadata.getDate();
}
public final byte[] getData() {
return this.rawData;
}
/**
* @return the genre
*/
public final String getGenre() {
return genre;
}
/**
* @return the composure
*/
public final String getComposure() {
return composure;
}
/**
* @return the album
*/
public final String getAlbum() {
return album;
}
/**
* @return the trackNumber
*/
public final String getTrackNumber() {
return trackNumber;
}
/**
* @return the discNumber
*/
public final String getDiscNumber() {
return discNumber;
}
/**
* @return the artist
*/
public final String getArtist() {
return artist;
}
/**
* @return the title
*/
public final String getTitle() {
return title;
}
/**
* @return the releaseDate
*/
public final String getReleaseDate() {
return releaseDate;
}
public boolean validFile() {
return (getTitle() != null && !getTitle().isEmpty() && getArtist() != null && !getArtist().trim().isEmpty()) || this.err != null;
}
public boolean hasError() {
return this.err != null;
}
public Throwable getError() {
return this.err;
}
@Override
public String toString() {
if (this.hasError()) {
return "Unable to parse file due to exception: " + this.err.getMessage();
}
StringBuilder sb = new StringBuilder();
if (getTitle() != null)
sb.append(String.format("%-10s: %s%n", "Title", getTitle()));
if (getArtist() != null)
sb.append(String.format("%-10s: %s%n", "Artist", getArtist()));
if (getAlbum() != null)
sb.append(String.format("%-10s: %s%n", "Album", getAlbum()));
if (getTrackNumber() != null)
sb.append(String.format("%-10s: %s%n", "Track", getTrackNumber()));
if (getDiscNumber() != null)
sb.append(String.format("%-10s: %s%n", "Disc", getDiscNumber()));
if (getReleaseDate() != null)
sb.append(String.format("%-10s: %s%n", "Year", getReleaseDate()));
if (getGenre() != null)
sb.append(String.format("%-10s: %s%n", "Genre", getGenre()));
return sb.toString();
}
public void clear() {
rawData = new byte[0];
}
}