开始整音乐播放器
This commit is contained in:
@@ -17,11 +17,16 @@ import java.util.Enumeration;
|
||||
@Component
|
||||
@WebFilter
|
||||
public class APIFilter implements Filter {
|
||||
private static boolean isDebug=true;
|
||||
@Resource
|
||||
UKeyDao keyDao;
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
||||
if(isDebug){
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
return;
|
||||
}
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequest;
|
||||
HttpServletResponse response= (HttpServletResponse) servletResponse;
|
||||
String token = request.getParameter("token");
|
||||
|
||||
161
src/main/java/com/yutou/tools/utils/MusicTools.java
Normal file
161
src/main/java/com/yutou/tools/utils/MusicTools.java
Normal file
@@ -0,0 +1,161 @@
|
||||
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.tag.FieldKey;
|
||||
import org.jaudiotagger.tag.Tag;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class MusicTools {
|
||||
public static final int FIND_TITLE = 1;
|
||||
public static final int FIND_ARTIST = 2;
|
||||
|
||||
private static MusicTools tools;
|
||||
private String musicPath = "C:\\Users\\admin\\Music";
|
||||
private final List<MusicData> musicList = new ArrayList<>();
|
||||
private boolean isScan = false;
|
||||
|
||||
public static MusicTools getInstance() {
|
||||
if (tools == null) {
|
||||
tools = new MusicTools();
|
||||
}
|
||||
return tools;
|
||||
}
|
||||
|
||||
public MusicTools() {
|
||||
scanMusic();
|
||||
}
|
||||
|
||||
public void scanMusic() {
|
||||
new Thread(() -> {
|
||||
isScan = true;
|
||||
scan(new File(musicPath));
|
||||
isScan = false;
|
||||
}).start();
|
||||
}
|
||||
|
||||
public List<MusicData> scan(File path, boolean isScanDir) {
|
||||
if (isScanDir) {
|
||||
scan(path);
|
||||
return musicList;
|
||||
} else {
|
||||
if (path.exists() && path.isDirectory()) {
|
||||
List<MusicData> list = new ArrayList<>();
|
||||
for (File file : path.listFiles()) {
|
||||
list.add(getMetadata(file));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void scan(File path) {
|
||||
if (path.isFile()) {
|
||||
add(path);
|
||||
} else if (path.isDirectory()) {
|
||||
for (File file : Objects.requireNonNull(path.listFiles())) {
|
||||
if (file.isDirectory()) {
|
||||
scan(file);
|
||||
} else {
|
||||
add(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void add(File file) {
|
||||
MusicData data = getMetadata(file);
|
||||
if (data != null) {
|
||||
musicList.add(data);
|
||||
}
|
||||
}
|
||||
|
||||
public MusicData getMetadata(File file) {
|
||||
try {
|
||||
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));
|
||||
data.setFile(file);
|
||||
return data;
|
||||
} catch (Exception e) {
|
||||
//e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public List<MusicData> findOfTitle(String title) {
|
||||
return find(title, FIND_TITLE);
|
||||
}
|
||||
|
||||
public List<MusicData> findOfArtist(String by) {
|
||||
return find(by, FIND_ARTIST);
|
||||
}
|
||||
|
||||
public List<MusicData> getMusicList() {
|
||||
return musicList;
|
||||
}
|
||||
|
||||
public int getLength() {
|
||||
return tools.musicList.size();
|
||||
}
|
||||
|
||||
public boolean isScan() {
|
||||
return isScan;
|
||||
}
|
||||
|
||||
private List<MusicData> find(String title, int type) {
|
||||
List<MusicData> list = new ArrayList<>();
|
||||
for (MusicData data : musicList) {
|
||||
if (data.getTitle().contains(title)) {
|
||||
list.add(data);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public String getMusicPath() {
|
||||
return musicPath;
|
||||
}
|
||||
|
||||
public void setMusicPath(String musicPath) {
|
||||
this.musicPath = musicPath;
|
||||
}
|
||||
|
||||
private void saveImage(MusicData data) {
|
||||
try {
|
||||
File file = new File(data.getTitle() + ".jpg");
|
||||
if (!file.exists()) {
|
||||
if (!file.createNewFile()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
OutputStream outputStream = new FileOutputStream(file);
|
||||
outputStream.write(data.readImage());
|
||||
outputStream.flush();
|
||||
outputStream.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,6 +3,10 @@ package com.yutou.tools.utils;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.yutou.tools.interfaces.DownloadInterface;
|
||||
import com.yutou.tools.nas.UpdateIp;
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -258,4 +262,15 @@ public class Tools {
|
||||
downloadInterface.onError(e);
|
||||
}
|
||||
}
|
||||
public static ResponseEntity<FileSystemResource> getFile(File file){
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
System.out.println(file.getName());
|
||||
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
|
||||
headers.add("Content-Disposition", "attachment; filename=" + file.getName());
|
||||
headers.add("Pragma", "no-cache");
|
||||
headers.add("Expires", "0");
|
||||
headers.add("Last-Modified", new Date().toString());
|
||||
headers.add("ETag", String.valueOf(System.currentTimeMillis()));
|
||||
return ResponseEntity.ok().headers(headers).contentLength(file.length()).contentType(MediaType.parseMediaType("application/octet-stream")).body(new FileSystemResource(file));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user