This commit is contained in:
Yutousama 2021-04-11 23:17:30 +08:00
parent bdc74957aa
commit ed692199be
3 changed files with 110 additions and 34 deletions

View File

@ -18,6 +18,9 @@ import java.util.TimerTask;
public class ApplicationInit implements ApplicationRunner { public class ApplicationInit implements ApplicationRunner {
@Resource @Resource
MusicToolsServiceImpl musicTools; MusicToolsServiceImpl musicTools;
private static String oldTime = "";
@Override @Override
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args) throws Exception {
AudioTools.init(); AudioTools.init();
@ -25,7 +28,11 @@ public class ApplicationInit implements ApplicationRunner {
@Override @Override
public void run() { public void run() {
String time = new SimpleDateFormat("HH:mm").format(new Date()); String time = new SimpleDateFormat("HH:mm").format(new Date());
switch (time){ if (time.equals(oldTime)) {
return;
}
oldTime = time;
switch (time) {
case "00:00": case "00:00":
musicTools.scanMusic(); musicTools.scanMusic();
break; break;
@ -38,7 +45,34 @@ public class ApplicationInit implements ApplicationRunner {
break; break;
} }
switch (time) {
case "00:00":
case "01:00":
case "02:00":
case "03:00":
case "04:00":
case "05:00":
case "06:00":
case "07:00":
case "08:00":
case "09:00":
case "10:00":
case "11:00":
case "12:00":
case "13:00":
case "14:00":
case "15:00":
case "16:00":
case "17:00":
case "18:00":
case "19:00":
case "20:00":
case "21:00":
case "22:00":
case "23:00":
BTDownloadManager.getInstance().start();
}
} }
},0,35 * 1000); }, 0, 35 * 1000);
} }
} }

View File

