新增对Jellyfin的搜刮(但未完成自动化)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user