更换播放器

在文件未包含图片的情况下,寻找cover.jpg
读取元数据失败时,用文件名作为标题
This commit is contained in:
2020-10-21 23:25:29 +08:00
parent d46b1b15cc
commit b0460fbe14
15 changed files with 1060 additions and 95 deletions

View File

@@ -3,11 +3,14 @@ package com.yutou.tools.utils;
import com.yutou.tools.home.nas.Data.MusicData;
import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.exceptions.CannotReadException;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import org.springframework.util.StringUtils;
import java.io.*;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.Objects;
@@ -27,15 +30,14 @@ public class MusicTools {
return tools;
}
public MusicTools() {
scanMusic();
}
public void scanMusic() {
public synchronized void scanMusic() {
System.out.println("执行扫描");
musicList.clear();
new Thread(() -> {
isScan = true;
scan(new File(musicPath));
isScan = false;
System.out.println("扫描完成");
}).start();
}
@@ -78,22 +80,62 @@ public class MusicTools {
public MusicData getMetadata(File file) {
try {
if (file.getName().endsWith(".lrc") || file.getName().endsWith(".jpg")) {
return null;
}
AudioFile audioFile = AudioFileIO.read(file);
Tag tag = audioFile.getTag();
MusicData data = new MusicData();
data.setAlbum(tag.getFirst(FieldKey.ALBUM));
data.setArtist(tag.getFirst(FieldKey.ARTIST));
data.setArtist_sort(tag.getFirst(FieldKey.ARTIST_SORT));
data.setComment(tag.getFirst(FieldKey.COMMENT));
data.setComposer(tag.getFirst(FieldKey.COMPOSER));
data.setDisc_no(tag.getFirst(FieldKey.DISC_NO));
data.setTitle(tag.getFirst(FieldKey.TITLE));
data.setTrack(tag.getFirst(FieldKey.TRACK));
data.setYear(tag.getFirst(FieldKey.YEAR));
try {
data.setAlbum(tag.getFirst(FieldKey.ALBUM));
} catch (Exception e) {
}
try {
data.setArtist(tag.getFirst(FieldKey.ARTIST));
} catch (Exception e) {
}
try {
data.setArtist_sort(tag.getFirst(FieldKey.ARTIST_SORT));
} catch (Exception e) {
}
try {
data.setComment(tag.getFirst(FieldKey.COMMENT));
} catch (Exception e) {
}
try {
data.setComposer(tag.getFirst(FieldKey.COMPOSER));
} catch (Exception e) {
}
try {
data.setDisc_no(tag.getFirst(FieldKey.DISC_NO));
} catch (Exception e) {
}
try {
if (StringUtils.isEmpty(tag.getFirst(FieldKey.TITLE))) {
data.setTitle(file.getName());
} else {
data.setTitle(tag.getFirst(FieldKey.TITLE));
}
} catch (Exception e) {
data.setTitle(file.getName());
}
try {
data.setTrack(tag.getFirst(FieldKey.TRACK));
} catch (Exception e) {
}
try {
data.setYear(tag.getFirst(FieldKey.YEAR));
} catch (Exception e) {
}
data.setFile(file);
return data;
} catch (CannotReadException e) {
MusicData data = new MusicData();
data.setTitle(file.getName());
data.setFile(file);
return data;
} catch (Exception e) {
//e.printStackTrace();
e.printStackTrace();
}
return null;
}
@@ -129,6 +171,7 @@ public class MusicTools {
return list;
}
public String getMusicPath() {
return musicPath;
}
@@ -155,7 +198,9 @@ public class MusicTools {
}
public static void main(String[] args) {
String base = "Wjpc6Z-z5LmQXOOAkOmbqOWuruWkqeOAkU1PUkEg5YWo5aWXMTHlvKBIaXJlc-S4k-i-kVxbMjAyMDA5MDJdIOmbqOWuruWkqSAzcmTjgqLjg6vjg5Djg6DjgIxQYWludCBpdCwgQkxVReOAjVs5NmtIejI0Yml0XVtGTEFDXVwwMDMtRGVmaWFuY2UuZmxhYw==";
System.out.println(new String(Base64.getDecoder().decode(base)));
}
}