diff --git a/libmsc32.so b/libmsc32.so
deleted file mode 100644
index 81caa53..0000000
Binary files a/libmsc32.so and /dev/null differ
diff --git a/libmsc64.so b/libmsc64.so
deleted file mode 100644
index be16c26..0000000
Binary files a/libmsc64.so and /dev/null differ
diff --git a/libs/Msc.jar b/libs/Msc.jar
deleted file mode 100644
index 5dc23e9..0000000
Binary files a/libs/Msc.jar and /dev/null differ
diff --git a/libs/json-jena-1.0.jar b/libs/json-jena-1.0.jar
deleted file mode 100644
index 92b6be2..0000000
Binary files a/libs/json-jena-1.0.jar and /dev/null differ
diff --git a/msc32.dll b/msc32.dll
deleted file mode 100644
index 6e01fc4..0000000
Binary files a/msc32.dll and /dev/null differ
diff --git a/msc64.dll b/msc64.dll
deleted file mode 100644
index 1005350..0000000
Binary files a/msc64.dll and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 537f6da..79c1c74 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,6 @@
1.8
- 1.4.10
@@ -96,77 +95,19 @@
aliyun-sdk-oss
3.8.0
-
- net.jthink
- jaudiotagger
- 2.2.3
-
-
- com.ealva
- ealvatag
- 0.4.3
-
-
- net.mamoe
- mirai-core-jvm
- 2.0.0-dev-2
-
-
- org.jetbrains.kotlin
- kotlin-stdlib
- ${kotlin.version}
-
+
org.xerial
sqlite-jdbc
3.28.0
-
- net.bramp.ffmpeg
- ffmpeg
- 0.6.2
-
-
- com.iflytek
- msc
- 4.1
- system
- ${project.basedir}/libs/Msc.jar
-
-
- com.iflytek
- json
- 4.1
- system
- ${project.basedir}/libs/json-jena-1.0.jar
-
+
${project.basedir}/src/main/java
${project.basedir}/src/test/java
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
-
- compile
-
- compile
-
-
-
-
- test-compile
-
- test-compile
-
-
-
-
org.springframework.boot
spring-boot-maven-plugin
diff --git a/src/main/java/com/yutou/tools/ToolsApplication.java b/src/main/java/com/yutou/tools/ToolsApplication.java
index 591a6b4..9c599c9 100644
--- a/src/main/java/com/yutou/tools/ToolsApplication.java
+++ b/src/main/java/com/yutou/tools/ToolsApplication.java
@@ -1,22 +1,14 @@
package com.yutou.tools;
-import com.yutou.tools.home.nas.MusicController;
-import com.yutou.tools.utils.ConfigTools;
-import com.yutou.tools.utils.QQBotManager;
-import com.yutou.tools.utils.RedisTools;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ToolsApplication {
- public static final String version="1.0.18";
+ public static final String version="1.1.0";
public static void main(String[] args) {
- System.out.println("当前版本号:"+version);
+ System.out.println("当前版本号:" + version);
SpringApplication.run(ToolsApplication.class, args);
- MusicController.defaultMusicPath = (String) ConfigTools.load(ConfigTools.CONFIG, "musicDir");
- RedisTools.initRedisPoolSub();
- QQBotManager.getInstance();
}
-
}
diff --git a/src/main/java/com/yutou/tools/bangumi/BangumiTools.java b/src/main/java/com/yutou/tools/bangumi/BangumiTools.java
deleted file mode 100644
index ec7a1fc..0000000
--- a/src/main/java/com/yutou/tools/bangumi/BangumiTools.java
+++ /dev/null
@@ -1,330 +0,0 @@
-package com.yutou.tools.bangumi;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.yutou.tools.utils.HttpTools;
-import com.yutou.tools.utils.RedisTools;
-import com.yutou.tools.utils.Tools;
-import org.springframework.util.StringUtils;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-public class BangumiTools {
- private static final String url = "http://api.bgm.tv/";
- private static final String toDayBangumi = url + "calendar";
- private static final String BangumiInfo = url + "/subject/%s?responseGroup=large";
- private static final String SearchBangumi = url + "/search/subject/%s?responseGroup=large";
-
- /**
- * 获取番剧列表
- *
- * @param day 周几,-1为全部,非1~7范围则为当天
- * @return 当日数据
- */
- public static JSONObject getBangumi(int day) {
- String str = HttpTools.get(toDayBangumi);
- JSONArray main = JSONArray.parseArray(str);
- if (day == -1) {
- JSONObject json = new JSONObject();
- json.put("bangumi", main);
- return json;
- }
- if (day < 1 || day > 7) {
- Calendar calendar = Calendar.getInstance();
- calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
- calendar.setFirstDayOfWeek(Calendar.MONDAY);
- calendar.setTime(new Date());
- day = calendar.get(Calendar.DAY_OF_WEEK) - 1;
- if (day == 0) {
- day = 7;
- }
- }
- if (main != null)
- for (Object o : main) {
- JSONObject json = (JSONObject) o;
- if (json.getJSONObject("weekday").getInteger("id") == day) {
- return json;
- }
- }
- return null;
- }
-
- /**
- * 获取番剧详细信息
- *
- * @param id 剧集id
- * @return 详细信息
- */
- public static JSONObject getBangumiInfo(int id) {
- String str = HttpTools.get(String.format(BangumiInfo, id + ""));
- return JSONObject.parseObject(str);
- }
-
- /**
- * 搜索番剧
- *
- * @param key 关键词
- * @return 详细信息
- */
- public static JSONObject search(String key) {
- String str = HttpTools.get(String.format(SearchBangumi, key));
- return JSONObject.parseObject(str);
- }
-
- /**
- * 获取下一集播放日期
- *
- * @param id 番剧id
- * @return 日期
- */
- public static String getPlayNextTime(int id) {
- JSONObject info = getBangumiInfo(id);
- JSONArray eps = info.getJSONArray("eps");
- String toDayTime = Tools.getToDayTime();
- for (Object o : eps) {
- JSONObject ep = (JSONObject) o;
- String time = ep.getString("airdate");
- try {
- if (new SimpleDateFormat("yyyy-MM-dd").parse(time).getTime() >=
- new SimpleDateFormat("yyyy-MM-dd").parse(toDayTime).getTime()) {
- return time;
- }
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- return null;
- }
-
- /**
- * 格式化字符串输出番剧详细信息
- *
- * @param id 番剧id
- * @return 详细内容
- */
- public static String reportBangumiInfo(int id) {
- JSONObject json = getBangumiInfo(id);
- if(json.containsKey("code")){
- return json.getString("error");
- }
- JSONArray eps = json.getJSONArray("eps");
- JSONArray crts = json.getJSONArray("crt");
- JSONArray staffs = json.getJSONArray("staff");
- StringBuilder builder = new StringBuilder();
- builder.append("").append("\n");
- builder.append("标题:").append(json.getString("name_cn")).append("\n");
- builder.append("日文标题:").append(json.getString("name")).append("\n");
- builder.append("首播时间:").append(json.getString("air_date")).append("\n");
- builder.append("每周").append(json.getInteger("air_weekday")).append("放送").append("\n");
- builder.append("Bangumi地址:").append(json.getString("url")).append("\n");
- builder.append("Bangumi评分:").append(json.getJSONObject("rating").getFloat("score")).append("\n");
- builder.append("预计放送集数:").append(json.getInteger("eps_count")).append("\n");
- if (eps != null) {
- builder.append("已放送集:").append("\n");
- for (Object o : eps) {
- JSONObject ep = (JSONObject) o;
- if (ep.getString("status").equals("Air")) {
- builder.append("· 第").append(ep.getInteger("sort")).append("话:");
- builder.append(ep.getString("name"));
- builder.append("[").append(ep.getString("name_cn")).append("]").append("\n");
- builder.append("播放日期:").append(ep.getString("airdate")).append(";\n");
- builder.append("播放时长:").append(ep.getString("duration")).append(";\n");
- builder.append("单集介绍:").append(ep.getString("desc"));
- builder.append("\n\n");
- } else {
- builder.append("下一话:");
- builder.append(" 第").append(ep.getInteger("sort")).append("话:");
- builder.append("播放日期:").append(ep.getString("airdate")).append("\n\n");
- break;
- }
- }
- }
- if (crts != null) {
- builder.append("角色介绍:").append("\n");
- for (Object o : crts) {
- JSONObject crt = (JSONObject) o;
- JSONObject info = crt.getJSONObject("info");
- builder.append(crt.getString("role_name")).append(":");
- builder.append(crt.getString("name"));
- builder.append("(").append(crt.getString("name_cn")).append(")").append(" ");
- builder.append("CV:").append(crt.getJSONArray("actors").getJSONObject(0).getString("name"));
- builder.append("(").append(info.getString("gender")).append(")");
- builder.append("\n");
- }
- }
- Map> map = new HashMap<>();
- for (Object o : staffs) {
- JSONObject staff = (JSONObject) o;
- for (Object jobs : staff.getJSONArray("jobs")) {
- String job = (String) jobs;
- List list;
- if (!map.containsKey(job)) {
- list = new ArrayList<>();
- } else {
- list = map.get(job);
- }
- list.add(staff);
- map.put(job, list);
- }
- }
- if (!map.isEmpty()) {
- builder.append("staff:").append("\n");
- for (String key : map.keySet()) {
- builder.append(key).append(":");
- for (JSONObject staff : map.get(key)) {
- builder.append(staff.getString("name_cn"));
- builder.append("(").append(staff.getString("name")).append(")");
- builder.append("、");
- }
- builder.append("\n");
- }
- }
- return builder.toString();
- }
-
- /**
- * 格式化输出新番列表
- * @return 新番信息
- */
- public static String reportBangumiList(){
- try {
- JSONObject json=getBangumi(-1);
- StringBuilder builder=new StringBuilder();
- assert json != null;
- JSONArray array=json.getJSONArray("bangumi");
- for (Object o : array) {
- JSONObject data= (JSONObject) o;
- JSONObject weekday=data.getJSONObject("weekday");
- JSONArray items=data.getJSONArray("items");
- builder.append(weekday.getString("cn")).append("(").append(weekday.getString("ja")).append(")");
- builder.append(":").append("\n");
- reportBangumi(builder, items,false);
- builder.append("\n");
- }
- return builder.toString();
- }catch (Exception e){
- e.printStackTrace();
- return e.getMessage();
- }
- }
-
- private static void reportBangumi(StringBuilder builder, JSONArray items,boolean reportEp) {
- int epIndex = 0;
- String epName = "N/A";
- for (Object oj : items) {
- JSONObject item = (JSONObject) oj;
- builder.append("[").append(item.getInteger("id")).append("]");
- builder.append(StringUtils.isEmpty(item.getString("name_cn"))
- ?item.getString("name"):item.getString("name_cn"));
- if(!reportEp){
- builder.append("\n");
- continue;
- }
- JSONObject info=getBangumiInfo(item.getInteger("id"));
- if(info.get("eps")==null){
- continue;
- }
- JSONArray eps = info.getJSONArray("eps");
- for (Object oe : eps) {
- JSONObject ep = (JSONObject) oe;
- if (ep.getString("status").equals("Air")) {
- epIndex = ep.getInteger("sort");
- epName = ep.getString("name");
- } else {
- break;
- }
- }
- builder.append(" 第").append(epIndex).append("话:");
- builder.append(epName);
- builder.append("\n");
- }
- }
-
- /**
- * 格式化字符串输出今日播放番剧列表
- *
- * @return 番剧列表
- */
- public static String reportToDayBangumi() {
- String toDayTime = Tools.getToDayTime();
- if (!toDayTime.equals(RedisTools.get("reportToDayBangumi"))) {
- RedisTools.set("reportToDayBangumi", toDayTime);
- StringBuilder builder = new StringBuilder();
- JSONObject toDay = getBangumi(0);
- if (toDay == null) {
- builder.append("今天没有任何番剧放送~");
- } else {
- JSONObject weekday = toDay.getJSONObject("weekday");
- JSONArray items = toDay.getJSONArray("items");
- builder.append("今日 ").append(weekday.get("cn")).append("(").append(weekday.get("ja")).append(")");
- builder.append(" 放送列表:").append("\n");
- reportBangumi(builder, items,true);
- }
- RedisTools.set("toDayBangumi", builder.toString());
- return builder.toString();
- } else {
- return RedisTools.get("toDayBangumi");
- }
- }
-
- /**
- * 格式化字符串输出搜索动画
- *
- * @param key 关键词
- * @return 详细内容
- */
- public static String reportSearchBangumi(String key) {
- JSONObject main = search(key);
- if (main.getInteger("results") > 0) {
- StringBuilder builder = new StringBuilder();
- List list = main.getJSONArray("list").toJavaList(JSONObject.class);
- Collections.reverse(list);
- for (Object items : list) {
- JSONObject item = (JSONObject) items;
- builder.append("标题:").append(item.getString("name_cn")).append("\n");
- builder.append("日文标题:").append(item.getString("name")).append("\n");
- String type;
- switch (item.getInteger("type")) {
- case 1:
- type = "书籍";
- break;
- case 2:
- type = "动画";
- break;
- case 3:
- type = "音乐";
- break;
- case 4:
- type = "游戏";
- break;
- case 6:
- type = "真人剧(Real)";
- break;
- default:
- type = item.getInteger("type") + "";
- }
- builder.append("类型:").append(type).append("\n");
- builder.append("id:").append(item.getInteger("id")).append("\n");
- if (item.containsKey("rating"))
- builder.append("Bangumi评分:").append(item.getJSONObject("rating").getFloat("score")).append("\n");
- builder.append("首播时间:").append(item.getString("air_date")).append("\n");
- builder.append("每周 ").append(item.getInteger("air_weekday")).append(" 放送").append("\n");
- builder.append("放送集数:").append(item.getInteger("eps")).append("\n");
- builder.append("Bangumi地址:").append(item.getString("url")).append("\n");
- builder.append("介绍:").append(item.getString("summary")).append("\n");
- builder.append("\n").append("\n");
- }
- return builder.toString();
- } else {
- return "搜索不到任何内容:" + key;
- }
- }
-
- public static void main(String[] args) {
- String str = reportBangumiList();
- System.out.println(str);
-
- }
-}
diff --git a/src/main/java/com/yutou/tools/home/nas/MusicController.java b/src/main/java/com/yutou/tools/home/nas/MusicController.java
deleted file mode 100644
index 6106341..0000000
--- a/src/main/java/com/yutou/tools/home/nas/MusicController.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package com.yutou.tools.home.nas;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.yutou.tools.mybatis.model.MusicData;
-import com.yutou.tools.nas.UpdateIp;
-import com.yutou.tools.utils.ConfigTools;
-import com.yutou.tools.utils.MusicTools;
-import com.yutou.tools.utils.Tools;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import java.io.File;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.Base64;
-import java.util.List;
-
-@Controller
-@RequestMapping("/nas/music/")
-public class MusicController {
-
- public static String defaultMusicPath = "/media/yutou/4t/public/音乐";
- @Resource
- MusicTools musicTools;
-
- @RequestMapping("all.do")
- @ResponseBody
- public String getAllMusicList() {
- JSONObject json = new JSONObject();
- JSONObject data = new JSONObject();
- json.put("code", 0);
- json.put("scan", musicTools.isScan());
- json.put("size", musicTools.getLength());
- json.put("data", JSONArray.toJSON(musicTools.getMusicList()));
- return json.toJSONString();
- }
-
- @RequestMapping("list.do")
- @ResponseBody
- public String getMusicListOfPath(@RequestBody JSONObject body) {
- String path = body.getString("path");
- boolean type = body.containsKey("type") ? body.getBoolean("type") : false;
- System.out.println("接收到地址:" + path);
- if (StringUtils.isEmpty(path)
- || path.equals("root")
- || !path.contains(defaultMusicPath)
- ) {
- path = defaultMusicPath;
- }
-
- //path=path.replace(defaultMusicPath+File.separator,"");
- JSONObject json = new JSONObject();
- json.put("code", 0);
- json.put("scan", musicTools.isScan());
- json.put("size", musicTools.getLength());
- json.put("data", JSONArray.toJSON(musicTools.getPath(path, type)));
- return json.toJSONString();
- }
-
- @ResponseBody
- @RequestMapping("getAlbum.do")
- public String getAlbum(@RequestBody JSONObject body) {
- String album = body.getString("album");
- JSONObject json = new JSONObject();
- json.put("code", 0);
- if (StringUtils.isEmpty(album)) {
- json.put("data", JSONArray.toJSON(musicTools.getAllAlbum()));
- } else {
- json.put("data", JSONArray.toJSON(musicTools.selectAlbum(album)));
- }
- return json.toJSONString();
- }
-
- @ResponseBody
- @RequestMapping("getArtist.do")
- public String getArtist(@RequestBody JSONObject body) {
- String artist = body.getString("artist");
- JSONObject json = new JSONObject();
- json.put("code", 0);
- if (StringUtils.isEmpty(artist)) {
- json.put("data", JSONArray.toJSON(musicTools.getAllArtist()));
- } else {
- json.put("data", JSONArray.toJSON(musicTools.selectArtist(artist)));
- }
- return json.toJSONString();
- }
-
- @RequestMapping("reload.do")
- @ResponseBody
- public String reload() {
- JSONObject json = new JSONObject();
- musicTools.scanMusic();
- json.put("msg", "ok");
- json.put("code", 0);
- return json.toJSONString();
- }
-
- @RequestMapping("find/file.do")
- @ResponseBody
- public String findFile(@RequestBody JSONObject body) {
- String path = body.getString("path");
- if (!path.startsWith(defaultMusicPath)) {
- path = Tools.base64ToString(path);
- }
- JSONObject json = new JSONObject();
- if (StringUtils.isEmpty(path)) {
- json.put("code", -1);
- json.put("msg", "地址为空");
- return json.toJSONString();
- }
- json.put("code", 0);
- json.put("data", musicTools.getMusicData(path));
- return json.toJSONString();
- }
-
- @RequestMapping("getlocalhost.do")
- @ResponseBody
- public String getLocalHost() {
- JSONObject json = new JSONObject();
- if (ConfigTools.load(ConfigTools.CONFIG, "model").equals("dev")) {
- json.put("data", "");
- } else {
- json.put("data", "http://" + UpdateIp.nas_ip);
- }
- json.put("code", 0);
- return json.toJSONString();
- }
-
- @RequestMapping(value = "web/image.do", produces = MediaType.IMAGE_JPEG_VALUE)
- @ResponseBody
- public byte[] getImage(String fileName, String type) {
- JSONObject json = new JSONObject();
- json.put("fileName", fileName);
- if (StringUtils.isEmpty(type)) {
- json.put("type", "file");
- } else {
- json.put("type", type);
- }
- return getImage(json);
- }
-
- @RequestMapping(value = "image.do", produces = MediaType.IMAGE_JPEG_VALUE)
- @ResponseBody
- public byte[] getImage(@RequestBody JSONObject body) {
- String fileName = body.getString("fileName");
- if (!fileName.startsWith(defaultMusicPath)) {
- fileName = Tools.base64ToString(fileName);
- }
- List list = null;
- if (body.getString("type").equals("album")) {
- list = musicTools.selectAlbum(fileName);
- }
- File file;
- if (list != null && !list.isEmpty()) {
- fileName = list.get(0).getFile();
- }
- file = new File(fileName);
- if (file.exists()) {
- try {
- return musicTools.readImage(file.getAbsolutePath());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return null;
- }
-
- @RequestMapping("random.do")
- @ResponseBody
- public String random() {
- List list = musicTools.getMusicList();
- MusicData data = list.get(Tools.randomCommon(0, list.size() - 1, 1)[0]);
- JSONObject json = new JSONObject();
- json.put("code", 0);
- try {
- json.put("data", URLEncoder.encode(getBase64(data.getFile()), "UTF-8"));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- return json.toJSONString();
- }
-
- private String getBase64(String str) {
- return new String(Base64.getEncoder().encode(str.getBytes()));
- }
-
-
- @RequestMapping("play.do")
- public ResponseEntity play(String filePath, String random) {
- String _filePath;
- boolean _random;
- _random = !StringUtils.isEmpty(random) && random.equals("true");
- _filePath = Tools.base64ToString(filePath);
- if (_random) {
- List list = musicTools.getMusicList();
- MusicData data = list.get(Tools.randomCommon(0, list.size() - 1, 1)[0]);
- _filePath = data.getFile();
- }
- File file = new File(_filePath);
- if (file.exists()) {
- return Tools.getFile(file);
- } else {
- return null;
- }
- }
-
-}
diff --git a/src/main/java/com/yutou/tools/home/nas/MusicFavoritesController.java b/src/main/java/com/yutou/tools/home/nas/MusicFavoritesController.java
deleted file mode 100644
index c91377b..0000000
--- a/src/main/java/com/yutou/tools/home/nas/MusicFavoritesController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package com.yutou.tools.home.nas;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.yutou.tools.mybatis.dao.MusicDataDao;
-import com.yutou.tools.mybatis.dao.MusicFavoritesDao;
-import com.yutou.tools.mybatis.dao.MusicFavoritesDirDao;
-import com.yutou.tools.mybatis.model.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.LinkedHashMap;
-import java.util.List;
-
-/**
- * 收藏夹相关
- */
-@Controller
-@RequestMapping("/nas/music/favorite/")
-public class MusicFavoritesController {
- @Resource
- MusicFavoritesDao favoritesDao;
- @Resource
- MusicFavoritesDirDao favoritesDirDao;
- @Resource
- MusicDataDao musicDataDao;
-
- @RequestMapping("dir/add.do")
- @ResponseBody
- public String addFavoriteDir(@RequestBody JSONObject body) {
- String favorite = body.getString("favorite");
- JSONObject json = new JSONObject();
- MusicFavoritesDirExample example = new MusicFavoritesDirExample();
- example.createCriteria().andTitleEqualTo(favorite);
- if (!favoritesDirDao.selectByExample(example).isEmpty()) {
- json.put("code", -1);
- json.put("msg", "已有该收藏夹");
- } else {
- MusicFavoritesDir favoritesDir = new MusicFavoritesDir();
- favoritesDir.setTitle(favorite);
- int ret = favoritesDirDao.insert(favoritesDir);
- json.put("code", ret == 0 ? -1 : 0);
- json.put("msg", ret == 0 ? "添加失败" : "添加成功");
- }
- return json.toJSONString();
- }
-
- @RequestMapping("dir/list.do")
- @ResponseBody
- public String getAllFavoriteDir() {
- JSONObject json = new JSONObject();
- json.put("code", 0);
- List list = favoritesDirDao.selectByExample(new MusicFavoritesDirExample());
- JSONArray array = new JSONArray();
- for (MusicFavoritesDir favoritesDir : list) {
- JSONObject data = new JSONObject();
- data.put("id", favoritesDir.getId());
- data.put("title", favoritesDir.getTitle());
- MusicFavoritesExample example = new MusicFavoritesExample();
- example.createCriteria().andFavoriteidEqualTo(favoritesDir.getId());
- data.put("count", favoritesDao.countByExample(example));
- array.add(data);
- }
- json.put("data", array);
- return json.toJSONString();
- }
-
- @RequestMapping("dir/rename.do")
- @ResponseBody
- public String renameFavoriteDir(@RequestBody JSONObject body) {
- int id = body.getInteger("id");
- String title = body.getString("title");
- JSONObject json = new JSONObject();
- MusicFavoritesDir favoritesDir = favoritesDirDao.selectByPrimaryKey(id);
- if (favoritesDir == null) {
- json.put("code", -1);
- json.put("msg", "没有该收藏夹");
- } else {
- favoritesDir.setTitle(title);
- favoritesDirDao.updateByPrimaryKey(favoritesDir);
- json.put("code", 0);
- json.put("msg", "更新成功");
- }
- return json.toJSONString();
- }
-
- @RequestMapping("add.do")
- @ResponseBody
- public String addFavorite(@RequestBody JSONObject body) {
- JSONObject json = new JSONObject();
- JSONArray array = body.getJSONArray("md5s");
- int fid = body.getInteger("fid");
- if (array == null || fid == -1) {
- json.put("code", -1);
- json.put("msg", "参数异常: " + body);
- return json.toJSONString();
- }
- for (Object md5 : array) {
- MusicFavoritesExample example = new MusicFavoritesExample();
- example.createCriteria().andMusisMd5EqualTo((String) md5);
- if (favoritesDao.countByExample(example) == 0) {
- MusicFavorites favorites = new MusicFavorites();
- favorites.setMusisMd5((String) md5);
- favorites.setFavoriteid(fid);
- favorites.setSubTime(new Date());
- favoritesDao.insert(favorites);
- }
- }
- json.put("code", 0);
- json.put("msg", "添加成功");
- return json.toJSONString();
- }
-
- @RequestMapping("remove.do")
- @ResponseBody
- public String removeFavorite(@RequestBody JSONObject body) {
- JSONArray md5s = body.getJSONArray("data");
- JSONObject json = new JSONObject();
- for (Object md5 : md5s) {
- LinkedHashMap js= (LinkedHashMap) md5;
- MusicFavoritesExample example = new MusicFavoritesExample();
- example.createCriteria().andMusisMd5EqualTo((String) js.get("md5"))
- .andFavoriteidEqualTo((Integer) js.get("fid"));
- favoritesDao.deleteByExample(example);
- }
- json.put("code", 0);
- json.put("msg", "已从收藏夹中移除");
- return json.toJSONString();
- }
-
- @RequestMapping("get.do")
- @ResponseBody
- public String getFavorite(@RequestBody JSONObject body) {
- int fid = body.getInteger("fid");
- JSONObject json = new JSONObject();
- try {
- MusicFavoritesExample example = new MusicFavoritesExample();
- example.createCriteria().andFavoriteidEqualTo(fid);
- List list = favoritesDao.selectByExample(example);
- List dataList = new ArrayList<>();
- for (MusicFavorites favorites : list) {
- MusicDataExample dataExample = new MusicDataExample();
- dataExample.createCriteria().andMd5EqualTo(favorites.getMusisMd5());
- try {
- dataList.add(musicDataDao.selectByExample(dataExample).get(0));
- } catch (Exception ignored) {
- }
- }
- list.clear();
- json.put("code", 0);
- json.put("data", JSONArray.toJSON(dataList));
- } catch (Exception e) {
- e.printStackTrace();
- json.put("code", -1);
- json.put("msg", e.getLocalizedMessage());
- json.put("data", new ArrayList<>());
- }
- return json.toJSONString();
- }
-}
diff --git a/src/main/java/com/yutou/tools/home/nas/QQBot.java b/src/main/java/com/yutou/tools/home/nas/QQBot.java
deleted file mode 100644
index 3d5fcf3..0000000
--- a/src/main/java/com/yutou/tools/home/nas/QQBot.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.yutou.tools.home.nas;
-
-import com.alibaba.fastjson.JSONObject;
-import com.yutou.tools.interfaces.DownloadInterface;
-import com.yutou.tools.utils.OSSTools;
-import com.yutou.tools.utils.QQBotManager;
-import com.yutou.tools.utils.RedisTools;
-import com.yutou.tools.utils.Tools;
-import org.springframework.stereotype.Controller;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
-import redis.clients.jedis.Jedis;
-
-import java.io.File;
-import java.util.Base64;
-import java.util.UUID;
-
-@Controller
-@RequestMapping("/qq/bot")
-public class QQBot {
- @RequestMapping("test.do")
- @ResponseBody
- public String test(){
- return "123";
- }
-
- @RequestMapping("send.do")
- @ResponseBody
- public String send(String msg,String imgUrl){
- JSONObject json=new JSONObject();
- try {
- String ret;
- if(StringUtils.isEmpty(imgUrl)){
- ret= QQBotManager.getInstance().sendMessage(msg);
- }else{
- Tools.download(imgUrl, new DownloadInterface() {
- @Override
- public void onDownload(String file) {
- super.onDownload(file);
- QQBotManager.getInstance().sendMessage(new File(file),msg);
- }
-
- @Override
- public void onError(Exception e) {
- super.onError(e);
- QQBotManager.getInstance().sendMessage(imgUrl+"\n"+msg);
- }
- });
- ret="图片下载中";
- }
- json.put("code",0);
- json.put("msg",ret);
- }catch (Exception e){
- e.printStackTrace();
- json.put("code",-1);
- json.put("msg",e.getMessage());
- }
- return json.toJSONString();
- }
- @RequestMapping("sendAndImg.do")
- @ResponseBody
- public String botMsg(String msg,@RequestParam("file") MultipartFile file){
- JSONObject json=new JSONObject();
- if(file==null){
- json.put("code",-1);
- json.put("msg","图片为空");
- return json.toJSONString();
- }
- String ret;
- try {
- String path = Tools.createFile("qq_image",file, file.getName());
- ret=QQBotManager.getInstance().sendMessage(new File(path),msg);
- } catch (Exception e) {
- e.printStackTrace();
- ret=e.getLocalizedMessage();
- }
- json.put("code",0);
- json.put("msg",ret);
- return json.toJSONString();
- }
-}
diff --git a/src/main/java/com/yutou/tools/home/nas/ToolsController.java b/src/main/java/com/yutou/tools/home/nas/ToolsController.java
deleted file mode 100644
index bcedde5..0000000
--- a/src/main/java/com/yutou/tools/home/nas/ToolsController.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.yutou.tools.home.nas;
-
-import com.yutou.tools.nas.UpdateIp;
-import com.yutou.tools.utils.HttpTools;
-import com.yutou.tools.utils.RedisTools;
-import com.yutou.tools.utils.Tools;
-import org.springframework.stereotype.Controller;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-
-@Controller
-public class ToolsController {
- @ResponseBody
- @RequestMapping("/tools/openpc.do")
- public String open_pc(HttpServletRequest request, String type) {
- if (StringUtils.isEmpty(type)) {
- if (Tools.checkWebLogin(request) == 1) {
- HttpTools.get("http://" + UpdateIp.nas_ip + ":8000/tools/openpc.do?token=zIrsh9TUZP2lfRW753PannG49E7VJvor&type=nas");
- }
- } else {
- if (type.equals("nas")) {
- try {
- Process process = Runtime.getRuntime().exec("wakeonlan 00:D8:61:6F:02:2F");
- RedisTools.processOut(process.getInputStream());
- RedisTools.processOut(process.getErrorStream());
- process.destroy();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return "ok";
- }
-
- @ResponseBody
- @RequestMapping("/tools/server.do")
- public String sendServerManager(String title, String msg) {
- Tools.sendServer(title, msg);
- return "ok";
- }
-}
diff --git a/src/main/java/com/yutou/tools/nas/NasManager.java b/src/main/java/com/yutou/tools/nas/NasManager.java
index 52fe023..b7745d3 100644
--- a/src/main/java/com/yutou/tools/nas/NasManager.java
+++ b/src/main/java/com/yutou/tools/nas/NasManager.java
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yutou.tools.mybatis.dao.NasAdminAddressDao;
import com.yutou.tools.mybatis.model.NasAdminAddress;
import com.yutou.tools.mybatis.model.NasAdminAddressExample;
+import com.yutou.tools.utils.ConfigTools;
import com.yutou.tools.utils.RedisTools;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
@@ -16,7 +17,6 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.List;
@Controller
@@ -28,7 +28,7 @@ public class NasManager {
public String getAdminAddress(HttpServletRequest request){
JSONObject json=new JSONObject();
- String address=RedisTools.get("adminAddress");
+ String address= RedisTools.get("adminAddress");
if(address==null){
json.put("code",-1);
json.put("msg","暂未设置管理后台");
@@ -154,4 +154,13 @@ public class NasManager {
e.printStackTrace();
}
}
+
+ @RequestMapping("/nas/music/getlocalhost.do")
+ @ResponseBody
+ public String getLocalHost() {
+ JSONObject json = new JSONObject();
+ json.put("data", "http://" + UpdateIp.nas_ip);
+ json.put("code", 0);
+ return json.toJSONString();
+ }
}
diff --git a/src/main/java/com/yutou/tools/nas/UpdateIp.java b/src/main/java/com/yutou/tools/nas/UpdateIp.java
index ad9fd36..d3abcaa 100644
--- a/src/main/java/com/yutou/tools/nas/UpdateIp.java
+++ b/src/main/java/com/yutou/tools/nas/UpdateIp.java
@@ -1,15 +1,12 @@
package com.yutou.tools.nas;
import com.alibaba.fastjson.JSONObject;
-import com.yutou.tools.mybatis.dao.UKeyDao;
-import com.yutou.tools.mybatis.model.UKey;
import com.yutou.tools.utils.RedisTools;
import com.yutou.tools.utils.Tools;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
-import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.File;
@@ -61,7 +58,7 @@ public class UpdateIp {
if (testIp != null) {
System.out.println("检测到目标:" + line + " 修改IP " + testIp + " > " + ip);
if(isNas){
- String adminAddress=RedisTools.get("adminAddress");
+ String adminAddress= RedisTools.get("adminAddress");
if(adminAddress!=null) {
JSONObject json=JSONObject.parseObject(adminAddress);
line = "proxy_pass http://" +ip+":"+json.getInteger("port")+"/;";
diff --git a/src/main/java/com/yutou/tools/other/QQAudio.java b/src/main/java/com/yutou/tools/other/QQAudio.java
deleted file mode 100644
index 1409a80..0000000
--- a/src/main/java/com/yutou/tools/other/QQAudio.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.yutou.tools.other;
-
-import com.yutou.tools.utils.AudioTools;
-
-public class QQAudio {
- public static void playText(String text){
- AudioTools.playText(text);
- }
-}
diff --git a/src/main/java/com/yutou/tools/other/QQSetu.java b/src/main/java/com/yutou/tools/other/QQSetu.java
deleted file mode 100644
index 4e2543f..0000000
--- a/src/main/java/com/yutou/tools/other/QQSetu.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.yutou.tools.other;
-
-
-import com.alibaba.fastjson.JSONObject;
-import com.yutou.tools.utils.QQBotManager;
-import com.yutou.tools.utils.RedisTools;
-import com.yutou.tools.utils.Tools;
-import net.mamoe.mirai.event.events.GroupMessageEvent;
-import net.mamoe.mirai.message.data.At;
-import net.mamoe.mirai.message.data.Image;
-import net.mamoe.mirai.message.data.MessageChainBuilder;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Timer;
-import java.util.TimerTask;
-
-public class QQSetu {
- public static void printTodaySetu() {
- String redisKey=Tools.getToDayTime() + "_setu";
- System.out.println("redisKey = " + redisKey);
- String js = RedisTools.get(redisKey, 1);
- if (js != null) {
- JSONObject json = JSONObject.parseObject(js);
- if(json.containsKey("isPrint")&&json.getBoolean("isPrint")){
- return;
- }
- Map groupAverage=new HashMap<>();
- Map groupImage=new HashMap<>();
- JSONObject setu=null;
- for (String id : json.keySet()) {
- String group=json.getJSONObject(id).getJSONObject("info").getLong("group")+"";
- if(groupAverage.containsKey(group)){
- if(groupAverage.get(group)<=json.getJSONObject(id).getFloat("average")){
- groupAverage.put(group,json.getJSONObject(id).getFloat("average"));
- groupImage.put(group,id);
- }
- }else{
- groupAverage.put(group,json.getJSONObject(id).getFloat("average"));
- groupImage.put(group,id);
- }
- }
- for (String id : groupImage.keySet()) {
- setu=json.getJSONObject(groupImage.get(id));
- if(setu!=null){
- json.put("isPrint",true);
- RedisTools.set(1,redisKey,json.toJSONString());
- JSONObject info=setu.getJSONObject("info");
- JSONObject score=setu.getJSONObject("score");
- MessageChainBuilder builder = new MessageChainBuilder();
- builder.append(Image.fromId(info.getString("id")));
- builder.append("本日最佳涩图由").append(new At(info.getLong("sourQQ"))).append("提供\n");
- builder.append("获得分数 ").append(String.valueOf(setu.getFloat("average"))).append("\n");
- builder.append("共有 ").append(String.valueOf(score.getIntValue("userNumber"))).append(" 人参与投票");
- QQBotManager.getInstance().sendMessage(info.getLong("group"),builder);
- }
- }
- }
- }
-
- private boolean isSetu(Image image) {
- String url = Image.queryUrl(image);
- try {
- HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
- int length = connection.getContentLength();
- connection.disconnect();
- if (length > 50000) {
- return true;
- }
- } catch (IOException e) {
- e.printStackTrace();
- return false;
- }
-
- return false;
- }
-
- private void setuBuilder(Image image, GroupMessageEvent event) {
- if (!isSetu(image)) {
- return;
- }
- if (RedisTools.get(event.getGroup().getId()+"setu") != null) {
- printSetu(event.getGroup().getId());
- }
- setuScore.clear();
- JSONObject json = new JSONObject();
- json.put("id", image.getImageId());
- json.put("sourName", event.getSenderName());
- json.put("sourQQ", event.getSender().getId());
- json.put("group", event.getGroup().getId());
- RedisTools.set(event.getGroup().getId()+"setu", json.toJSONString(),6*60);
- if (timer != null) {
- timer.cancel();
- timer = null;
- }
- startTimer(event.getGroup().getId());
- }
-
- private void startTimer(long group) {
- timer = new Timer();
- timer.schedule(new TimerTask() {
- @Override
- public void run() {
- if(!setuScore.isEmpty()){
- printSetu(group);
- }
- timer = null;
- }
- }, 5 * 60 * 1000);
- }
-
- private void printSetu(long group) {
- JSONObject jt = JSONObject.parseObject(RedisTools.get(group+"setu"));
- String id = jt.getString("id");
- float average = 0;
- float max = 0;
- float min = 10;
- float length = 0;
- String maxName = "";
- String minName = "";
- if(setuScore.size()<=1){
- return;
- }
- for (String name : setuScore.keySet()) {
- length += setuScore.get(name);
- average += setuScore.get(name);
- if (setuScore.get(name) > max) {
- max = setuScore.get(name);
- maxName = name.split("\\|")[0];
- }
- if (setuScore.get(name) < min) {
- min = setuScore.get(name);
- minName = name.split("\\|")[0];
- }
- }
- JSONObject score = new JSONObject();
- score.put("max", max);
- score.put("min", min);
- score.put("sum", length);
- score.put("maxName", maxName);
- score.put("minName", minName);
- score.put("userNumber", setuScore.size());
-
- average = average / setuScore.size();
- String builder = "涩图评分:" + average +"\n "+
- "其中最高分由:" + maxName + " 给与:" + max +"\n "+
- "其中最低分由:" + minName + " 给与:" + min;
- QQBotManager.getInstance().sendMessage(group, builder);
- String st = RedisTools.get(Tools.getToDayTime() + "_setu", 1);
- JSONObject json;
- if (st == null) {
- json = new JSONObject();
- } else {
- json = JSONObject.parseObject(st);
- }
- if (!json.containsKey(id)) {
- JSONObject item;
- if (json.containsKey("item")) {
- item = json.getJSONObject("item");
- } else {
- item = new JSONObject();
- }
-
- item.put("score", score);
- item.put("info", jt);
- item.put("average", average);
- json.put(id, item);
- RedisTools.set(1, Tools.getToDayTime() + "_setu", json.toJSONString());
- }
- RedisTools.remove(group+"setu",0);
- setuScore.clear();
- }
- public void setu(String msg, GroupMessageEvent event) {
- if (msg.trim().equals("[图片]")) {
- Image image = (Image) event.getMessage().stream().filter(Image.class::isInstance).findFirst().orElse(null);
- if (image != null) {
- setuBuilder(image, event);
- return;
- }
- }
- try {
- if(msg.trim().length()>3){
- return;
- }
- float i = Float.parseFloat(msg.trim());
- if (i > 0 && i <= 10) {
- String name = event.getSenderName();
- String qq=event.getSender().getId()+"";
- if (!setuScore.containsKey(name)) {
- setuScore.put(name+"|"+qq, i);
- }
- }
- } catch (Exception ignored) {
- }
- }
-
- private Timer timer;
- private static Map setuScore = new HashMap<>();
-}
diff --git a/src/main/java/com/yutou/tools/other/tools.java b/src/main/java/com/yutou/tools/other/tools.java
index d06a9c4..5b9d345 100644
--- a/src/main/java/com/yutou/tools/other/tools.java
+++ b/src/main/java/com/yutou/tools/other/tools.java
@@ -6,13 +6,11 @@ import com.yutou.tools.ToolsApplication;
import com.yutou.tools.mybatis.dao.UKeyDao;
import com.yutou.tools.mybatis.model.UKey;
import com.yutou.tools.mybatis.model.UKeyExample;
-import com.yutou.tools.utils.QQBotManager;
import com.yutou.tools.utils.RedisTools;
import com.yutou.tools.utils.Tools;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
diff --git a/src/main/java/com/yutou/tools/utils/ApplicationInit.java b/src/main/java/com/yutou/tools/utils/ApplicationInit.java
index 0bbe6e6..8e6ce24 100644
--- a/src/main/java/com/yutou/tools/utils/ApplicationInit.java
+++ b/src/main/java/com/yutou/tools/utils/ApplicationInit.java
@@ -1,11 +1,9 @@
package com.yutou.tools.utils;
-import com.yutou.tools.other.QQSetu;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
@@ -16,25 +14,20 @@ import java.util.TimerTask;
*/
@Component
public class ApplicationInit implements ApplicationRunner {
- @Resource
- MusicTools musicTools;
+
@Override
public void run(ApplicationArguments args) throws Exception {
- AudioTools.init();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
String time = new SimpleDateFormat("HH:mm").format(new Date());
switch (time){
case "00:00":
- musicTools.scanMusic();
break;
case "08:00":
case "20:00":
- QQBotManager.getInstance().reportToDayBangumi();
break;
case "23:59":
- QQSetu.printTodaySetu();
break;
}
diff --git a/src/main/java/com/yutou/tools/utils/AudioTools.java b/src/main/java/com/yutou/tools/utils/AudioTools.java
deleted file mode 100644
index 84a8459..0000000
--- a/src/main/java/com/yutou/tools/utils/AudioTools.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.yutou.tools.utils;
-
-import com.iflytek.cloud.speech.*;
-
-public class AudioTools {
- private static boolean init = false;
-
- synchronized static void init() {
- if (init) {
- return;
- }
- SpeechUtility.createUtility(SpeechConstant.APPID + "=601f7f7d");
- SpeechUtility.getUtility().setParameter(SpeechConstant.VOLUME,"100");
- SpeechUtility.getUtility().setParameter(SpeechConstant.LIB_NAME_64,"/media/yutou/4t/public/servier/tools/");
- SpeechUtility.getUtility().setParameter(SpeechConstant.LIB_NAME_32,"/media/yutou/4t/public/servier/tools/");
- init = true;
- System.out.println("讯飞语音已初始化");
- }
-
- public static void playText(String text) {
- SpeechSynthesizer mss = SpeechSynthesizer.createSynthesizer();
- mss.startSpeaking(text, new SynthesizerListener() {
- @Override
- public void onBufferProgress(int progress, int beginPos, int endPos,
- String info) {
- if (progress == 100) {
- mss.destroy();
- }
- }
-
- @Override
- public void onSpeakBegin() {
-
- }
-
- @Override
- public void onSpeakProgress(int i, int i1, int i2) {
-
- }
-
- @Override
- public void onSpeakPaused() {
-
- }
-
- @Override
- public void onSpeakResumed() {
-
- }
-
- @Override
- public void onCompleted(SpeechError speechError) {
- System.out.println(speechError.getErrorDesc() + " code " + speechError.getErrorCode());
- }
-
- @Override
- public void onEvent(int i, int i1, int i2, int i3, Object o, Object o1) {
- }
- });
- }
-
- public static void main(String[] args) {
- init();
- playText("小爱同学,开灯");
- }
-}
diff --git a/src/main/java/com/yutou/tools/utils/HttpTools.java b/src/main/java/com/yutou/tools/utils/HttpTools.java
index 9143643..6d32ca8 100644
--- a/src/main/java/com/yutou/tools/utils/HttpTools.java
+++ b/src/main/java/com/yutou/tools/utils/HttpTools.java
@@ -1,9 +1,7 @@
package com.yutou.tools.utils;
-import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.yutou.tools.utils.Interfaces.NetworkInterface;
-import org.jetbrains.annotations.NotNull;
import java.io.BufferedReader;
import java.io.IOException;
@@ -13,9 +11,6 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
public class HttpTools {
public static String get(String url) {
diff --git a/src/main/java/com/yutou/tools/utils/MusicTools.java b/src/main/java/com/yutou/tools/utils/MusicTools.java
deleted file mode 100644
index b162c1a..0000000
--- a/src/main/java/com/yutou/tools/utils/MusicTools.java
+++ /dev/null
@@ -1,541 +0,0 @@
-package com.yutou.tools.utils;
-
-import com.yutou.tools.home.nas.MusicController;
-import com.yutou.tools.mybatis.dao.MusicDataDao;
-import com.yutou.tools.mybatis.model.MusicData;
-import com.yutou.tools.mybatis.model.MusicDataExample;
-import com.yutou.tools.utils.Interfaces.MusicToolsService;
-import ealvatag.audio.AudioFile;
-import ealvatag.audio.AudioFileIO;
-import ealvatag.audio.AudioHeader;
-import ealvatag.audio.exceptions.CannotReadException;
-import ealvatag.tag.FieldKey;
-import ealvatag.tag.NullTag;
-import ealvatag.tag.Tag;
-import ealvatag.tag.images.NullArtwork;
-import net.bramp.ffmpeg.FFmpeg;
-import net.bramp.ffmpeg.FFprobe;
-import net.bramp.ffmpeg.probe.FFmpegFormat;
-import net.bramp.ffmpeg.probe.FFmpegProbeResult;
-import net.bramp.ffmpeg.probe.FFmpegStream;
-import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-
-import javax.annotation.Resource;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-@Service("musicToolsService")
-public class MusicTools implements MusicToolsService {
- public static final int FIND_TITLE = 1;
- public static final int FIND_ARTIST = 2;
-
- private String musicPath = "/media/yutou/4t/public/音乐";
- private boolean isScan = false;
-
- @Resource
- MusicDataDao musicDataDao;
-
-
- private MusicTools() {
-
- }
-
- @Override
- public void init() {
- musicPath = (String) ConfigTools.load(ConfigTools.CONFIG, "musicDir");
- scanMusic();
- }
-
- @Override
- public void scanMusic() {
- if (isScan) {
- return;
- }
- if(ConfigTools.load(ConfigTools.CONFIG,"musicScan").equals("false")){
- return;
- }
- musicPath = (String) ConfigTools.load(ConfigTools.CONFIG, "musicDir");
- musicDataDao.truncate();
- System.out.println("执行扫描:" + musicPath);
- new Thread(() -> {
- long startTime = System.currentTimeMillis();
- QQBotManager.getInstance().sendMessage("开始扫描音乐夹");
- isScan = true;
- scan(new File(musicPath));
- isScan = false;
- System.out.println("扫描完成");
- QQBotManager.getInstance().sendMessage("音乐扫描完成,共" + getLength() + "首歌,耗时:"
- + (System.currentTimeMillis() - startTime));
- }).start();
- }
-
-
- 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);
- }
- }
- }
- }
-
- public void getPathOrDir(String path, List list) {
- File files = new File(path);
- for (File file : files.listFiles()) {
- if (file.isFile()) {
- list.add(getMetadata(file));
- } else {
- getPathOrDir(file.getAbsolutePath(), list);
- }
- }
- }
-
-
- /**
- * 获取指定目录下的音乐
- *
- * @param path 指定目录
- * @param isDir 是否扫描目录下的所有文件,false则仅为当前目录
- * @return 音乐列表
- */
- @Override
- public List getPath(String path, boolean isDir) {
- List list = new ArrayList<>();
- List main=new ArrayList<>();
- MusicDataExample example = new MusicDataExample();
- String replacement = ConfigTools.load(ConfigTools.CONFIG, "os").equals("windows") ? "\\\\" : "/";
- String tmpPath=path;
- if (isDir) {
- example.createCriteria().andFileLike(tmpPath.replace(File.separator, replacement) + "%");
- main = musicDataDao.selectByExample(example);
- }
- tmpPath=tmpPath.replace(File.separator, replacement)
- .replace("[","\\[")
- .replace("(","\\(")
- .replace(")","\\)")
- .replace("]","\\]");
- main.addAll(musicDataDao.selectByRegexp(tmpPath + replacement + "([^" + replacement + "]+)$"));
-
- if (!path.equals(MusicController.defaultMusicPath) && !path.equals("root")) {
- MusicData t2 = new MusicData();
- t2.setTitle("返回");
- if(main.isEmpty()){
- t2.setFile("root");
- }else {
- MusicData tmp = main.get(0);
- t2.setFile(new File(tmp.getLastdir()).getAbsolutePath());
- }
- System.out.println("查询地址:"+path+" 设置返回地址:"+t2.getFile());
- t2.setIsdir(1);
- list.add(t2);
- }
- getDirList(path, list);
- list.addAll(main);
- return list;
- }
-
- public List getAllAlbum() {
- return musicDataDao.selectAllAlbum();
- }
-
- public List getAllArtist() {
- return musicDataDao.selectAllArtist();
- }
-
- public List selectAlbum(String album) {
- return musicDataDao.selectAlbum(album);
- }
-
- public List selectArtist(String artist) {
- return musicDataDao.selectArtist(artist);
- }
-
- private void getDirList(String path, List list) {
- File file = new File(path);
- for (File listFile : file.listFiles()) {
- if (listFile.isDirectory()) {
- MusicData data = new MusicData();
- data.setTitle(listFile.getName());
- data.setIsdir(1);
- data.setFile(listFile.getAbsolutePath());
- list.add(data);
- }
- }
- }
-
- private void add(File file) {
- MusicData data = getMetadata(file);
- if (data != null) {
- try {
- musicDataDao.insert(data);
- } catch (Exception e) {
- e.printStackTrace();
- QQBotManager.getInstance().sendMessage("音乐文件添加失败:" + data.toString());
- }
-
- }
- }
-
- @Override
- public MusicData getMusicData(String path) {
- MusicDataExample example = new MusicDataExample();
- example.createCriteria().andFileEqualTo(path);
- List list = musicDataDao.selectByExample(example);
- if (list != null && list.size() > 0) {
- return list.get(0);
- }
- return null;
- }
-
-
- public MusicData getMetadata(File file) {
- try {
- if (file.getName().endsWith(".lrc")
- || file.getName().endsWith(".jpg")
- || file.getName().endsWith(".ini")
- || file.getName().endsWith(".png")
- || file.getName().endsWith(".torrent")
- || file.getName().endsWith(".log")
- || file.getName().endsWith(".mkv")
- || file.getName().endsWith(".dff")
- || file.getName().endsWith(".cue")
- || file.getName().endsWith(".m3u")
- ) {
- return null;
- }
- AudioFile audioFile = AudioFileIO.read(file);
- Tag tag = audioFile.getTag().or(NullTag.INSTANCE);
- MusicData data = new MusicData();
- try {
- data.setAlbum(tag.getFirst(FieldKey.ALBUM));
- } catch (Exception e) {
- }
- try {
- data.setArtist(tag.getFirst(FieldKey.ARTIST));
- } catch (Exception e) {
- }
- try {
- data.setArtistSort(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.setDiscNo(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.getAbsolutePath());
- data.setIsdir(file.isDirectory() ? 1 : 0);
- data.setLastdir(file.getParentFile().getParent());
-
- AudioHeader header = audioFile.getAudioHeader();
- data.setBitrate(header.getBitRate());
- data.setSamplerate(header.getSampleRate());
- data.setNoofsamples(header.getNoOfSamples());
- data.setChannelcount(header.getChannelCount());
- data.setEncodingtype(header.getEncodingType());
- data.setDurationasdouble(header.getDurationAsDouble());
- data.setLossless(header.isLossless() ? 1 : 0);
- data.setVariablebitrate(header.isVariableBitRate() ? 1 : 0);
- try {
- data.setMd5(header.getClass().getMethod("getMd5").invoke(header).toString());
- } catch (Exception ignored) {
- data.setMd5(Tools.getFileMD5(file));
- }
- return data;
- } catch (CannotReadException e) {
- return getMetadata_jthink(file);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- public MusicData getMetadata_jthink(File file) {
- try {
- org.jaudiotagger.audio.AudioFile audioFile = org.jaudiotagger.audio.AudioFileIO.read(file);
- org.jaudiotagger.tag.Tag tag = audioFile.getTag();
- MusicData data = new MusicData();
- try {
- data.setAlbum(tag.getFirst(org.jaudiotagger.tag.FieldKey.ALBUM));
- } catch (Exception ignored) {
- }
- try {
- data.setArtist(tag.getFirst(org.jaudiotagger.tag.FieldKey.ARTIST));
- } catch (Exception ignored) {
- }
- try {
- data.setArtistSort(tag.getFirst(org.jaudiotagger.tag.FieldKey.ARTIST_SORT));
- } catch (Exception ignored) {
- }
- try {
- data.setComment(tag.getFirst(org.jaudiotagger.tag.FieldKey.COMMENT));
- } catch (Exception ignored) {
- }
- try {
- data.setComposer(tag.getFirst(org.jaudiotagger.tag.FieldKey.COMPOSER));
- } catch (Exception ignored) {
- }
- try {
- data.setDiscNo(tag.getFirst(org.jaudiotagger.tag.FieldKey.DISC_NO));
- } catch (Exception ignored) {
- }
- try {
- if (StringUtils.isEmpty(tag.getFirst(org.jaudiotagger.tag.FieldKey.TITLE))) {
- data.setTitle(file.getName());
- } else {
- data.setTitle(tag.getFirst(org.jaudiotagger.tag.FieldKey.TITLE));
- }
- } catch (Exception e) {
- data.setTitle(file.getName());
- }
- try {
- data.setTrack(tag.getFirst(org.jaudiotagger.tag.FieldKey.TRACK));
- } catch (Exception ignored) {
- }
- try {
- data.setYear(tag.getFirst(org.jaudiotagger.tag.FieldKey.YEAR));
- } catch (Exception ignored) {
- }
- data.setFile(file.getAbsolutePath());
- data.setIsdir(file.isDirectory() ? 1 : 0);
- data.setLastdir(file.getParentFile().getParent());
-
- org.jaudiotagger.audio.AudioHeader header = audioFile.getAudioHeader();
- data.setBitrate(Integer.parseInt(header.getBitRate()));
- data.setSamplerate(Integer.parseInt(header.getSampleRate()));
- data.setNoofsamples(Long.parseLong(header.getSampleRateAsNumber() + ""));
- data.setChannelcount(Integer.parseInt(header.getChannels()));
- data.setEncodingtype(header.getEncodingType() + "");
- data.setDurationasdouble(Double.parseDouble(header.getTrackLength() + ""));
- data.setLossless(header.isLossless() ? 1 : 0);
- data.setVariablebitrate(header.isVariableBitRate() ? 1 : 0);
- try {
- data.setMd5(header.getClass().getMethod("getMd5").invoke(header).toString());
- } catch (Exception ignored) {
- data.setMd5(Tools.getFileMD5(file));
- }
- return data;
- } catch (Exception e) {
- return getMetadataOfFFmpeg(file);
- }
- }
-
- private MusicData getMetadataOfFFmpeg(File file) {
- MusicData data;
- try {
- data = new MusicData();
- FFprobe fFprobe = new FFprobe((String) ConfigTools.load(ConfigTools.CONFIG, "ffprobe"));
- FFmpegProbeResult result = fFprobe.probe(file.getAbsolutePath());
- FFmpegFormat format = result.getFormat();
- FFmpegStream stream = null;
- for (FFmpegStream tmp : result.getStreams()) {
- if (tmp.index == 0) {
- stream = tmp;
- }
- }
- Map tag = format.tags;
- data.setTitle(getTitle(tag));
- data.setAlbum(getAlbum(tag));
- data.setArtist(getArtist(tag));
- data.setDiscNo(tag.get("disc") == null ? tag.get("disc".toUpperCase()) : tag.get("disc"));
- data.setTrack(tag.get("track") == null ? tag.get("track".toUpperCase()) : tag.get("track"));
- data.setYear(getYear(tag));
- data.setArtistSort(tag.get("album_artist") == null ? tag.get("album_artist".toUpperCase()) : tag.get("album_artist"));
- data.setDurationasdouble(format.duration);
- data.setBitrate((int) (format.bit_rate / 1000));
- if (stream != null) {
- if (data.getBitrate() == 0)
- data.setBitrate((int) (stream.bit_rate / 1000));
- data.setChannelcount(stream.channels);
- data.setLossless(0);
- data.setSamplerate(stream.sample_rate);
- data.setNoofsamples(stream.duration_ts);
- }
- data.setEncodingtype(format.format_long_name);
- data.setComment("");
- data.setComposer("");
- data.setVariablebitrate(0);
- data.setFile(file.getAbsolutePath());
- data.setLastdir(file.getParentFile().getParent());
- data.setIsdir(file.isDirectory() ? 1 : 0);
- if (data.getYear() == null) {
- data.setYear("0000");
- }
- data.setMd5(Tools.getFileMD5(file));
- } catch (Exception e) {
- e.printStackTrace();
- data = new MusicData();
- data.setTitle(file.getName());
- data.setFile(file.getAbsolutePath());
- data.setIsdir(file.isDirectory() ? 1 : 0);
- data.setLastdir(file.getParentFile().getParent());
- data.setMd5(Tools.getFileMD5(file));
- QQBotManager.getInstance().sendMessage("添加音乐文件失败:\n"+data.toString()+"\n"+Tools.getExceptionString(e));
- }
- return data;
- }
-
- private String getTitle(Map tag) {
- String title = tag.get("title");
- if (StringUtils.isEmpty(title)) {
- title = tag.get("TITLE");
- if (StringUtils.isEmpty(title)) {
- title = tag.get("Title");
- }
- }
- return title;
- }
-
- private String getArtist(Map tag) {
- String title = tag.get("artist");
- if (StringUtils.isEmpty(title)) {
- title = tag.get("ARTIST");
- if (StringUtils.isEmpty(title)) {
- title = tag.get("Artist");
- }
- }
- return title;
- }
-
- private String getAlbum(Map tag) {
- String title = tag.get("album");
- if (StringUtils.isEmpty(title)) {
- title = tag.get("ALBUM");
- if (StringUtils.isEmpty(title)) {
- title = tag.get("Album");
- }
- }
- return title;
- }
-
- private String getYear(Map tag) {
- String title = tag.get("year");
- if (StringUtils.isEmpty(title)) {
- title = tag.get("YEAR");
- if (StringUtils.isEmpty(title)) {
- title = tag.get("Year");
- }
- }
- return title;
- }
-
- @Override
- public List findOfTitle(String title) {
- return find(title, FIND_TITLE);
- }
-
- @Override
- public List findOfArtist(String by) {
- return find(by, FIND_ARTIST);
- }
-
- public List getMusicList() {
- return musicDataDao.selectByExample(new MusicDataExample());
- }
-
- @Override
- public int getLength() {
- return musicDataDao.selectByExample(new MusicDataExample()).size();
- }
-
- @Override
- public boolean isScan() {
- return isScan;
- }
-
- private List find(String title, int type) {
- List list;
- MusicDataExample example = new MusicDataExample();
- if (type == FIND_TITLE) {
- example.createCriteria().andTitleEqualTo(title);
- } else if (type == FIND_ARTIST) {
- example.createCriteria().andArtistEqualTo(title);
- }
- list = musicDataDao.selectByExample(example);
-
- return list;
- }
-
- @Override
- public String getMusicPath() {
- return musicPath;
- }
-
- public void setMusicPath(String musicPath) {
- this.musicPath = musicPath;
- }
-
- @Override
- public byte[] readImage(String path) throws Exception {
- File file = new File(path);
- AudioFile audioFile = null;
- audioFile = AudioFileIO.read(file);
- Tag tag = audioFile.getTag().or(NullTag.INSTANCE);
- byte[] bytes = tag.getFirstArtwork().or(NullArtwork.INSTANCE).getBinaryData();
- if (bytes.length == 0) {
- return readImageFile(file);
- }
- return bytes;
- }
-
- private byte[] readImageFile(File file) throws Exception {
- String path = file.getAbsolutePath().replace(file.getName(), "");
- File img = new File(path, "cover.jpg");
- if (!img.exists()) {
- img = new File(path, "Cover.jpg");
- if (!img.exists()) {
- img = new File(path, "COVER.jpg");
- if (!img.exists()) {
- throw new NullPointerException("没有cover文件");
- }
- }
- }
-
- return Files.readAllBytes(Paths.get(img.getAbsolutePath()));
- }
-
- public static void main(String[] args) throws Exception {
- File file = new File("Z:\\音乐\\总之就是非常酸\\ED\\カノエラナ - 月と星空\\カノエラナ.wav");
- file = new File("Z:\\音乐\\终将成为你\\[OP]君にふれて\\rise.flac");
- // file = new File("Z:\\音乐\\周董\\2012 十二新作\\03 公公偏头痛.ape");
- System.out.println(new MusicTools().getMetadataOfFFmpeg(file));
- }
-
-
-}
diff --git a/src/main/java/com/yutou/tools/utils/QQBotManager.java b/src/main/java/com/yutou/tools/utils/QQBotManager.java
deleted file mode 100644
index 2307abf..0000000
--- a/src/main/java/com/yutou/tools/utils/QQBotManager.java
+++ /dev/null
@@ -1,340 +0,0 @@
-package com.yutou.tools.utils;
-
-import com.alibaba.fastjson.JSONObject;
-import com.yutou.tools.ToolsApplication;
-import com.yutou.tools.bangumi.BangumiTools;
-import com.yutou.tools.interfaces.DownloadInterface;
-import com.yutou.tools.other.QQAudio;
-import com.yutou.tools.other.QQSetu;
-import net.mamoe.mirai.Bot;
-import net.mamoe.mirai.BotFactory;
-import net.mamoe.mirai.event.GlobalEventChannel;
-import net.mamoe.mirai.event.events.GroupMessageEvent;
-import net.mamoe.mirai.message.data.Image;
-import net.mamoe.mirai.message.data.MessageChainBuilder;
-import net.mamoe.mirai.utils.BotConfiguration;
-import net.mamoe.mirai.utils.ExternalResource;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.function.Consumer;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class QQBotManager {
-
-
- private static class QQCommands {
- private final static String QQ_HELP = "!help";
- private final static String QQ_UPDATE_IP = "!更新ip";
- private final static String QQ_GET_IP = "!ip";
- private final static String QQ_OPEN_PC = "!开机";
- private final static String QQ_GET_VERSION = "!version";
- private final static String QQ_CMD = "!cmd";
- private final static String QQ_BANGUMI_TODAY = "!今日动画";
- private final static String QQ_BANGUMI_LIST = "!新番";
- private final static String QQ_BANGUMI_SUB = "!查动画";
- private final static String QQ_AUDIO = "!语音";
- private final static String QQ_AUDIO_OPEN_LAMP = "!开灯";
- private final static String QQ_AUDIO_OPEN_AIR = "!开空调";
- }
-
- private static QQBotManager botManager = null;
- private Bot bot;
- private static final long qqGroup = 891655174L;
- private boolean isLogin = false;
- private static boolean isInit = false;
-
-
- private QQBotManager() {
- Object isRun = ConfigTools.load(ConfigTools.CONFIG, "qq_bot");
- if (isRun != null && (boolean) isRun) {
- isLogin = true;
- isInit = true;
- init();
- }
- }
-
- private void init() {
- new Thread(new Runnable() {
- @Override
- public void run() {
- long qq = 2476945931L;
- String password = "zhang34864394";
- if (ConfigTools.load(ConfigTools.CONFIG, "model").equals("dev")) {
- qq = 3620756944L;
- password = "UAs6YBYMyxJU";
- }
-
- bot = BotFactory.INSTANCE.newBot(qq, password, new BotConfiguration() {
- {
- setProtocol(MiraiProtocol.ANDROID_PAD);
- fileBasedDeviceInfo("qq_bot_devices_info.json");
- if (ConfigTools.load(ConfigTools.CONFIG, "model").equals("nas")) {
- noBotLog();
- noNetworkLog();
- }
- }
- });
- //Events.registerEvents(bot, new MessageListener());
- GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, new MessageListener());
- bot.login();
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- String str = sendMessage("姬妻酱上线拉~");
- System.out.println(str);
-
- }
- }).start();
- bot.join();
-
- }
- }).start();
-
- }
-
- public static QQBotManager getInstance() {
- if (botManager == null && !isInit) {
- botManager = new QQBotManager();
- }
- return botManager;
- }
-
- public boolean isLogin() {
- return isLogin;
- }
-
- private Image getImage(File file) {
- if (bot != null) {
- return Objects.requireNonNull(bot.getGroup(qqGroup)).uploadImage(ExternalResource.create(file));
- }
- return null;
- }
-
- private String getNotLoginQQ() {
- return "没有登录QQ";
- }
-
- public void reportToDayBangumi() {
- getInstance().sendMessage(BangumiTools.reportToDayBangumi());
- }
-
- public String sendMessage(String text) {
- if (bot != null) {
- try {
- return Objects.requireNonNull(bot.getGroup(qqGroup)).sendMessage(text).toString();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return getNotLoginQQ();
- }
-
- public String sendMessage(Long group, String text) {
- if (bot != null) {
- try {
- return Objects.requireNonNull(bot.getGroup(group)).sendMessage(text).toString();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return getNotLoginQQ();
- }
-
- public void sendMessage(Long group, MessageChainBuilder builder) {
- if (bot != null) {
- Objects.requireNonNull(bot.getGroup(group)).sendMessage(builder.asMessageChain());
- }
- }
-
-
- public String sendMessage(File imageFile, String text) {
- try {
- if (bot != null) {
- Image image = getImage(imageFile);
- MessageChainBuilder builder = new MessageChainBuilder();
- if (image != null) {
- builder.append(image);
- }
- builder.append(text);
- return Objects.requireNonNull(bot.getGroup(qqGroup)).sendMessage(builder.asMessageChain()).toString();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- return getNotLoginQQ();
- }
-
- public String sendMessage(List imgs, String text) {
- if (bot != null) {
- MessageChainBuilder builder = new MessageChainBuilder();
- for (File img : imgs) {
- builder.append(Objects.requireNonNull(getImage(img)));
- }
- builder.append(text);
- return Objects.requireNonNull(bot.getGroup(qqGroup)).sendMessage(builder.asMessageChain()).toString();
- }
- return getNotLoginQQ();
- }
-
- public static List getImages(String str) {
- List list = new ArrayList<>();
- String regex = "";
- Pattern pattern = Pattern.compile(regex);
- Matcher matcher = pattern.matcher(str);
- while (matcher.find()) {
- list.add(matcher.group().replace("", "")
- .trim());
- }
- return list;
- }
-
- public static void main(String[] args) {
- getInstance();
- }
-
- private static class MessageListener implements Consumer {
-
-
- @Override
- public void accept(GroupMessageEvent event) {
- String msg = event.getMessage().contentToString();
- switch (event.getGroup().getId() + "") {
- case qqGroup + "":
- myGroup(msg);
- case "570197155":
- new QQSetu().setu(msg, event);
-
- }
- }
-
- private void myGroup(String msg) {
- msg = msg.replace("!", "!").toLowerCase();
- switch (msg) {
- case QQCommands.QQ_OPEN_PC:
- RedisTools.Consumer.system("openPC", null);
- String time = new SimpleDateFormat("HH").format(new Date());
- if (Integer.parseInt(time) < 18) {
- break;
- }
- case QQCommands.QQ_AUDIO_OPEN_LAMP:
- QQAudio.playText("小爱同学,开灯");
- break;
- case QQCommands.QQ_AUDIO_OPEN_AIR:
- QQAudio.playText("小爱同学,开空调");
- break;
- case QQCommands.QQ_UPDATE_IP:
- RedisTools.Consumer.system("updateIP", null);
- break;
- case QQCommands.QQ_GET_IP:
- RedisTools.Consumer.bot("getip");
- break;
- case QQCommands.QQ_GET_VERSION:
- sendVersion();
- break;
- case QQCommands.QQ_BANGUMI_TODAY:
- QQBotManager.getInstance().sendMessage(BangumiTools.reportToDayBangumi());
- break;
- case QQCommands.QQ_BANGUMI_LIST:
- getInstance().sendMessage("获取中...");
- getInstance().sendMessage(BangumiTools.reportBangumiList());
- break;
-
- case QQCommands.QQ_HELP:
- StringBuilder builder = new StringBuilder();
- for (Field field : QQCommands.class.getDeclaredFields()) {
- try {
- field.setAccessible(true);
- builder.append(field.get(null)).append("\n");
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- getInstance().sendMessage(builder.toString());
- break;
- default:
- if (msg.startsWith(QQCommands.QQ_CMD)) {
- RedisTools.Consumer.system("cmd", msg.replace(QQCommands.QQ_CMD, ""));
- } else if (msg.startsWith(QQCommands.QQ_BANGUMI_SUB)) {
- String info = null;
- try {
- int id = Integer.parseInt(msg.replace(QQCommands.QQ_BANGUMI_SUB, "").trim());
- info = BangumiTools.reportBangumiInfo(id);
- } catch (Exception e) {
- String key = msg.replace(QQCommands.QQ_BANGUMI_SUB, "").trim();
- info = BangumiTools.reportSearchBangumi(key);
- }
- List imgs = new ArrayList<>();
- if (info.contains("")) {
- imgs = getImages(info);
- for (String img : imgs) {
- info = info.replace("", "");
- }
- }
- sendImagesMsg(imgs, info);
- } else if (msg.startsWith(QQCommands.QQ_AUDIO)) {
- QQAudio.playText(msg.replace(QQCommands.QQ_AUDIO, ""));
- }
- }
- }
-
-
- private List files;
- private int index = 0;
-
- private void sendImagesMsg(List imgs, String text) {
- files = new ArrayList<>();
- index = 0;
- if (imgs.size() == 0) {
- getInstance().sendMessage(text);
- return;
- }
- for (String img : imgs) {
- Tools.download(img, new DownloadInterface() {
- @Override
- public void onDownload(String file) {
- super.onDownload(file);
- files.add(new File(file));
- send(imgs.size(), text);
- }
-
- @Override
- public void onError(Exception e) {
- super.onError(e);
- index++;
- send(imgs.size(), text);
- }
- });
- }
- }
-
- private void send(int size, String text) {
- if ((files.size() + index) == size) {
- String str = getInstance().sendMessage(files, text);
- System.out.println("str = " + str);
- }
- }
-
- private void sendVersion() {
- String localVersion = ToolsApplication.version;
- String serverVersion = HttpTools.get("http://tools.yutou233.cn:8000/public/version.do?token=zIrsh9TUZP2lfRW753PannG49E7VJvor");
- String msg = "本地版本:" + localVersion + "\n" + "服务器版本:" + serverVersion;
- QQBotManager.getInstance().sendMessage(msg);
- Tools.sendServer("服务版本查询", msg);
- }
-
- }
-}
diff --git a/src/main/java/com/yutou/tools/utils/RedisConfig.java b/src/main/java/com/yutou/tools/utils/RedisConfig.java
deleted file mode 100644
index 10805c4..0000000
--- a/src/main/java/com/yutou/tools/utils/RedisConfig.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.yutou.tools.utils;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.springframework.cache.annotation.CachingConfigurerSupport;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.*;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-public class RedisConfig extends CachingConfigurerSupport {
- @Bean
- public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
-
- RedisTemplate template = new RedisTemplate<>();
- // 配置连接工厂
- template.setConnectionFactory(factory);
-
- //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
- Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
-
- ObjectMapper om = new ObjectMapper();
- // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
- om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
- // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
- om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
- jacksonSeial.setObjectMapper(om);
-
- // 值采用json序列化
- template.setValueSerializer(jacksonSeial);
- //使用StringRedisSerializer来序列化和反序列化redis的key值
- template.setKeySerializer(new StringRedisSerializer());
-
- // 设置hash key 和value序列化模式
- template.setHashKeySerializer(new StringRedisSerializer());
- template.setHashValueSerializer(jacksonSeial);
- template.afterPropertiesSet();
-
- return template;
- }
-
- /**
- * 对hash类型的数据操作
- *
- * @param redisTemplate
- * @return
- */
- @Bean
- public HashOperations hashOperations(RedisTemplate redisTemplate) {
- return redisTemplate.opsForHash();
- }
-
- /**
- * 对redis字符串类型数据操作
- *
- * @param redisTemplate
- * @return
- */
- @Bean
- public ValueOperations valueOperations(RedisTemplate redisTemplate) {
- return redisTemplate.opsForValue();
- }
-
- /**
- * 对链表类型的数据操作
- *
- * @param redisTemplate
- * @return
- */
- @Bean
- public ListOperations listOperations(RedisTemplate redisTemplate) {
- return redisTemplate.opsForList();
- }
-
- /**
- * 对无序集合类型的数据操作
- *
- * @param redisTemplate
- * @return
- */
- @Bean
- public SetOperations setOperations(RedisTemplate redisTemplate) {
- return redisTemplate.opsForSet();
- }
-
- /**
- * 对有序集合类型的数据操作
- *
- * @param redisTemplate
- * @return
- */
- @Bean
- public ZSetOperations zSetOperations(RedisTemplate redisTemplate) {
- return redisTemplate.opsForZSet();
- }
-}
diff --git a/src/main/java/com/yutou/tools/utils/RedisTools.java b/src/main/java/com/yutou/tools/utils/RedisTools.java
index b72ea39..fe1d361 100644
--- a/src/main/java/com/yutou/tools/utils/RedisTools.java
+++ b/src/main/java/com/yutou/tools/utils/RedisTools.java
@@ -269,7 +269,6 @@ public class RedisTools {
case "getip":
JSONObject json = JSONObject.parseObject(HttpTools.get("https://api.asilu.com/ip/"));
String ip = json.getString("ip");
- QQBotManager.getInstance().sendMessage("服务器IP:\n" + ip);
break;
}
}
@@ -289,7 +288,6 @@ public class RedisTools {
e.printStackTrace();
}
System.out.println("cmd > " + str);
- QQBotManager.getInstance().sendMessage(str.toString());
System.out.println("线程结束");
}
public static void main(String[] args) {
diff --git a/src/main/java/com/yutou/tools/utils/Tools.java b/src/main/java/com/yutou/tools/utils/Tools.java
index 4d91027..f01fb2f 100644
--- a/src/main/java/com/yutou/tools/utils/Tools.java
+++ b/src/main/java/com/yutou/tools/utils/Tools.java
@@ -94,39 +94,7 @@ public class Tools {
HttpTools.post("https://sctapi.ftqq.com/SCT2619Tpqu93OYtQCrK4LOZYEfr2irm.send",
("title="+URLEncoder.encode(title, "UTF-8") + "&desp=" + URLEncoder.encode(msg, "UTF-8")).getBytes(StandardCharsets.UTF_8),
null);
- if (ConfigTools.load(ConfigTools.CONFIG, "model").equals("nas")) {
- String img = null;
- msg = msg.replace("
", "\n");
- if (msg.contains("![logo]")) {
- try {
- img = msg.split("!\\[logo\\]\\(")[1].split("\\)")[0];
- msg = msg.replace("![logo](" + img + ")", "");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- if (img == null) {
- QQBotManager.getInstance().sendMessage(title + "\n" + msg);
- } else {
- String finalMsg = msg;
- String finalImg = img;
- if (QQBotManager.getInstance().isLogin()) {
- download(img, new DownloadInterface() {
- @Override
- public void onDownload(String file) {
- super.onDownload(file);
- QQBotManager.getInstance().sendMessage(new File(file), title + "\n" + finalMsg);
- }
-
- @Override
- public void onError(Exception e) {
- super.onError(e);
- QQBotManager.getInstance().sendMessage(title + "\n" + finalMsg + "\n" + finalImg);
- }
- });
- }
- }
- } else if (!StringUtils.isEmpty(UpdateIp.nas_ip)) {
+ if (!StringUtils.isEmpty(UpdateIp.nas_ip)) {
String img = null;
msg = msg.replace("
", "\n");
if (msg.contains("![logo]")) {
diff --git a/src/main/java/com/yutou/tools/web/userController.java b/src/main/java/com/yutou/tools/web/userController.java
index 188bfe7..4790d63 100644
--- a/src/main/java/com/yutou/tools/web/userController.java
+++ b/src/main/java/com/yutou/tools/web/userController.java
@@ -1,6 +1,5 @@
package com.yutou.tools.web;
-import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yutou.tools.Tools.GoogleAccount;
@@ -13,13 +12,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
-import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.Objects;
import java.util.UUID;
@Controller