mirror of
https://github.com/Coloryr/AllMusic.git
synced 2026-11-08 18:54:44 +00:00
音乐API更新接口
This commit is contained in:
1 parent
df304d4d89
commit
ee612df29d
18 files changed
+198
-49
No files matched your search
@@ -40,6 +40,8 @@ public class AllMusic {
|
||||
|
||||
public static final String SERVER_DIR = "allmusic_server/";
|
||||
|
||||
public static File basePath;
|
||||
|
||||
/**
|
||||
* 客户端插件信道名
|
||||
*/
|
||||
@@ -282,6 +284,10 @@ public class AllMusic {
|
||||
AllMusic.log.data("<light_purple>[AllMusic]<red>没有注册音乐");
|
||||
}
|
||||
|
||||
for (IMusicApi api : MUSIC_APIS.values()) {
|
||||
api.reload(basePath);
|
||||
}
|
||||
|
||||
log.data("<light_purple>[AllMusic]<yellow>已启动-" + version);
|
||||
}
|
||||
|
||||
@@ -405,11 +411,13 @@ public class AllMusic {
|
||||
public static void init(File file) {
|
||||
log.data("<light_purple>[AllMusic]<yellow>正在启动,感谢使用,本插件交流群:571239090");
|
||||
try {
|
||||
file.mkdir();
|
||||
isRun = true;
|
||||
basePath = file;
|
||||
basePath.mkdir();
|
||||
|
||||
configFile = new File(file, "config.json");
|
||||
messageFile = new File(file, "message.json");
|
||||
cookieFile = new File(file, "cookie.json");
|
||||
configFile = new File(basePath, "config.json");
|
||||
messageFile = new File(basePath, "message.json");
|
||||
cookieFile = new File(basePath, "cookie.json");
|
||||
if (!configFile.exists()) {
|
||||
configFile.createNewFile();
|
||||
}
|
||||
@@ -420,16 +428,14 @@ public class AllMusic {
|
||||
cookieFile.createNewFile();
|
||||
}
|
||||
|
||||
BanSave.init(file);
|
||||
HudSave.init(file);
|
||||
MusicListSave.init(file);
|
||||
BanSave.init(basePath);
|
||||
HudSave.init(basePath);
|
||||
MusicListSave.init(basePath);
|
||||
|
||||
loadConfig();
|
||||
|
||||
apis = new File(file, "api");
|
||||
apis = new File(basePath, "api");
|
||||
apis.mkdirs();
|
||||
|
||||
isRun = true;
|
||||
loadConfig();
|
||||
} catch (IOException e) {
|
||||
isRun = false;
|
||||
log.data("<light_purple>[AllMusic]<red>启动失败");
|
||||
|
||||
@@ -4,12 +4,17 @@ import com.coloryr.allmusic.server.core.music.LyricSave;
|
||||
import com.coloryr.allmusic.server.core.objs.music.SearchPageObj;
|
||||
import com.coloryr.allmusic.server.core.objs.music.SongInfoObj;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public interface IMusicApi {
|
||||
void reload(File path);
|
||||
|
||||
String getId();
|
||||
|
||||
SongInfoObj getMusic(String id, String player, boolean isList);
|
||||
|
||||
SearchPageObj search(String[] args, boolean isDefault);
|
||||
SearchPageObj search(String[] args);
|
||||
|
||||
void setList(String id, Object sender);
|
||||
|
||||
@@ -22,4 +27,8 @@ public interface IMusicApi {
|
||||
String getMusicId(String arg);
|
||||
|
||||
boolean checkId(String id);
|
||||
|
||||
void command(Object sender, String name, String[] args);
|
||||
|
||||
List<String> tab(Object sender, String name, String[] args);
|
||||
}
|
||||
@@ -73,9 +73,8 @@ public class CommandEX {
|
||||
* @param sender 发送者
|
||||
* @param name 用户名
|
||||
* @param args 参数
|
||||
* @param isDefault 是否是默认点歌方式
|
||||
*/
|
||||
public static void searchMusic(Object sender, String name, String[] args, boolean isDefault) {
|
||||
public static void searchMusic(Object sender, String name, String[] args) {
|
||||
|
||||
String apiname = AllMusic.getConfig().defaultApi;
|
||||
|
||||
@@ -88,7 +87,6 @@ public class CommandEX {
|
||||
obj.sender = sender;
|
||||
obj.name = name;
|
||||
obj.args = args;
|
||||
obj.isDefault = isDefault;
|
||||
obj.api = apiname;
|
||||
|
||||
if (AllMusic.side.onMusicAdd(sender, obj)) {
|
||||
@@ -105,9 +103,8 @@ public class CommandEX {
|
||||
* @param sender 发送者
|
||||
* @param name 用户名
|
||||
* @param args 参数
|
||||
* @param isDefault 是否是默认点歌方式
|
||||
*/
|
||||
public static void searchMusicApi(Object sender, String name, String[] args, boolean isDefault) {
|
||||
public static void searchMusicApi(Object sender, String name, String[] args) {
|
||||
if (args == null || args.length < 2) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().musicPlay.error2);
|
||||
return;
|
||||
@@ -119,12 +116,14 @@ public class CommandEX {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().musicPlay.error2);
|
||||
return;
|
||||
}
|
||||
|
||||
String[] newArgs = new String[args.length - 1];
|
||||
System.arraycopy(args, 1, newArgs, 0, newArgs.length);
|
||||
|
||||
PlayerAddMusicObj obj = new PlayerAddMusicObj();
|
||||
obj.sender = sender;
|
||||
obj.name = name;
|
||||
obj.args = args;
|
||||
obj.isDefault = isDefault;
|
||||
obj.args = newArgs;
|
||||
obj.api = apiname;
|
||||
|
||||
if (AllMusic.side.onMusicAdd(sender, obj)) {
|
||||
@@ -222,7 +221,6 @@ public class CommandEX {
|
||||
obj.sender = sender;
|
||||
obj.id = musicID;
|
||||
obj.name = name;
|
||||
obj.isDefault = false;
|
||||
obj.api = api;
|
||||
|
||||
if (AllMusic.side.onMusicAdd(sender, obj)) {
|
||||
@@ -280,7 +278,7 @@ public class CommandEX {
|
||||
else {
|
||||
switch (AllMusic.getConfig().defaultAddMusic) {
|
||||
case 1:
|
||||
searchMusic(sender, name, args, true);
|
||||
searchMusic(sender, name, args);
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.coloryr.allmusic.server.core.music.PlayRuntime;
|
||||
import com.coloryr.allmusic.server.core.music.VoteItem;
|
||||
import com.coloryr.allmusic.server.core.objs.message.ARG;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class CommandAgree extends ACommand {
|
||||
@Override
|
||||
public void execute(Object sender, String name, String[] args) {
|
||||
@@ -20,15 +22,15 @@ public class CommandAgree extends ACommand {
|
||||
VoteItem vote = PlayMusic.getVote();
|
||||
|
||||
if (vote == null) {
|
||||
AllMusic.side.sendMessage(name, AllMusic.getMessage().vote.err4);
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().vote.err4);
|
||||
return;
|
||||
}
|
||||
if (vote.votePlayer.contains(name)) {
|
||||
AllMusic.side.sendMessage(name, AllMusic.getMessage().vote.err5);
|
||||
if (vote.votePlayer.contains(name.toLowerCase(Locale.ROOT))) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().vote.err5);
|
||||
return;
|
||||
}
|
||||
|
||||
AllMusic.side.sendMessage(name, AllMusic.getMessage().vote.agree);
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().vote.agree);
|
||||
String data = AllMusic.getMessage().vote.bqAgree;
|
||||
data = data.replace(ARG.player, name)
|
||||
.replace(ARG.count, String.valueOf(vote.votePlayer.size()))
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package com.coloryr.allmusic.server.core.command.sub;
|
||||
|
||||
import com.coloryr.allmusic.server.core.AllMusic;
|
||||
import com.coloryr.allmusic.server.core.IMusicApi;
|
||||
import com.coloryr.allmusic.server.core.command.ACommand;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandApiCommand extends ACommand {
|
||||
@Override
|
||||
public void execute(Object sender, String name, String[] args) {
|
||||
if (args.length < 2) {
|
||||
AllMusic.side.sendMessage(sender, "<light_purple>[AllMusic]<dark_green><red>没有指定API");
|
||||
return;
|
||||
}
|
||||
|
||||
String apiname = args[1];
|
||||
|
||||
IMusicApi api = AllMusic.MUSIC_APIS.get(apiname);
|
||||
|
||||
if (api == null) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().musicPlay.error2);
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.length == 2) {
|
||||
api.command(sender, name, new String[0]);
|
||||
} else {
|
||||
String[] newArgs = new String[args.length - 2];
|
||||
System.arraycopy(args, 2, newArgs, 0, newArgs.length);
|
||||
|
||||
api.command(sender, name, newArgs);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> tab(Object player, String name, String[] args, int index) {
|
||||
if (args.length == 1) {
|
||||
return new ArrayList<>(AllMusic.MUSIC_APIS.keySet());
|
||||
}
|
||||
|
||||
String apiname = args[1];
|
||||
|
||||
IMusicApi api = AllMusic.MUSIC_APIS.get(apiname);
|
||||
|
||||
if (api == null) {
|
||||
AllMusic.side.sendMessage(player, AllMusic.getMessage().musicPlay.error2);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (args.length == 2) {
|
||||
return api.tab(player, name, new String[0]);
|
||||
} else {
|
||||
String[] newArgs = new String[args.length - 2];
|
||||
System.arraycopy(args, 2, newArgs, 0, newArgs.length);
|
||||
|
||||
return api.tab(player, name, newArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,8 +23,12 @@ public class CommandPush extends ACommand {
|
||||
}
|
||||
if (PlayMusic.getListSize() == 0 && PlayMusic.getIdleListSize() == 0) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.side.miniMessage(AllMusic.getMessage().musicPlay.emptyPlay));
|
||||
return;
|
||||
} else if (PlayMusic.fullVoteList()) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().vote.err6);
|
||||
return;
|
||||
}
|
||||
SongInfoObj music = null;
|
||||
SongInfoObj music;
|
||||
if (args.length == 1) {
|
||||
music = PlayMusic.findPlayerMusic(name);
|
||||
if (music == null) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.coloryr.allmusic.server.core.command.sub;
|
||||
|
||||
import com.coloryr.allmusic.server.core.AllMusic;
|
||||
import com.coloryr.allmusic.server.core.IMusicApi;
|
||||
import com.coloryr.allmusic.server.core.command.ACommand;
|
||||
|
||||
public class CommandReload extends ACommand {
|
||||
|
||||
+4
-1
@@ -26,7 +26,10 @@ public class CommandSearch extends ACommand {
|
||||
return;
|
||||
}
|
||||
|
||||
String[] newArgs = new String[args.length - 1];
|
||||
System.arraycopy(args, 1, newArgs, 0, newArgs.length);
|
||||
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().search.startSearch);
|
||||
CommandEX.searchMusic(sender, name, args, false);
|
||||
CommandEX.searchMusic(sender, name, newArgs);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -40,7 +40,7 @@ public class CommandSearchApi extends ACommand {
|
||||
System.arraycopy(args, 1, newArgs, 0, newArgs.length);
|
||||
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().search.startSearch);
|
||||
CommandEX.searchMusicApi(sender, name, newArgs, false);
|
||||
CommandEX.searchMusicApi(sender, name, newArgs);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,6 +16,8 @@ public class CommandVote extends ACommand {
|
||||
!AllMusic.side.checkPermission(sender, PermissionList.PERMISSION_VOTE)) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().vote.noPermission);
|
||||
return;
|
||||
} else if (PlayMusic.fullVoteList()) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().vote.err6);
|
||||
} else if (PlayMusic.getListSize() == 0 && PlayMusic.getIdleListSize() == 0) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().musicPlay.emptyPlay);
|
||||
} else if (PlayMusic.nowPlayMusic == null) {
|
||||
@@ -32,7 +34,7 @@ public class CommandVote extends ACommand {
|
||||
return;
|
||||
}
|
||||
PlayMusic.removeVote(name, VoteItem.VoteType.NEXT);
|
||||
AllMusic.side.sendMessage(name, AllMusic.getMessage().push.cancel1);
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.cancel1);
|
||||
} else {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().command.error);
|
||||
}
|
||||
@@ -41,9 +43,8 @@ public class CommandVote extends ACommand {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().command.error);
|
||||
return;
|
||||
} else {
|
||||
String player = name.toLowerCase(Locale.ROOT);
|
||||
VoteItem item = new VoteItem(PlayMusic.nowPlayMusic.getApi(), PlayMusic.nowPlayMusic.getId(), player, VoteItem.VoteType.NEXT);
|
||||
item.votePlayer.add(player);
|
||||
VoteItem item = new VoteItem(PlayMusic.nowPlayMusic.getApi(), PlayMusic.nowPlayMusic.getId(), name, VoteItem.VoteType.NEXT);
|
||||
item.votePlayer.add(name.toLowerCase(Locale.ROOT));
|
||||
|
||||
if (PlayMusic.startVote(item)) {
|
||||
AllMusic.side.sendMessage(sender, AllMusic.getMessage().vote.doVote);
|
||||
|
||||
@@ -33,10 +33,10 @@ public class MusicSearch {
|
||||
AllMusic.side.sendMessageTask(obj.sender, AllMusic.getMessage().musicPlay.error2);
|
||||
continue;
|
||||
}
|
||||
SearchPageObj search = api.search(obj.args, obj.isDefault);
|
||||
SearchPageObj search = api.search(obj.args);
|
||||
if (search == null)
|
||||
AllMusic.side.sendMessageTask(obj.sender, AllMusic.getMessage().search
|
||||
.cantSearch.replace(ARG.name, obj.isDefault ? obj.args[0] : obj.args[1]));
|
||||
.cantSearch.replace(ARG.name, obj.args[0]));
|
||||
else {
|
||||
AllMusic.side.sendMessageTask(obj.sender, AllMusic.getMessage().search.res);
|
||||
addSearch(obj.name, search);
|
||||
|
||||
@@ -111,6 +111,13 @@ public class PlayMusic {
|
||||
public static boolean startVote(VoteItem vote) {
|
||||
String id = vote.getId();
|
||||
String api = vote.getApi();
|
||||
|
||||
if (PlayMusic.vote != null && PlayMusic.vote.getType() == vote.getType()
|
||||
&& PlayMusic.vote.getApi().equalsIgnoreCase(vote.getApi())
|
||||
&& PlayMusic.vote.getId().equalsIgnoreCase(vote.getId())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (VoteItem item : voteList) {
|
||||
if (item.getId().equalsIgnoreCase(id) && item.getApi().equalsIgnoreCase(api)) {
|
||||
return false;
|
||||
@@ -158,6 +165,16 @@ public class PlayMusic {
|
||||
vote = null;
|
||||
}
|
||||
|
||||
public static List<VoteItem> cloneVoteList() {
|
||||
return new ArrayList<>(voteList);
|
||||
}
|
||||
|
||||
public static void removeVote(VoteItem vote) {
|
||||
voteList.remove(vote);
|
||||
}
|
||||
|
||||
public static boolean fullVoteList() { return voteList.size() >= AllMusic.getConfig().vote.voteListSize; }
|
||||
|
||||
public static void voteTick() {
|
||||
voteTime--;
|
||||
}
|
||||
@@ -231,7 +248,7 @@ public class PlayMusic {
|
||||
if (obj != null) {
|
||||
IMusicApi api = AllMusic.MUSIC_APIS.get(obj.api);
|
||||
if (api != null) {
|
||||
addMusic(obj.sender, obj.id, api, obj.name, obj.isDefault);
|
||||
addMusic(obj.sender, obj.id, api, obj.name, false);
|
||||
}
|
||||
}
|
||||
Thread.sleep(10);
|
||||
|
||||
@@ -76,23 +76,33 @@ public class PlayRuntime {
|
||||
|
||||
private static void checkVoteNext() {
|
||||
VoteItem vote = PlayMusic.getVote();
|
||||
if (vote != null && vote.getType() == VoteItem.VoteType.NEXT
|
||||
&& vote.getApi().equalsIgnoreCase(PlayMusic.nowPlayMusic.getApi())
|
||||
&& vote.getId().equalsIgnoreCase(PlayMusic.nowPlayMusic.getId())) {
|
||||
if (vote != null && vote.getType() == VoteItem.VoteType.NEXT && vote.like(PlayMusic.nowPlayMusic)) {
|
||||
AllMusic.side.broadcastInTask(AllMusic.getMessage().vote.cancel1);
|
||||
PlayMusic.removeVote();
|
||||
}
|
||||
|
||||
for (VoteItem item : PlayMusic.cloneVoteList()) {
|
||||
if (item.getType() == VoteItem.VoteType.NEXT && item.like(PlayMusic.nowPlayMusic)) {
|
||||
PlayMusic.removeVote(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void checkVotePush() {
|
||||
VoteItem vote = PlayMusic.getVote();
|
||||
SongInfoObj next = PlayMusic.getNextMusic();
|
||||
if (vote != null && next != null) {
|
||||
if (vote.getType() == VoteItem.VoteType.PUSH
|
||||
&& vote.getId().equalsIgnoreCase(next.getId())
|
||||
&& vote.getApi().equalsIgnoreCase(next.getApi())) {
|
||||
PlayMusic.removeVote();
|
||||
AllMusic.side.broadcastInTask(AllMusic.getMessage().push.cancel2);
|
||||
if (next != null) {
|
||||
if (vote != null) {
|
||||
if (vote.getType() == VoteItem.VoteType.PUSH && vote.like(next)) {
|
||||
PlayMusic.removeVote();
|
||||
AllMusic.side.broadcastInTask(AllMusic.getMessage().push.cancel2);
|
||||
}
|
||||
}
|
||||
|
||||
for (VoteItem item : PlayMusic.cloneVoteList()) {
|
||||
if (item.getType() == VoteItem.VoteType.PUSH && item.like(next)) {
|
||||
PlayMusic.removeVote(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.coloryr.allmusic.server.core.music;
|
||||
|
||||
import com.coloryr.allmusic.server.core.objs.music.SongInfoObj;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -37,4 +39,9 @@ public class VoteItem {
|
||||
this.type = type;
|
||||
this.voteSender = voteSender;
|
||||
}
|
||||
|
||||
public boolean like(SongInfoObj info) {
|
||||
return api.equalsIgnoreCase(info.getApi())
|
||||
&& id.equalsIgnoreCase(info.getId());
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ public class VoteObj {
|
||||
public String err3;
|
||||
public String err4;
|
||||
public String err5;
|
||||
public String err6;
|
||||
public String cancel;
|
||||
public String cancel1;
|
||||
public String list;
|
||||
@@ -53,6 +54,8 @@ public class VoteObj {
|
||||
return true;
|
||||
if (err5 == null)
|
||||
return true;
|
||||
if (err6 == null)
|
||||
return true;
|
||||
if (cancel == null)
|
||||
return true;
|
||||
if (cancel1 == null)
|
||||
@@ -89,6 +92,8 @@ public class VoteObj {
|
||||
err4 = "<light_purple>[AllMusic]<red>当前没有进行中的投票";
|
||||
if (err5 == null)
|
||||
err5 = "<light_purple>[AllMusic]<red>你已经通过了当前投票";
|
||||
if (err6 == null)
|
||||
err6 = "<light_purple>[AllMusic]<red>投票队列已满,无法发起投票";
|
||||
if (next == null)
|
||||
next = "<light_purple>[AllMusic]<yellow>已切换到播放下一首歌";
|
||||
if (cancel == null)
|
||||
|
||||
-4
@@ -21,10 +21,6 @@ public class PlayerAddMusicObj {
|
||||
* 参数
|
||||
*/
|
||||
public String[] args;
|
||||
/**
|
||||
* 是否是默认点歌方式
|
||||
*/
|
||||
public boolean isDefault;
|
||||
/**
|
||||
* 歌曲Url
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.coloryr.allmusic.codec.CommandType;
|
||||
import com.coloryr.allmusic.codec.HudPosObj;
|
||||
import com.coloryr.allmusic.codec.MusicPack;
|
||||
import com.coloryr.allmusic.server.core.AllMusic;
|
||||
import com.coloryr.allmusic.server.core.IMusicApi;
|
||||
import com.coloryr.allmusic.server.core.music.PlayMusic;
|
||||
import com.coloryr.allmusic.server.core.objs.music.PlayerAddMusicObj;
|
||||
import com.coloryr.allmusic.server.core.objs.music.SongInfoObj;
|
||||
@@ -154,7 +155,13 @@ public abstract class BaseSide {
|
||||
* 重载
|
||||
*/
|
||||
public final void reload() {
|
||||
AllMusic.init(getFolder());
|
||||
File basePath = getFolder();
|
||||
|
||||
AllMusic.init(basePath);
|
||||
|
||||
for (IMusicApi api : AllMusic.MUSIC_APIS.values()) {
|
||||
api.reload(basePath);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.coloryr.allmusic.server.core.IMusicApi;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.ArrayList;
|
||||
@@ -12,8 +13,11 @@ import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.zip.ZipEntry;
|
||||
|
||||
public class MusicApiLoader {
|
||||
private static final byte VERSION = '2';
|
||||
|
||||
public static List<IMusicApi> loadFromDirectory(File dir) {
|
||||
List<IMusicApi> instances = new ArrayList<>();
|
||||
if (!dir.exists() || !dir.isDirectory()) {
|
||||
@@ -34,6 +38,23 @@ public class MusicApiLoader {
|
||||
List<IMusicApi> instances = new ArrayList<>();
|
||||
|
||||
try (JarFile jar = new JarFile(jarFile)) {
|
||||
ZipEntry entry1 = jar.getEntry("version");
|
||||
|
||||
if (entry1 == null) {
|
||||
AllMusic.log.data("<light_purple>[AllMusic]<red>旧版API,跳过加载:" + jarFile.getName());
|
||||
return instances;
|
||||
}
|
||||
|
||||
InputStream stream = jar.getInputStream(entry1);
|
||||
int size = stream.available();
|
||||
byte[] temp = new byte[size];
|
||||
stream.read(temp);
|
||||
|
||||
if (temp[0] != VERSION) {
|
||||
AllMusic.log.data("<light_purple>[AllMusic]<red>旧版API,跳过加载:" + jarFile.getName());
|
||||
return instances;
|
||||
}
|
||||
|
||||
Enumeration<JarEntry> entries = jar.entries();
|
||||
List<String> classNames = new ArrayList<>();
|
||||
|
||||
|
||||
Reference in new issue
Block a user