支持分享音乐文件夹

新增在获取音乐数据时,隐藏实际文件路径的功能
调整原播放音乐提供路径改为提供音乐MD5
This commit is contained in:
2022-01-06 02:59:08 +08:00
parent 006fb8c836
commit 11534b04f7
7 changed files with 644 additions and 579 deletions

View File

@@ -3,6 +3,7 @@ package com.yutou.nas.Services;
import com.yutou.nas.mybatis.model.MusicData;
import java.io.File;
import java.util.List;
public interface IMusicToolsService {
@@ -10,15 +11,16 @@ public interface IMusicToolsService {
void scanMusic();
List<MusicData> getPath(String path, boolean isDir);
List<MusicData> getPath(String path, boolean isDir,boolean delPath);
MusicData getMusicData(String md5);
MusicData getMusicDataOfMd5(String md5,boolean isDelFile);
MusicData getMusicData(String path,boolean isDelFile);
List<MusicData> findOfTitle(String title);
List<MusicData> findOfTitle(String title,boolean isDelFile);
List<MusicData> findOfArtist(String by);
List<MusicData> findOfArtist(String by,boolean isDelFile);
List<MusicData> getMusicList();
List<MusicData> getMusicList(boolean isDelFile);
int getLength();
@@ -27,4 +29,6 @@ public interface IMusicToolsService {
String getMusicPath();
byte[] readImage(String path) throws Exception;
File getMusicOfMd5(String md5,boolean isDelFile);
}

View File

@@ -1,5 +1,6 @@
package com.yutou.nas.Services.impl;
import com.alibaba.fastjson.JSONObject;
import com.yutou.nas.Datas.AppData;
import com.yutou.nas.mybatis.dao.MusicDataDao;
import com.yutou.nas.mybatis.model.MusicData;
@@ -108,7 +109,7 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
* @return 音乐列表
*/
@Override
public List<MusicData> getPath(String path, boolean isDir) {
public List<MusicData> getPath(String path, boolean isDir,boolean delPath) {
List<MusicData> list = new ArrayList<>();
List<MusicData> main = new ArrayList<>();
MusicDataExample example = new MusicDataExample();
@@ -119,7 +120,7 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
}
if (isDir) {
example.createCriteria().andFileLike(tmpPath.replace(File.separator, replacement) + "%");
main = musicDataDao.selectByExample(example);
main = musicDataDao.selectByExample(example,delPath);
}
tmpPath = tmpPath.replace(File.separator, replacement)
.replace("+", "\\+")
@@ -127,7 +128,7 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
.replace("(", "\\(")
.replace(")", "\\)")
.replace("]", "\\]");
main.addAll(musicDataDao.selectByRegexp(tmpPath + replacement + "([^" + replacement + "]+)$"));
main.addAll(musicDataDao.selectByRegexp(tmpPath + replacement + "([^" + replacement + "]+)$",delPath));
if (!path.equals(AppData.defaultMusicPath) && !"root".equals(path)) {
MusicData t2 = new MusicData();
@@ -147,6 +148,8 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
return list;
}
public List<String> getAllAlbum() {
return musicDataDao.selectAllAlbum();
}
@@ -155,12 +158,12 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
return musicDataDao.selectAllArtist();
}
public List<MusicData> selectAlbum(String album) {
return musicDataDao.selectAlbum(album);
public List<MusicData> selectAlbum(String album,boolean isDelFile) {
return musicDataDao.selectAlbum(album,isDelFile);
}
public List<MusicData> selectArtist(String artist) {
return musicDataDao.selectArtist(artist);
public List<MusicData> selectArtist(String artist,boolean isDelFile) {
return musicDataDao.selectArtist(artist,isDelFile);
}
private void getDirList(String path, List<MusicData> list) {
@@ -189,7 +192,7 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
MusicData data = getMetadata(file);
if (data != null) {
try {
if (getMusicData(file.getAbsolutePath()) == null) {
if (getMusicData(file.getAbsolutePath(),false) == null) {
// System.out.println(data);
musicDataDao.insert(data);
}
@@ -202,10 +205,20 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
}
@Override
public MusicData getMusicData(String path) {
public MusicData getMusicData(String path,boolean delFile) {
MusicDataExample example = new MusicDataExample();
example.createCriteria().andFileEqualTo(path);
List<MusicData> list = musicDataDao.selectByExample(example);
List<MusicData> list = musicDataDao.selectByExample(example,delFile);
if (list != null && list.size() > 0) {
return list.get(0);
}
return null;
}
@Override
public MusicData getMusicDataOfMd5(String md5, boolean isDelFile) {
MusicDataExample example = new MusicDataExample();
example.createCriteria().andMd5EqualTo(md5);
List<MusicData> list = musicDataDao.selectByExample(example,isDelFile);
if (list != null && list.size() > 0) {
return list.get(0);
}
@@ -471,23 +484,23 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
}
@Override
public List<MusicData> findOfTitle(String title) {
return find(title, FIND_TITLE);
public List<MusicData> findOfTitle(String title,boolean delFile) {
return find(title, FIND_TITLE,delFile);
}
@Override
public List<MusicData> findOfArtist(String by) {
return find(by, FIND_ARTIST);
public List<MusicData> findOfArtist(String by,boolean delFile) {
return find(by, FIND_ARTIST,delFile);
}
@Override
public List<MusicData> getMusicList() {
return musicDataDao.selectByExample(new MusicDataExample());
public List<MusicData> getMusicList(boolean delFile) {
return musicDataDao.selectByExample(new MusicDataExample(),delFile);
}
@Override
public int getLength() {
return musicDataDao.selectByExample(new MusicDataExample()).size();
return musicDataDao.selectByExample(new MusicDataExample(),true).size();
}
@Override
@@ -495,7 +508,7 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
return isScan;
}
private List<MusicData> find(String title, int type) {
private List<MusicData> find(String title, int type,boolean delFile) {
List<MusicData> list;
MusicDataExample example = new MusicDataExample();
if (type == FIND_TITLE) {
@@ -503,7 +516,7 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
} else if (type == FIND_ARTIST) {
example.createCriteria().andArtistEqualTo(title);
}
list = musicDataDao.selectByExample(example);
list = musicDataDao.selectByExample(example,delFile);
return list;
}
@@ -530,6 +543,19 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
return bytes;
}
@Override
public File getMusicOfMd5(String md5,boolean delFile) {
MusicDataExample example=new MusicDataExample();
example.createCriteria().andMd5EqualTo(md5);
List<MusicData> list=musicDataDao.selectByExample(example,delFile);
Log.i("Music Size",list.size());
if(list!=null&&!list.isEmpty()){
Log.i("Music File", list.get(0).toString());
return new File(list.get(0).getFile());
}
return null;
}
private byte[] readImageFile(File file) throws Exception {
String path = file.getAbsolutePath().replace(file.getName(), "");
File img = new File(path, "cover.jpg");