diff --git a/pom.xml b/pom.xml
index 07b93ca..25b71a5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -196,7 +196,7 @@
hibernate-entitymanager
${hibernate.version}
-
+
org.hibernate
@@ -317,11 +317,10 @@
1.1.1
-
- com.mpatric
- mp3agic
- 0.9.1
+ net.jthink
+ jaudiotagger
+ 2.2.3
diff --git a/src/main/java/net/locusworks/discord/eighttrack/audio/Mp3UploadHandler.java b/src/main/java/net/locusworks/discord/eighttrack/audio/Mp3UploadHandler.java
index ea5e7d1..96fe803 100644
--- a/src/main/java/net/locusworks/discord/eighttrack/audio/Mp3UploadHandler.java
+++ b/src/main/java/net/locusworks/discord/eighttrack/audio/Mp3UploadHandler.java
@@ -34,21 +34,22 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;
+import org.jaudiotagger.audio.AudioFile;
+import org.jaudiotagger.audio.AudioFileIO;
+import org.jaudiotagger.tag.Tag;
import org.springframework.stereotype.Component;
-import com.mpatric.mp3agic.ID3v2;
-import com.mpatric.mp3agic.Mp3File;
@Component
public class Mp3UploadHandler {
public Mp3UploadResults parse(Path file) throws IOException {
InputStream is = Files.newInputStream(file);
- return parse(is);
+ return parse(is, file.getFileName().toString());
}
- public Mp3UploadResults parse(InputStream is) throws IOException {
+ public Mp3UploadResults parse(InputStream is, String fileName) throws IOException {
byte[] data;
- String id = null;
+ Path tmp = null;
try(InputStream in = is; ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
int read = 0;
byte[] buffer = new byte[1024 * 1024];
@@ -57,17 +58,21 @@ public class Mp3UploadHandler {
}
data = baos.toByteArray();
- id = UUID.nameUUIDFromBytes(data).toString();
- Files.write(Paths.get(id), data);
- Mp3File mp3 = new Mp3File(Paths.get(id));
- ID3v2 tag = mp3.getId3v2Tag();
+ String id = UUID.nameUUIDFromBytes(data).toString();
+
+ tmp = Paths.get(String.format("%s_%s", id, fileName));
+
+ Files.write(tmp, data);
+
+ AudioFile f = AudioFileIO.read(tmp.toFile());
+ Tag tag = f.getTag();
return new Mp3UploadResults(tag, data);
} catch (Exception ex) {
return new Mp3UploadResults(ex);
} finally {
- if (id != null) {
- Files.deleteIfExists(Paths.get(id));
+ if (tmp != null) {
+ Files.deleteIfExists(tmp);
}
}
}
diff --git a/src/main/java/net/locusworks/discord/eighttrack/audio/Mp3UploadResults.java b/src/main/java/net/locusworks/discord/eighttrack/audio/Mp3UploadResults.java
index 8f22c7a..99bd9ce 100644
--- a/src/main/java/net/locusworks/discord/eighttrack/audio/Mp3UploadResults.java
+++ b/src/main/java/net/locusworks/discord/eighttrack/audio/Mp3UploadResults.java
@@ -27,7 +27,8 @@
*/
package net.locusworks.discord.eighttrack.audio;
-import com.mpatric.mp3agic.ID3v2;
+import org.jaudiotagger.tag.FieldKey;
+import org.jaudiotagger.tag.Tag;
public class Mp3UploadResults {
@@ -43,7 +44,7 @@ public class Mp3UploadResults {
private byte[] rawData;
private Throwable err;
- public Mp3UploadResults(ID3v2 tag, byte[] data) {
+ public Mp3UploadResults(Tag tag, byte[] data) {
parseResults(tag);
this.rawData = data;
}
@@ -52,15 +53,15 @@ public class Mp3UploadResults {
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();
+ private void parseResults(Tag tag) {
+ genre = tag.getFirst(FieldKey.GENRE);
+ composure = tag.getFirst(FieldKey.COMPOSER);
+ album = tag.getFirst(FieldKey.ALBUM);
+ trackNumber = tag.getFirst(FieldKey.TRACK);
+ discNumber = tag.getFirst(FieldKey.DISC_NO);
+ artist = tag.getFirst(FieldKey.ARTIST);
+ title = tag.getFirst(FieldKey.TITLE);
+ releaseDate = tag.getFirst(FieldKey.ORIGINAL_YEAR);
}
public final byte[] getData() {
diff --git a/src/main/java/net/locusworks/discord/eighttrack/events/main/handlers/UploadHandler.java b/src/main/java/net/locusworks/discord/eighttrack/events/main/handlers/UploadHandler.java
index 003b3d5..fd6cb00 100644
--- a/src/main/java/net/locusworks/discord/eighttrack/events/main/handlers/UploadHandler.java
+++ b/src/main/java/net/locusworks/discord/eighttrack/events/main/handlers/UploadHandler.java
@@ -83,7 +83,7 @@ public class UploadHandler extends AbstractMainEventHandler {
MessageEmbed embed = null;
try {
- res = uploadHandler.parse(in);
+ res = uploadHandler.parse(in, attachment.getFileName());
if (res.validFile()) {
embed = persistSong(res, event, attachment.getFileName());
} else {