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