更换元数据读取库
This commit is contained in:
@@ -11,8 +11,7 @@ public class ToolsApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(ToolsApplication.class, args);
|
||||
RedisTools.initRedisPoolSub();
|
||||
MusicTools.getInstance().setMusicPath("Z:\\音乐\\Aimer - ARIA STRINGS");
|
||||
MusicTools.getInstance().scanMusic();
|
||||
MusicTools.getInstance().setMusicPath("C:\\Users\\admin\\Music\\");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package com.yutou.tools.home.nas.Data;
|
||||
|
||||
import ealvatag.audio.AudioFile;
|
||||
import ealvatag.audio.AudioFileIO;
|
||||
import ealvatag.tag.NullTag;
|
||||
import ealvatag.tag.Tag;
|
||||
import ealvatag.tag.images.NullArtwork;
|
||||
import lombok.Data;
|
||||
import org.jaudiotagger.audio.AudioFile;
|
||||
import org.jaudiotagger.audio.AudioFileIO;
|
||||
import org.jaudiotagger.audio.exceptions.CannotReadException;
|
||||
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
|
||||
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
|
||||
import org.jaudiotagger.tag.Tag;
|
||||
import org.jaudiotagger.tag.TagException;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
@@ -29,11 +27,12 @@ public class MusicData {
|
||||
public byte[] readImage() throws Exception {
|
||||
AudioFile audioFile = null;
|
||||
audioFile = AudioFileIO.read(file);
|
||||
Tag tag = audioFile.getTag();
|
||||
if (tag.getFirstArtwork() == null) {
|
||||
Tag tag = audioFile.getTag().or(NullTag.INSTANCE);
|
||||
byte[] bytes=tag.getFirstArtwork().or(NullArtwork.INSTANCE).getBinaryData();
|
||||
if (bytes.length==0) {
|
||||
return readImageFile();
|
||||
}
|
||||
return tag.getFirstArtwork().getBinaryData();
|
||||
return bytes;
|
||||
}
|
||||
|
||||
private byte[] readImageFile() throws Exception {
|
||||
|
||||
@@ -43,15 +43,17 @@ public class MusicController {
|
||||
if(StringUtils.isEmpty(path)){
|
||||
return getAllMusicList();
|
||||
}
|
||||
path=path.replace(defaultMusicPath+File.separator,"");
|
||||
if(path.equals("root")){
|
||||
return getAllMusicList();
|
||||
}
|
||||
//path=path.replace(defaultMusicPath+File.separator,"");
|
||||
JSONObject json=new JSONObject();
|
||||
JSONObject data = new JSONObject();
|
||||
json.put("code", 1);
|
||||
MusicTools tools = MusicTools.getInstance();
|
||||
tools.setMusicPath(defaultMusicPath+File.separator+path);
|
||||
data.put("scan", tools.isScan());
|
||||
data.put("size", tools.getLength());
|
||||
data.put("list", JSONArray.toJSON(tools.getMusicPath()));
|
||||
data.put("list", JSONArray.toJSON(tools.getPath(path)));
|
||||
json.put("data", data);
|
||||
return json.toJSONString();
|
||||
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
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 ealvatag.audio.AudioFile;
|
||||
import ealvatag.audio.AudioFileIO;
|
||||
import ealvatag.audio.exceptions.CannotReadException;
|
||||
import ealvatag.tag.FieldKey;
|
||||
import ealvatag.tag.NullTag;
|
||||
import ealvatag.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;
|
||||
import java.util.*;
|
||||
|
||||
public class MusicTools {
|
||||
public static final int FIND_TITLE = 1;
|
||||
@@ -21,6 +19,7 @@ public class MusicTools {
|
||||
private static MusicTools tools;
|
||||
private String musicPath = "C:\\Users\\admin\\Music";
|
||||
private final List<MusicData> musicList = new ArrayList<>();
|
||||
private HashMap<String,List<MusicData>> musicMap=new HashMap<String,List<MusicData>>();
|
||||
private boolean isScan = false;
|
||||
|
||||
public static MusicTools getInstance() {
|
||||
@@ -29,8 +28,14 @@ public class MusicTools {
|
||||
}
|
||||
return tools;
|
||||
}
|
||||
private MusicTools(){
|
||||
scanMusic();
|
||||
}
|
||||
|
||||
public synchronized void scanMusic() {
|
||||
if(isScan){
|
||||
return;
|
||||
}
|
||||
System.out.println("执行扫描");
|
||||
musicList.clear();
|
||||
new Thread(() -> {
|
||||
@@ -70,11 +75,26 @@ public class MusicTools {
|
||||
}
|
||||
}
|
||||
}
|
||||
public List<MusicData> getPath(String path){
|
||||
if(musicMap.containsKey(path)){
|
||||
return musicMap.get(path);
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
private void add(File file) {
|
||||
MusicData data = getMetadata(file);
|
||||
if (data != null) {
|
||||
musicList.add(data);
|
||||
String path=file.getAbsolutePath().replace(file.getName(),"");
|
||||
List<MusicData> list;
|
||||
if(musicMap.containsKey(path)){
|
||||
list=musicMap.get(path);
|
||||
}else{
|
||||
list=new ArrayList<>();
|
||||
}
|
||||
list.add(data);
|
||||
musicMap.put(path,list);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +104,7 @@ public class MusicTools {
|
||||
return null;
|
||||
}
|
||||
AudioFile audioFile = AudioFileIO.read(file);
|
||||
Tag tag = audioFile.getTag();
|
||||
Tag tag = audioFile.getTag().or(NullTag.INSTANCE);
|
||||
MusicData data = new MusicData();
|
||||
try {
|
||||
data.setAlbum(tag.getFirst(FieldKey.ALBUM));
|
||||
@@ -197,9 +217,10 @@ 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)));
|
||||
public static void main(String[] args) throws Exception{
|
||||
String base = "bXVzaWMuaHRtbDo2MyBaOlzpn7PkuZBc55m75bGx5bCR5aWzXFtzM11bRURd6Imy6YGV44GE44Gu57%2B8XDAyLiAwMiDoibLpgZXjgYTjga7nv7wgKOOBguOBiuOBhOODkOODvOOCuOODp%2BODsykud2F2Cg%3D%3D";
|
||||
byte[] bytes=getInstance().getMetadata(new File("Z:\\音乐\\BanG Dream!\\Poppin'on!\\B.O.F.flac")).readImage();
|
||||
System.out.println(bytes.length);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user