调整BT下载

This commit is contained in:
zlzw 2024-06-09 11:36:41 +08:00
parent 16c0f9816d
commit 25bee81d05
6 changed files with 128 additions and 32 deletions

View File

@ -11,6 +11,10 @@ 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.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
@Controller
public class BTDownloadController {
@ -19,23 +23,50 @@ public class BTDownloadController {
@ResponseBody
@RequestMapping("/bt/down.do")
public String bt(){
public String bt() {
DmhyRssDownloadManager.getInstance().start();
AnimRssManager.scan();
return "ok";
}
@ResponseBody
@RequestMapping("/bt/done.do")
public String done(String path,String filename,String hash1,String hash2,String tid){
Log.i("BTDownloadController.done","path = " + path + ", filename = " + filename + ", hash1 = " + hash1 + ", hash2 = " + hash2 + ", tid = " + tid);
public String done(String path, String filename, String hash1, String hash2, String tid) {
Log.i("BTDownloadController.done", "path = " + path + ", filename = " + filename + ", hash1 = " + hash1 + ", hash2 = " + hash2 + ", tid = " + tid);
BTDownloadManager.done(path, filename, hash1, hash2, tid);
return "ok";
}
@ResponseBody
@RequestMapping("/bt/download.do")
public String download(int id,boolean isDownloadNext,String url){
Log.i("跳过下载","手动下载 id = " + id + ", isDownloadNext = " + isDownloadNext + ", url = " + url);
bangumiService.download(id,isDownloadNext,url);
public String download(int id, boolean isDownloadNext, String url) {
Log.i("跳过下载", "手动下载 id = " + id + ", isDownloadNext = " + isDownloadNext + ", url = " + url);
bangumiService.download(id, isDownloadNext, url);
return "1";
}
@ResponseBody
@RequestMapping("/qq/bt/download.do")
public String download(HttpServletRequest request) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
String title = null;
String url = null;
try {
BufferedInputStream stream = new BufferedInputStream(request.getInputStream());
byte[] bytes = new byte[1024];
int len = 0, size;
while ((len = stream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
outputStream.flush();
}
String str = outputStream.toString();
JSONObject json = JSONObject.parseObject(str);
title = json.getString("title");
url = json.getString("url");
} catch (Exception e) {
e.printStackTrace();
}
Log.i("QQ下载", "手动下载 title = " + title + ", url = " + url);
return "" + BTDownloadManager.download(title, url);
}
}

View File

@ -12,7 +12,7 @@ import org.springframework.context.annotation.Import;
@Import(DmhyRssDownloadManager.class)
@SpringBootApplication
public class NasApplication {
public static final String version = "1.2.18";
public static final String version = "1.3";
public static void main(String[] args) {
SpringApplication.run(NasApplication.class, args);

View File

@ -14,6 +14,7 @@ import org.slf4j.event.Level;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeUnit;
public class BTDownloadManager {
@ -80,7 +81,7 @@ public class BTDownloadManager {
public static boolean download(String title, String url) {
try {
String exec = String.format("qbittorrent-nox --save-path=\"%sanim/%s\" \"%s\""
/* String exec = String.format("qbittorrent-nox --save-path=\"%sanim/%s\" \"%s\""
, DownloadHomePath
, title
, url
@ -89,8 +90,20 @@ public class BTDownloadManager {
Process process = Runtime.getRuntime().exec(new String[]{"sh"
, "-c"
, exec});
process.waitFor(120, TimeUnit.SECONDS);
return true;
process.waitFor(120, TimeUnit.SECONDS);*/
JSONObject json = new JSONObject();
json.put("urls", url);
json.put("savepath", "anim/" + title);
String data="urls="+url+"&savepath=anim/"+title;
String post = HttpTools.http_post_form(
ConfigTools.load(ConfigTools.CONFIG, "Qbittorrent.Url", String.class) + "/api/v2/torrents/add",
data.getBytes(StandardCharsets.UTF_8),
0,
null
);
Log.i("BT下载", post);
return post.toLowerCase().contains("ok");
} catch (Exception e) {
e.printStackTrace();
}
@ -117,16 +130,16 @@ public class BTDownloadManager {
}
public synchronized static void done(String path, String filename, String hash1, String hash2, String tid) {
grep(path,filename);
grep(path, filename);
String hash = StringUtils.isEmpty(hash1) ? StringUtils.isEmpty(hash2) ? null : hash2 : hash1;
if (hash != null) {
String map = RedisTools.getHashMap("rss", hash);
JSONObject item = JSON.parseObject(map);
String text="添加到库:"+item.getString("title")+"\n动漫花园地址:"+item.getString("link");
String text = "添加到库:" + item.getString("title") + "\n动漫花园地址:" + item.getString("link");
if (!item.containsKey("thumbnail")) {
QQBotManager.getInstance().sendMessage(734332887,text);
QQBotManager.getInstance().sendMessage(734332887, text);
} else {
QQBotManager.getInstance().sendMessage(734332887,item.getString("thumbnail"),text);
QQBotManager.getInstance().sendMessage(734332887, item.getString("thumbnail"), text);
}
}
}
@ -149,11 +162,11 @@ public class BTDownloadManager {
}
public static String getTorrentFileHash(String magnet) {
String hash=null;
String hash = null;
try {
ProtocolContext.getInstance().register(MagnetProtocol.getInstance());
ITaskSession session = ProtocolContext.getInstance().buildTaskSession(magnet);
hash=session.getName();
hash = session.getName();
Tools.delDir("download");
} catch (DownloadException e) {
e.printStackTrace();

View File

@ -8,6 +8,7 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.Set;
@ -74,7 +75,7 @@ public class HttpTools {
connection.setReadTimeout(10 * 1000);
//connection.addRequestProperty("Connection", "keep-alive");
//connection.addRequestProperty("User-Agent", getExtUa());
//connection.addRequestProperty("content-type", "application/json");
connection.addRequestProperty("content-type", "application/json");
connection.addRequestProperty("charset", "UTF-8");
OutputStream outputStream = connection.getOutputStream();
//System.out.println(new String(body));
@ -100,6 +101,56 @@ public class HttpTools {
}
}
}
public static String http_post_form(String url, byte[] body, int index, Map<String, String> headers) {
String tmp;
StringBuilder str = new StringBuilder();
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setRequestMethod("POST");
if (headers != null) {
for (String key : headers.keySet()) {
connection.addRequestProperty(key, headers.get(key));
}
}
if(body==null){
body="".getBytes();
}
connection.setDoOutput(true);
connection.setDoInput(true);
connection.addRequestProperty("User-Agent", getUa());
connection.setConnectTimeout(5 * 1000);
connection.setReadTimeout(10 * 1000);
connection.setRequestProperty( "Content-Type", "multipart/form-data;");
connection.setRequestProperty( "charset", "utf-8");
connection.setRequestProperty( "Accept-Encoding", "gzip, deflate, br");
//connection.addRequestProperty("Connection", "keep-alive");
//connection.addRequestProperty("User-Agent", getExtUa());
//connection.addRequestProperty("content-type", "application/json");
OutputStream outputStream = connection.getOutputStream();
//System.out.println(new String(body));
outputStream.write(body);
outputStream.flush();
outputStream.close();
connection.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((tmp = reader.readLine()) != null) {
str.append(tmp);
}
String finalStr = str.toString();
connection.disconnect();
reader.close();
return finalStr;
} catch (Exception e) {
if (index < HttpRequestIndex) {
return http_post(url, body, index + 1, headers);
} else {
e.printStackTrace();
return null;
}
}
}
public static String getUa() {
return "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36";
@ -134,11 +185,12 @@ public class HttpTools {
JSONObject json = new JSONObject();
json.put("pid", "102");
json.put("gid", "100584");
json.put("gameKey", "0gha58u1c9FjZkeAsEmYIzTvp");
json.put("access_token", "659c-S1gV0DwMXdYjPDlSrSLNYOvA8qUoCSvmdFEHvZugKgNX4Z2BCwF18A7W2gRdG7WiWfKsbZgF6YssZHhaozksI9RBn2QQFTXzmAHtbMd4ginEEtwdKmPCM4JbJGg1ollqoNE0PcGENpa4F3e7EdSOa_JFyE6XyUQN1iurJU3F8MZfLlTIcTR9USYoHX15vsAkCht_0mrapZblkeY1_8HFrmK8rlenbZLxccy7PrMz5eZ9uPPDJL5OYiEahyrtLENB8SVmlGofJfQw8wUjN8_XVZSfLMujdwz24");
String url = "http://192.168.1.156:9020/Faxing/reg?" +
"&tpyeCode=dimai" +
"&regParamJson=" + json.toJSONString();
json.put("message", "0gha58u1c9FjZkeAsEmYIzTvp");
// json.put("access_token", "659c-S1gV0DwMXdYjPDlSrSLNYOvA8qUoCSvmdFEHvZugKgNX4Z2BCwF18A7W2gRdG7WiWfKsbZgF6YssZHhaozksI9RBn2QQFTXzmAHtbMd4ginEEtwdKmPCM4JbJGg1ollqoNE0PcGENpa4F3e7EdSOa_JFyE6XyUQN1iurJU3F8MZfLlTIcTR9USYoHX15vsAkCht_0mrapZblkeY1_8HFrmK8rlenbZLxccy7PrMz5eZ9uPPDJL5OYiEahyrtLENB8SVmlGofJfQw8wUjN8_XVZSfLMujdwz24");
String url = "http://127.0.0.1:8002/qq/send.do";
String data="data=abc&codd=1";
data=json.toString();
http_post(url,data.getBytes(StandardCharsets.UTF_8),0,null);
/* ExecutorService service= Executors.newCachedThreadPool();
for (int i = 0; i < 3000; i++) {
service.submit(new Runnable() {

View File

@ -35,7 +35,7 @@ public class QQBotManager {
json.put("message",text);
Map<String, String> header = new HashMap<>();
header.put("content-type", "application/json");
return HttpTools.http_post("http://"+ConfigTools.load(ConfigTools.CONFIG,"nas_ip",String.class)+":802/qq/send.do", json.toString().getBytes(StandardCharsets.UTF_8), 1, header);
return HttpTools.http_post("http://"+ConfigTools.load(ConfigTools.CONFIG,"nas_ip",String.class)+"/qq/send.do", json.toString().getBytes(StandardCharsets.UTF_8), 1, header);
}
public String sendMessage(long qq,String text) {
@ -44,7 +44,7 @@ public class QQBotManager {
json.put("message",text);
Map<String, String> header = new HashMap<>();
header.put("content-type", "application/json");
return HttpTools.http_post("http://"+ConfigTools.load(ConfigTools.CONFIG,"nas_ip",String.class)+":802/qq/send.do", json.toString().getBytes(StandardCharsets.UTF_8), 1, header);
return HttpTools.http_post("http://"+ConfigTools.load(ConfigTools.CONFIG,"nas_ip",String.class)+"/qq/send.do", json.toString().getBytes(StandardCharsets.UTF_8), 1, header);
}
public String sendMessage(String imageUrl, String message) {
@ -57,7 +57,7 @@ public class QQBotManager {
json.put("image", imageUrl);
Map<String, String> header = new HashMap<>();
header.put("content-type", "application/json");
return HttpTools.http_post("http://"+ConfigTools.load(ConfigTools.CONFIG,"nas_ip",String.class)+":802/qq/send.do", json.toString().getBytes(StandardCharsets.UTF_8), 1, header);
return HttpTools.http_post("http://"+ConfigTools.load(ConfigTools.CONFIG,"nas_ip",String.class)+"/qq/send.do", json.toString().getBytes(StandardCharsets.UTF_8), 1, header);
}

View File

@ -263,9 +263,9 @@ public class RedisTools {
new Thread(new Runnable() {
@Override
public void run() {
Jedis jedis = getPoolRedis();
if (jedis != null)
jedis.psubscribe(new Consumer(), "*");
// Jedis jedis = getPoolRedis();
// if (jedis != null)
// jedis.psubscribe(new Consumer(), "*");
}
}).start();