@ -41,16 +41,16 @@ public class BTDownloadManager implements ApplicationContextAware {
List<BangumiItem> list = bangumiService.getAllBangumi(); List<BangumiItem> list = bangumiService.getAllBangumi();
AnimationData data = new AnimationData(); AnimationData data = new AnimationData();
for (BangumiItem item : list) { for (BangumiItem item : list) {
item.setAuthor(data.nameToValue(item.getAuthor(), true) + "");
item.setCategories(data.nameToValue(item.getCategories(), false) + "");
String url = getRSSUrl(item); String url = getRSSUrl(item);
String _json = HttpTools.get(url); String _json = HttpTools.get(url);
if (!StringUtils.isEmpty(_json)) { if (!StringUtils.isEmpty(_json)) {
JSONObject json = JSONObject.parseObject(_json); JSONObject json = JSONObject.parseObject(_json);
item.setAuthor(data.nameToValue(item.getAuthor(),true)+"");
item.setCategories(data.nameToValue(item.getCategories(),false)+"");
download(item, json); download(item, json);
}else{ } else {
QQBotManager.getInstance().sendMessage(item.getTitle()+"\n下载失败"); QQBotManager.getInstance().sendMessage(item.getTitle() + "\n下载失败");
Log.i(item.getTitle()+"\n下载失败"); Log.i(item.getTitle() + "\n下载失败");
} }
} }
} }
@ -84,21 +84,8 @@ public class BTDownloadManager implements ApplicationContextAware {
array.add(item.getString("title")); array.add(item.getString("title"));
RedisTools.set(bangumiItem.getTitle(), array.toJSONString()); RedisTools.set(bangumiItem.getTitle(), array.toJSONString());
if (item.containsKey("thumbnail")) { if (item.containsKey("thumbnail")) {
HttpTools.download(item.getString("thumbnail"), bangumiItem.getTitle() + ".jpg", new DownloadInterface() { File file = HttpTools.syncDownload(item.getString("thumbnail"), bangumiItem.getTitle() + ".jpg");
@Override onSend(file, item);
public void onDownload(File file) {
super.onDownload(file);
onSend(file, item);
}
@Override
public void onError(Exception e) {
super.onError(e);
onSend(null, item);
}
});
} else { } else {
onSend(null, item); onSend(null, item);
} }
@ -120,12 +107,14 @@ public class BTDownloadManager implements ApplicationContextAware {
public boolean download(String title, String url) { public boolean download(String title, String url) {
try { try {
Runtime.getRuntime().exec(new String[]{"sh" String exec = String.format("transmission-remote -n yutou:34864394 -w /media/yutou/4t/public/download/anim/%s -a \"%s\" "
, "-c"
, String.format("transmission-remote -n yutou:34864394 -w /media/yutou/4t/public/download/anim/%s -a \"%s\" "
, title , title
, url , url
)}); );
Log.i(exec);
Runtime.getRuntime().exec(new String[]{"sh"
, "-c"
, exec});
return true; return true;
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -3,6 +3,7 @@ package com.yutou.nas.utils;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yutou.nas.interfaces.DownloadInterface; import com.yutou.nas.interfaces.DownloadInterface;
import com.yutou.nas.utils.Interfaces.NetworkInterface; import com.yutou.nas.utils.Interfaces.NetworkInterface;
import org.springframework.util.StringUtils;
import java.io.*; import java.io.*;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
@ -14,7 +15,7 @@ public class HttpTools {
public static String get(String url) { public static String get(String url) {
try { try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setRequestProperty("User-Agent", getKuKuUA()); connection.setRequestProperty("User-Agent", getExtUa());
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder str = new StringBuilder(); StringBuilder str = new StringBuilder();
String tmp; String tmp;
@ -43,6 +44,7 @@ public class HttpTools {
connection.setRequestMethod("POST"); connection.setRequestMethod("POST");
connection.setDoOutput(true); connection.setDoOutput(true);
connection.setDoInput(true); connection.setDoInput(true);
connection.addRequestProperty("User-Agent", getExtUa());
connection.setConnectTimeout(5 * 1000); connection.setConnectTimeout(5 * 1000);
connection.setReadTimeout(10 * 1000); connection.setReadTimeout(10 * 1000);
//connection.addRequestProperty("Connection", "keep-alive"); //connection.addRequestProperty("Connection", "keep-alive");
@ -127,7 +129,9 @@ public class HttpTools {
com.yutou.nas.utils.Log.i(url); com.yutou.nas.utils.Log.i(url);
//String str=get(url); //String str=get(url);
} }
private static String donwloadPath="tmp"+File.separator;
private static String donwloadPath = "tmp" + File.separator;
public synchronized static void download(final String url, final String saveName, final DownloadInterface downloadInterface) { public synchronized static void download(final String url, final String saveName, final DownloadInterface downloadInterface) {
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
@ -140,7 +144,7 @@ public class HttpTools {
} }
Log.i("DOWNLOAD", "下载文件:" + url + " 保存文件:" + saveName); Log.i("DOWNLOAD", "下载文件:" + url + " 保存文件:" + saveName);
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.addRequestProperty("User-Agent", getExtUa());
// Log.i(TAG,"获取到网络请求:"+connection.getResponseCode()); // Log.i(TAG,"获取到网络请求:"+connection.getResponseCode());
@ -150,14 +154,14 @@ public class HttpTools {
Log.i("DOWNLOAD", "临时保存文件:" + jar.getAbsolutePath()); Log.i("DOWNLOAD", "临时保存文件:" + jar.getAbsolutePath());
OutputStream outputStream = new FileOutputStream(jar); OutputStream outputStream = new FileOutputStream(jar);
byte[] bytes = new byte[1024]; byte[] bytes = new byte[1024];
double size=connection.getContentLength(); double size = connection.getContentLength();
double downSize=0; double downSize = 0;
int len; int len;
while ((len = inputStream.read(bytes)) > 0) { while ((len = inputStream.read(bytes)) > 0) {
outputStream.write(bytes, 0, len); outputStream.write(bytes, 0, len);
downSize+=len; downSize += len;
if(downloadInterface!=null){ if (downloadInterface != null) {
downloadInterface.onDownloading(downSize,size); downloadInterface.onDownloading(downSize, size);
} }
} }
outputStream.close(); outputStream.close();
@ -183,4 +187,53 @@ public class HttpTools {
} }
}).start(); }).start();
} }
public synchronized static File syncDownload(final String url, final String saveName) {
if(StringUtils.isEmpty(url)){
return null;
}
File jar = null;
try {
File savePath = new File(donwloadPath);
if (!savePath.exists()) {
savePath.mkdirs();
}
Log.i("DOWNLOAD", "下载文件:" + url + " 保存文件:" + saveName);
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.addRequestProperty("User-Agent", getExtUa());
// Log.i(TAG,"获取到网络请求:"+connection.getResponseCode());
InputStream inputStream = connection.getInputStream();
jar = new File(donwloadPath + saveName + "_tmp.tmp");
jar.createNewFile();
Log.i("DOWNLOAD", "临时保存文件:" + jar.getAbsolutePath());
OutputStream outputStream = new FileOutputStream(jar);
byte[] bytes = new byte[1024];
double size = connection.getContentLength();
double downSize = 0;
int len;
while ((len = inputStream.read(bytes)) > 0) {
outputStream.write(bytes, 0, len);
downSize += len;
}
outputStream.close();
inputStream.close();
File oldJar = new File(donwloadPath + saveName);
if (oldJar.exists()) {
oldJar.delete();
}
connection.disconnect();
jar.renameTo(oldJar);
Log.i("DOWNLOAD", "实际保存:" + oldJar.getAbsolutePath() + " " + oldJar.getName());
return oldJar;
} catch (Exception e) {
e.printStackTrace();
if (jar != null) {
jar.delete();
}
return null;
}
}
} }