新增对Jellyfin的搜刮(但未完成自动化)

This commit is contained in:
2021-09-30 09:32:51 +08:00
parent f30530d61d
commit ef1ba6f61f
14 changed files with 446 additions and 113 deletions

View File

@@ -2,10 +2,7 @@ package com.yutou.nas.bangumi;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yutou.nas.utils.HttpTools;
import com.yutou.nas.utils.RedisTools;
import com.yutou.nas.utils.Tools;
import com.yutou.nas.utils.StringUtils;
import com.yutou.nas.utils.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -63,6 +60,48 @@ public class BangumiTools {
return JSONObject.parseObject(str);
}
public static JSONArray getPeople(int id) {
/**
* Actor 演员
* Composer 作曲家
* Director 导演
* GuestStar 特邀明星
* Producer 制片人
* Writer 编剧
*/
JSONArray people = new JSONArray();
JSONObject bangumi = getBangumiInfo(id);
JSONArray crt = bangumi.getJSONArray("crt");
for (Object o : crt) {
JSONObject item = (JSONObject) o;
JSONObject pel = new JSONObject();
pel.put("Name", item.getString("name_cn"));
pel.put("Role", item.getString("role_name"));
pel.put("Type", "Actor");
people.add(pel);
}
crt = bangumi.getJSONArray("staff");
for (Object o : crt) {
JSONObject item = (JSONObject) o;
JSONObject pel = new JSONObject();
pel.put("Name", item.getString("name_cn"));
String jobsName="";
for (Object _jobs : item.getJSONArray("jobs")) {
jobsName+=_jobs+"";
}
jobsName=jobsName.substring(0,jobsName.length()-1);
pel.put("Role", jobsName);
pel.put("Type", "");
if (jobsName.contains("导演")) {
pel.put("Type", "Director");
} else if (jobsName.contains("脚本")) {
pel.put("Type", "DirectorDirector");
}
people.add(pel);
}
return people;
}
/**
* 搜索番剧
*
@@ -106,10 +145,10 @@ public class BangumiTools {
* @return 详细内容
*/
public static List<String> reportBangumiInfo(int id) {
List<String> bangumiList=new ArrayList<>();
List<String> bangumiList = new ArrayList<>();
JSONObject json = getBangumiInfo(id);
if(json.containsKey("code")){
bangumiList.add("error = "+json.toJSONString());
if (json.containsKey("code")) {
bangumiList.add("error = " + json.toJSONString());
return bangumiList;
}
JSONArray eps = json.getJSONArray("eps");
@@ -190,44 +229,45 @@ public class BangumiTools {
/**
* 格式化输出新番列表
*
* @return 新番信息
*/
public static String reportBangumiList(){
public static String reportBangumiList() {
try {
JSONObject json=getBangumi(-1);
StringBuilder builder=new StringBuilder();
JSONObject json = getBangumi(-1);
StringBuilder builder = new StringBuilder();
assert json != null;
JSONArray array=json.getJSONArray("bangumi");
JSONArray array = json.getJSONArray("bangumi");
for (Object o : array) {
JSONObject data= (JSONObject) o;
JSONObject weekday=data.getJSONObject("weekday");
JSONArray items=data.getJSONArray("items");
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);
reportBangumi(builder, items, false);
builder.append("\n");
}
return builder.toString();
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
private static void reportBangumi(StringBuilder builder, JSONArray items,boolean reportEp) {
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){
? item.getString("name") : item.getString("name_cn"));
if (!reportEp) {
builder.append("\n");
continue;
}
JSONObject info=getBangumiInfo(item.getInteger("id"));
if(info.get("eps")==null){
JSONObject info = getBangumiInfo(item.getInteger("id"));
if (info.get("eps") == null) {
continue;
}
JSONArray eps = info.getJSONArray("eps");
@@ -264,7 +304,7 @@ public class BangumiTools {
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);
reportBangumi(builder, items, true);
}
RedisTools.set("toDayBangumi", builder.toString());
return builder.toString();
@@ -281,7 +321,7 @@ public class BangumiTools {
* @return 详细内容
*/
public static List<String> reportSearchBangumi(String key) {
List<String> bangumiList=new ArrayList<>();
List<String> bangumiList = new ArrayList<>();
JSONObject main = search(key);
if (main.getInteger("results") > 0) {
StringBuilder builder = new StringBuilder();
@@ -289,7 +329,7 @@ public class BangumiTools {
Collections.reverse(list);
for (Object items : list) {
JSONObject item = (JSONObject) items;
builder=new StringBuilder();
builder = new StringBuilder();
builder.append("标题:").append(item.getString("name_cn")).append("\n");
builder.append("日文标题:").append(item.getString("name")).append("\n");
String type;
@@ -332,10 +372,36 @@ public class BangumiTools {
}
}
public static void main(String[] args) {
RedisTools.remove("reportToDayBangumi");
String str = reportToDayBangumi();
System.out.println(str);
public static void saveInfoToJellyfin(String name) {
JSONObject json = search(name);
JSONArray array = json.getJSONArray("list");
int id = 0;
StringBuilder bangumiName = new StringBuilder();
for (Object o : array) {
JSONObject _item = (JSONObject) o;
bangumiName.append(_item.getString("name_cn"))
.append(":")
.append(QQBotManager.QQCommands.QQ_BANGUMI_INFO)
.append(_item.getString("id"))
.append("\n");
if (_item.getString("name_cn").equals(name)) {
id = _item.getInteger("id");
break;
}
}
if (id == 0) {
QQBotManager.getInstance().sendMessage("没有与《" + name + "》完全匹配的信息,请填写。 \n" + bangumiName.toString());
return;
}
json = getBangumiInfo(id);
}
public static void main(String[] args) {
JSONObject json = search("小林家的龙女仆S");
System.out.println(json);
json = getBangumiInfo(274234);
System.err.println("------------");
System.out.println(json);
}
}