移植原始版本
This commit is contained in:
135
src/main/java/com/yutou/nas/bangumi/AnimationController.java
Normal file
135
src/main/java/com/yutou/nas/bangumi/AnimationController.java
Normal file
@@ -0,0 +1,135 @@
|
||||
package com.yutou.nas.bangumi;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yutou.nas.mybatis.dao.BangumiItemDao;
|
||||
import com.yutou.nas.mybatis.dao.BangumiListDao;
|
||||
import com.yutou.nas.mybatis.model.BangumiItem;
|
||||
import com.yutou.nas.mybatis.model.BangumiItemExample;
|
||||
import com.yutou.nas.mybatis.model.BangumiList;
|
||||
import com.yutou.nas.mybatis.model.BangumiListExample;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("anim/")
|
||||
public class AnimationController {
|
||||
@Resource
|
||||
BangumiListDao listDao;
|
||||
@Resource
|
||||
BangumiItemDao itemDao;
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "rss/data.do", method = RequestMethod.GET)
|
||||
public String getAnimList(String key,String type,String team, int page) {
|
||||
boolean isNull = key.length() == 0;
|
||||
if(!StringUtils.isEmpty(type)&&type.length()>2)
|
||||
type=type.substring(2);
|
||||
if(!StringUtils.isEmpty(team)&&team.length()>2)
|
||||
team=team.substring(2);
|
||||
String[] keys = key.split(" ");
|
||||
JSONArray items = null;
|
||||
if (!isNull)
|
||||
items = new AnimationData().bangumiList(page,type,team, keys);
|
||||
JSONObject json = new JSONObject();
|
||||
if (items != null) {
|
||||
json.put("data", items);
|
||||
} else {
|
||||
json.put("data", new JSONArray());
|
||||
}
|
||||
json.put("count", 999);
|
||||
json.put("code", 0);
|
||||
json.put("msg", "ok");
|
||||
return json.toJSONString();
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "type/add.do", method = RequestMethod.POST)
|
||||
public String addRssType(String title) {
|
||||
BangumiList bangumiList = new BangumiList();
|
||||
bangumiList.setTitle(title);
|
||||
bangumiList.setStatus(1);
|
||||
int i = listDao.insert(bangumiList);
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("code", 0);
|
||||
json.put("msg", i == 0 ? "添加失败" : "添加成功");
|
||||
return json.toJSONString();
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "type/list.do", method = RequestMethod.GET)
|
||||
public String getRssTypeList() {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("code", 0);
|
||||
json.put("msg", "ok");
|
||||
json.put("data", JSONArray.toJSON(listDao.selectByExample(new BangumiListExample())));
|
||||
return json.toJSONString();
|
||||
}
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "type/del.do", method = RequestMethod.POST)
|
||||
public String delType(int id){
|
||||
BangumiItemExample example=new BangumiItemExample();
|
||||
example.createCriteria().andBidEqualTo(id+"");
|
||||
itemDao.deleteByExample(example);
|
||||
int i=listDao.deleteByPrimaryKey(id);
|
||||
JSONObject json=new JSONObject();
|
||||
json.put("code", 0);
|
||||
json.put("msg", i == 0 ? "删除失败" : "删除成功");
|
||||
return json.toJSONString();
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "rss/add.do", method = RequestMethod.POST)
|
||||
public String addAnimationRss(String title, String author, String categories, String titleKey, String bid) {
|
||||
BangumiItem item = new BangumiItem();
|
||||
item.setTitle(title);
|
||||
item.setAuthor(author);
|
||||
item.setCategories(categories);
|
||||
item.setTitlekey(titleKey);
|
||||
item.setBid(bid);
|
||||
int i = itemDao.insert(item);
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("code", 0);
|
||||
json.put("msg", i == 0 ? "添加失败" : "添加成功");
|
||||
return json.toJSONString();
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "rss/list.do", method = RequestMethod.GET)
|
||||
public String getAnimationRssList(String type) {
|
||||
JSONObject json = new JSONObject();
|
||||
BangumiItemExample example=new BangumiItemExample();
|
||||
example.createCriteria().andBidEqualTo(type);
|
||||
json.put("code", 0);
|
||||
json.put("msg", "ok");
|
||||
json.put("data", JSONArray.toJSON(itemDao.selectByExample(example)));
|
||||
return json.toJSONString();
|
||||
}
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "rss/del.do", method = RequestMethod.POST)
|
||||
public String delAnimation(int id){
|
||||
int i=itemDao.deleteByPrimaryKey(id);
|
||||
JSONObject json=new JSONObject();
|
||||
json.put("code", 0);
|
||||
json.put("msg", i == 0 ? "删除失败" : "删除成功");
|
||||
return json.toJSONString();
|
||||
}
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "client/get.do", method = RequestMethod.GET)
|
||||
public String clientApi(){
|
||||
AnimationData animationData=new AnimationData();
|
||||
List<BangumiItem> list=itemDao.selectByExample(new BangumiItemExample());
|
||||
for (BangumiItem item : list) {
|
||||
item.setCategories(animationData.nameToValue(item.getCategories(),false)+"");
|
||||
item.setAuthor(animationData.nameToValue(item.getAuthor(),true)+"");
|
||||
}
|
||||
JSONArray array= (JSONArray) JSONArray.toJSON(list);
|
||||
return array.toJSONString();
|
||||
}
|
||||
}
|
||||
62
src/main/java/com/yutou/nas/bangumi/AnimationData.java
Normal file
62
src/main/java/com/yutou/nas/bangumi/AnimationData.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package com.yutou.nas.bangumi;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yutou.nas.utils.HttpTools;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
|
||||
public class AnimationData {
|
||||
private String rss2jsonApi_1="wtfm5pebya13pnl8rtu51wfgfpte0mb9sap1foll";
|
||||
private String rss2jsonApi_2="z2s7zyzxvrsjz9vh5alvq3lxdypzykly2nnvqpdx";
|
||||
private String rss2jsonUrl = "https://api.rss2json.com/v1/api.json?rss_url=";
|
||||
private String animUrl = "http://share.dmhy.org/topics/rss/page/%s/rss.xml?keyword=%s&sort_id=%s&team_id=%s&order=date-desc";
|
||||
private String team="[{\"0\":\"全部\"},{\"117\":\"動漫花園\"},{\"669\":\"喵萌奶茶屋\"},{\"648\":\"魔星字幕团\"},{\"185\":\"极影字幕社\"},{\"619\":\"桜都字幕组\"},{\"604\":\"lleeopen\"},{\"241\":\"幻樱字幕组\"},{\"151\":\"悠哈C9字幕社\"},{\"657\":\"LoliHouse\"},{\"283\":\"千夏字幕组\"},{\"755\":\"GMTeam\"},{\"390\":\"天使动漫\"},{\"731\":\"星空字幕组\"},{\"303\":\"动漫国字幕组\"},{\"563\":\"花園壓制組\"},{\"37\":\"雪飄工作室(FLsnow)\"},{\"47\":\"爱恋字幕社\"},{\"710\":\"咪梦动漫组\"},{\"88\":\"动音漫影\"},{\"574\":\"梦蓝字幕组\"},{\"504\":\"LoveEcho!\"},{\"765\":\"爱咕字幕组\"},{\"520\":\"豌豆字幕组\"},{\"650\":\"SweetSub\"},{\"430\":\"幻之字幕组\"},{\"407\":\"DHR動研字幕組\"},{\"321\":\"轻之国度\"},{\"581\":\"VCB-Studio\"},{\"703\":\"届恋字幕组\"},{\"576\":\"银色子弹字幕组\"},{\"454\":\"风车字幕组\"},{\"485\":\"天空树双语字幕组\"},{\"134\":\"漫游字幕组\"},{\"434\":\"风之圣殿\"},{\"630\":\"枫叶字幕组\"},{\"228\":\"KRL字幕组\"},{\"526\":\"东京不够热\"},{\"592\":\"未央阁联盟\"},{\"288\":\"诸神kamigami字幕组\"},{\"767\":\"天月動漫&發佈組\"},{\"768\":\"千歲字幕組\"},{\"423\":\"漫貓字幕組\"},{\"562\":\"129.3字幕組\"},{\"447\":\"夢幻戀櫻\"},{\"680\":\"Little字幕组\"},{\"641\":\"冷番补完字幕组\"},{\"31\":\"卡通空間\"},{\"649\":\"云光字幕组\"},{\"701\":\"狐狸小宮\"},{\"459\":\"紫音動漫&發佈組\"},{\"699\":\"小花花同盟戰線\"},{\"626\":\"驯兽师联盟\"},{\"58\":\"澄空学园\"},{\"769\":\"动漫萌\"},{\"734\":\"TD-RAWS\"},{\"225\":\"鈴風字幕組\"},{\"673\":\"VRAINSTORM\"},{\"741\":\"銀月字幕組\"},{\"675\":\"AikatsuFans\"},{\"759\":\"红鸟窝字幕组\"},{\"764\":\"MCE汉化组\"},{\"391\":\"ZERO字幕组\"},{\"561\":\"钉铛字幕组\"},{\"727\":\"2B4B\"},{\"104\":\"动漫先锋\"},{\"567\":\"雪梦字幕组\"},{\"573\":\"Centaurea-Raws\"},{\"652\":\"SFEO-Raws\"},{\"666\":\"中肯字幕組\"},{\"754\":\"BYYM发布组\"},{\"613\":\"AI-Raws\"},{\"706\":\"K&W-RAWS\"},{\"732\":\"肥猫压制\"},{\"424\":\"TSDM字幕組\"},{\"739\":\"Clarita 压制组\"},{\"432\":\"自由字幕组\"},{\"217\":\"AQUA工作室\"},{\"753\":\"柠檬水字幕组\"},{\"763\":\"光之家族字幕组\"},{\"332\":\"CureSub\"},{\"537\":\"NEO·QSW\"},{\"632\":\"歐克勒亞\"},{\"548\":\"Cornflower Studio\"},{\"638\":\"LittleBakas!\"}]";
|
||||
private String type="[{\"0\":\"全部\"},{\"2\":\"動畫\"},{\"31\":\"季度全集\"},{\"3\":\"漫畫\"},{\"41\":\"港台原版\"},{\"42\":\"日文原版\"},{\"4\":\"音樂\"},{\"43\":\"動漫音樂\"},{\"44\":\"同人音樂\"},{\"15\":\"流行音樂\"},{\"6\":\"日劇\"},{\"7\":\"RAW\"},{\"9\":\"遊戲\"},{\"17\":\"電腦遊戲\"},{\"18\":\"電視遊戲\"},{\"19\":\"掌機遊戲\"},{\"20\":\"網絡遊戲\"},{\"21\":\"遊戲周邊\"},{\"12\":\"特攝\"},{\"1\":\"其他\"}]";
|
||||
|
||||
public JSONArray bangumiList(int index,String type, String team,String... keys) {
|
||||
try {
|
||||
String title = "";
|
||||
for (String key : keys) {
|
||||
System.out.println(key);
|
||||
title += key + "+";
|
||||
}
|
||||
title = title.substring(1, title.length() - 1);
|
||||
System.out.println(String.format(animUrl, "" + index, title,type,team));
|
||||
System.out.println(rss2jsonUrl + URLEncoder.encode(String.format(animUrl, "" + index, title,type,team), "UTF-8") +String.format( "&api_key=%s&count=500",rss2jsonApi_2));
|
||||
String js= HttpTools.get(rss2jsonUrl+ URLEncoder.encode(String.format(animUrl,""+index,title,type,team),"UTF-8")+String.format( "&api_key=%s&count=500",rss2jsonApi_2));
|
||||
JSONObject json=JSONObject.parseObject(js);
|
||||
if(json.getString("status").equals("ok")){
|
||||
return json.getJSONArray("items");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public int nameToValue(String name,boolean isTeam){
|
||||
JSONArray array;
|
||||
if(isTeam){
|
||||
array=JSONArray.parseArray(team);
|
||||
}else{
|
||||
array=JSONArray.parseArray(type);
|
||||
}
|
||||
for (Object o : array) {
|
||||
JSONObject json= (JSONObject) o;
|
||||
for (String s : json.keySet()) {
|
||||
if(json.get(s).equals(name)){
|
||||
return Integer.parseInt(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
public static void initData(){
|
||||
String url="https://share.dmhy.org/topics/advanced-search?team_id=0&sort_id=0&orderby=";
|
||||
String data=HttpTools.get(url);
|
||||
System.out.println(data);
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
initData();
|
||||
}
|
||||
}
|
||||
330
src/main/java/com/yutou/nas/bangumi/BangumiTools.java
Normal file
330
src/main/java/com/yutou/nas/bangumi/BangumiTools.java
Normal file
@@ -0,0 +1,330 @@
|
||||
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 org.springframework.util.StringUtils;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
public class BangumiTools {
|
||||
private static final String url = "http://api.bgm.tv/";
|
||||
private static final String toDayBangumi = url + "calendar";
|
||||
private static final String BangumiInfo = url + "/subject/%s?responseGroup=large";
|
||||
private static final String SearchBangumi = url + "/search/subject/%s?responseGroup=large";
|
||||
|
||||
/**
|
||||
* 获取番剧列表
|
||||
*
|
||||
* @param day 周几,-1为全部,非1~7范围则为当天
|
||||
* @return 当日数据
|
||||
*/
|
||||
public static JSONObject getBangumi(int day) {
|
||||
String str = HttpTools.get(toDayBangumi);
|
||||
JSONArray main = JSONArray.parseArray(str);
|
||||
if (day == -1) {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("bangumi", main);
|
||||
return json;
|
||||
}
|
||||
if (day < 1 || day > 7) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
|
||||
calendar.setFirstDayOfWeek(Calendar.MONDAY);
|
||||
calendar.setTime(new Date());
|
||||
day = calendar.get(Calendar.DAY_OF_WEEK) - 1;
|
||||
if (day == 0) {
|
||||
day = 7;
|
||||
}
|
||||
}
|
||||
if (main != null)
|
||||
for (Object o : main) {
|
||||
JSONObject json = (JSONObject) o;
|
||||
if (json.getJSONObject("weekday").getInteger("id") == day) {
|
||||
return json;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取番剧详细信息
|
||||
*
|
||||
* @param id 剧集id
|
||||
* @return 详细信息
|
||||
*/
|
||||
public static JSONObject getBangumiInfo(int id) {
|
||||
String str = HttpTools.get(String.format(BangumiInfo, id + ""));
|
||||
return JSONObject.parseObject(str);
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索番剧
|
||||
*
|
||||
* @param key 关键词
|
||||
* @return 详细信息
|
||||
*/
|
||||
public static JSONObject search(String key) {
|
||||
String str = HttpTools.get(String.format(SearchBangumi, key));
|
||||
return JSONObject.parseObject(str);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取下一集播放日期
|
||||
*
|
||||
* @param id 番剧id
|
||||
* @return 日期
|
||||
*/
|
||||
public static String getPlayNextTime(int id) {
|
||||
JSONObject info = getBangumiInfo(id);
|
||||
JSONArray eps = info.getJSONArray("eps");
|
||||
String toDayTime = Tools.getToDayTime();
|
||||
for (Object o : eps) {
|
||||
JSONObject ep = (JSONObject) o;
|
||||
String time = ep.getString("airdate");
|
||||
try {
|
||||
if (new SimpleDateFormat("yyyy-MM-dd").parse(time).getTime() >=
|
||||
new SimpleDateFormat("yyyy-MM-dd").parse(toDayTime).getTime()) {
|
||||
return time;
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化字符串输出番剧详细信息
|
||||
*
|
||||
* @param id 番剧id
|
||||
* @return 详细内容
|
||||
*/
|
||||
public static String reportBangumiInfo(int id) {
|
||||
JSONObject json = getBangumiInfo(id);
|
||||
if(json.containsKey("code")){
|
||||
return json.getString("error");
|
||||
}
|
||||
JSONArray eps = json.getJSONArray("eps");
|
||||
JSONArray crts = json.getJSONArray("crt");
|
||||
JSONArray staffs = json.getJSONArray("staff");
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("<img ").append(json.getJSONObject("images").getString("large")).append(" /img>").append("\n");
|
||||
builder.append("标题:").append(json.getString("name_cn")).append("\n");
|
||||
builder.append("日文标题:").append(json.getString("name")).append("\n");
|
||||
builder.append("首播时间:").append(json.getString("air_date")).append("\n");
|
||||
builder.append("每周").append(json.getInteger("air_weekday")).append("放送").append("\n");
|
||||
builder.append("Bangumi地址:").append(json.getString("url")).append("\n");
|
||||
builder.append("Bangumi评分:").append(json.getJSONObject("rating").getFloat("score")).append("\n");
|
||||
builder.append("预计放送集数:").append(json.getInteger("eps_count")).append("\n");
|
||||
if (eps != null) {
|
||||
builder.append("已放送集:").append("\n");
|
||||
for (Object o : eps) {
|
||||
JSONObject ep = (JSONObject) o;
|
||||
if (ep.getString("status").equals("Air")) {
|
||||
builder.append("· 第").append(ep.getInteger("sort")).append("话:");
|
||||
builder.append(ep.getString("name"));
|
||||
builder.append("[").append(ep.getString("name_cn")).append("]").append("\n");
|
||||
builder.append("播放日期:").append(ep.getString("airdate")).append(";\n");
|
||||
builder.append("播放时长:").append(ep.getString("duration")).append(";\n");
|
||||
builder.append("单集介绍:").append(ep.getString("desc"));
|
||||
builder.append("\n\n");
|
||||
} else {
|
||||
builder.append("下一话:");
|
||||
builder.append(" 第").append(ep.getInteger("sort")).append("话:");
|
||||
builder.append("播放日期:").append(ep.getString("airdate")).append("\n\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (crts != null) {
|
||||
builder.append("角色介绍:").append("\n");
|
||||
for (Object o : crts) {
|
||||
JSONObject crt = (JSONObject) o;
|
||||
JSONObject info = crt.getJSONObject("info");
|
||||
builder.append(crt.getString("role_name")).append(":");
|
||||
builder.append(crt.getString("name"));
|
||||
builder.append("(").append(crt.getString("name_cn")).append(")").append(" ");
|
||||
builder.append("CV:").append(crt.getJSONArray("actors").getJSONObject(0).getString("name"));
|
||||
builder.append("(").append(info.getString("gender")).append(")");
|
||||
builder.append("\n");
|
||||
}
|
||||
}
|
||||
Map<String, List<JSONObject>> map = new HashMap<>();
|
||||
for (Object o : staffs) {
|
||||
JSONObject staff = (JSONObject) o;
|
||||
for (Object jobs : staff.getJSONArray("jobs")) {
|
||||
String job = (String) jobs;
|
||||
List<JSONObject> list;
|
||||
if (!map.containsKey(job)) {
|
||||
list = new ArrayList<>();
|
||||
} else {
|
||||
list = map.get(job);
|
||||
}
|
||||
list.add(staff);
|
||||
map.put(job, list);
|
||||
}
|
||||
}
|
||||
if (!map.isEmpty()) {
|
||||
builder.append("staff:").append("\n");
|
||||
for (String key : map.keySet()) {
|
||||
builder.append(key).append(":");
|
||||
for (JSONObject staff : map.get(key)) {
|
||||
builder.append(staff.getString("name_cn"));
|
||||
builder.append("(").append(staff.getString("name")).append(")");
|
||||
builder.append("、");
|
||||
}
|
||||
builder.append("\n");
|
||||
}
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化输出新番列表
|
||||
* @return 新番信息
|
||||
*/
|
||||
public static String reportBangumiList(){
|
||||
try {
|
||||
JSONObject json=getBangumi(-1);
|
||||
StringBuilder builder=new StringBuilder();
|
||||
assert json != null;
|
||||
JSONArray array=json.getJSONArray("bangumi");
|
||||
for (Object o : array) {
|
||||
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);
|
||||
builder.append("\n");
|
||||
}
|
||||
return builder.toString();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return e.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
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){
|
||||
builder.append("\n");
|
||||
continue;
|
||||
}
|
||||
JSONObject info=getBangumiInfo(item.getInteger("id"));
|
||||
if(info.get("eps")==null){
|
||||
continue;
|
||||
}
|
||||
JSONArray eps = info.getJSONArray("eps");
|
||||
for (Object oe : eps) {
|
||||
JSONObject ep = (JSONObject) oe;
|
||||
if (ep.getString("status").equals("Air")) {
|
||||
epIndex = ep.getInteger("sort");
|
||||
epName = ep.getString("name");
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
builder.append(" 第").append(epIndex).append("话:");
|
||||
builder.append(epName);
|
||||
builder.append("\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化字符串输出今日播放番剧列表
|
||||
*
|
||||
* @return 番剧列表
|
||||
*/
|
||||
public static String reportToDayBangumi() {
|
||||
String toDayTime = Tools.getToDayTime();
|
||||
if (!toDayTime.equals(RedisTools.get("reportToDayBangumi"))) {
|
||||
RedisTools.set("reportToDayBangumi", toDayTime);
|
||||
StringBuilder builder = new StringBuilder();
|
||||
JSONObject toDay = getBangumi(0);
|
||||
if (toDay == null) {
|
||||
builder.append("今天没有任何番剧放送~");
|
||||
} else {
|
||||
JSONObject weekday = toDay.getJSONObject("weekday");
|
||||
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);
|
||||
}
|
||||
RedisTools.set("toDayBangumi", builder.toString());
|
||||
return builder.toString();
|
||||
} else {
|
||||
return RedisTools.get("toDayBangumi");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化字符串输出搜索动画
|
||||
*
|
||||
* @param key 关键词
|
||||
* @return 详细内容
|
||||
*/
|
||||
public static String reportSearchBangumi(String key) {
|
||||
JSONObject main = search(key);
|
||||
if (main.getInteger("results") > 0) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
List<JSONObject> list = main.getJSONArray("list").toJavaList(JSONObject.class);
|
||||
Collections.reverse(list);
|
||||
for (Object items : list) {
|
||||
JSONObject item = (JSONObject) items;
|
||||
builder.append("标题:").append(item.getString("name_cn")).append("\n");
|
||||
builder.append("日文标题:").append(item.getString("name")).append("\n");
|
||||
String type;
|
||||
switch (item.getInteger("type")) {
|
||||
case 1:
|
||||
type = "书籍";
|
||||
break;
|
||||
case 2:
|
||||
type = "动画";
|
||||
break;
|
||||
case 3:
|
||||
type = "音乐";
|
||||
break;
|
||||
case 4:
|
||||
type = "游戏";
|
||||
break;
|
||||
case 6:
|
||||
type = "真人剧(Real)";
|
||||
break;
|
||||
default:
|
||||
type = item.getInteger("type") + "";
|
||||
}
|
||||
builder.append("类型:").append(type).append("\n");
|
||||
builder.append("id:").append(item.getInteger("id")).append("\n");
|
||||
if (item.containsKey("rating"))
|
||||
builder.append("Bangumi评分:").append(item.getJSONObject("rating").getFloat("score")).append("\n");
|
||||
builder.append("首播时间:").append(item.getString("air_date")).append("\n");
|
||||
builder.append("每周 ").append(item.getInteger("air_weekday")).append(" 放送").append("\n");
|
||||
builder.append("放送集数:").append(item.getInteger("eps")).append("\n");
|
||||
builder.append("Bangumi地址:").append(item.getString("url")).append("\n");
|
||||
builder.append("介绍:").append(item.getString("summary")).append("\n");
|
||||
builder.append("\n").append("\n");
|
||||
}
|
||||
return builder.toString();
|
||||
} else {
|
||||
return "搜索不到任何内容:" + key;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String str = reportBangumiList();
|
||||
System.out.println(str);
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user