129 lines
5.0 KiB
Java
129 lines
5.0 KiB
Java
package com.yutou.nas.utils;
|
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
import com.yutou.nas.interfaces.ObjectInterface;
|
|
|
|
import java.io.File;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
public class BTDownloadManager {
|
|
protected static final String DownloadHomePath = "/media/yutou/disk_lvm/public/download/";
|
|
|
|
public synchronized static boolean skipDownload(String title, JSONObject json){
|
|
if ("ok".equals(json.getString("status"))) {
|
|
JSONArray items = json.getJSONArray("items");
|
|
for (Object _item : items) {
|
|
JSONObject item = (JSONObject) _item;
|
|
if (!isDownload(title, item.getString("title"))) {
|
|
JSONArray array = getDownload(title);
|
|
array.add(item.getString("title"));
|
|
RedisTools.set(title, array.toJSONString());
|
|
Log.i("跳过下载",title);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
public synchronized static void download(String title, JSONObject json) {
|
|
if ("ok".equals(json.getString("status"))) {
|
|
JSONArray items = json.getJSONArray("items");
|
|
for (Object _item : items) {
|
|
JSONObject item = (JSONObject) _item;
|
|
//确认是为下载过的
|
|
if (!isDownload(title, item.getString("title"))) {
|
|
//添加到下载器
|
|
if (download(title, item.getJSONObject("enclosure").getString("link"))) {
|
|
//发通知到QQ
|
|
JSONArray array = getDownload(title);
|
|
array.add(item.getString("title"));
|
|
RedisTools.set(title, array.toJSONString());
|
|
if (item.containsKey("thumbnail")) {
|
|
onSend(item.getString("thumbnail"), item,item.getJSONObject("enclosure").getString("link"));
|
|
} else {
|
|
onSend(null, item,item.getJSONObject("enclosure").getString("link"));
|
|
}
|
|
} else {
|
|
Log.i("BT", "添加到下载器失败:" + item.getString("title"));
|
|
}
|
|
} else {
|
|
Log.i("BT", "已下载过:" + item.getString("title"));
|
|
}
|
|
}
|
|
} else {
|
|
Log.i("BT", "rss2json转换失败:" + title);
|
|
}
|
|
}
|
|
|
|
private static void onSend(String fileUrl, JSONObject item, String url) {
|
|
String text = "启动下载器\n已提交到下载:" + item.getString("title");
|
|
Log.i(text);
|
|
if (fileUrl == null) {
|
|
QQBotManager.getInstance().sendMessage(text);
|
|
} else {
|
|
QQBotManager.getInstance().sendMessage(fileUrl, text);
|
|
}
|
|
//RedisTools.set(item.getString("title"),url);
|
|
}
|
|
|
|
public static boolean download(String title, String url) {
|
|
try {
|
|
String exec = String.format("qbittorrent-nox --save-path=\"%sanim/%s\" \"%s\""
|
|
, DownloadHomePath
|
|
, title
|
|
, url
|
|
);
|
|
Log.i(exec);
|
|
Process process = Runtime.getRuntime().exec(new String[]{"sh"
|
|
, "-c"
|
|
, exec});
|
|
process.waitFor(120, TimeUnit.SECONDS);
|
|
return true;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private static JSONArray getDownload(String title) {
|
|
String _title = RedisTools.get(title);
|
|
if (StringUtils.isEmpty(_title)) {
|
|
return new JSONArray();
|
|
}
|
|
return JSON.parseArray(_title);
|
|
}
|
|
|
|
private static boolean isDownload(String title, String key) {
|
|
String _title = RedisTools.get(title);
|
|
JSONArray array;
|
|
if (StringUtils.isEmpty(_title)) {
|
|
return false;
|
|
} else {
|
|
array = JSON.parseArray(_title);
|
|
}
|
|
return array.contains(key);
|
|
}
|
|
|
|
public synchronized static void done(String path,String filename,String hash1,String hash2,String tid) {
|
|
grep(path,filename);
|
|
}
|
|
|
|
private static void grep(String remoteLocation, String remoteName) {
|
|
/* if(remoteName.contains("265")){
|
|
String newName=remoteName.replace("265","贰陸伍");
|
|
String exec="mv \"" + remoteLocation + File.separator + remoteName + "\" \"" + remoteLocation + File.separator + newName+"\"";
|
|
Log.i("执行改名",exec);
|
|
AppTools.exec(exec, new ObjectInterface() {
|
|
@Override
|
|
public void out(String data) {
|
|
super.out(data);
|
|
Log.i("改名结果:",data);
|
|
}
|
|
}, false, true);
|
|
}*/
|
|
AppTools.exec("/home/yutou/public/servier/tinyMediaManager/tinyMediaManager tvshow -u --scrapeUnscraped", null, false, true);
|
|
}
|
|
}
|