更新动漫家园订阅页面和对应API
This commit is contained in:
135
src/main/java/com/yutou/tools/bangumi/AnimationController.java
Normal file
135
src/main/java/com/yutou/tools/bangumi/AnimationController.java
Normal file
@@ -0,0 +1,135 @@
|
||||
package com.yutou.tools.bangumi;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yutou.tools.mybatis.dao.BangumiItemDao;
|
||||
import com.yutou.tools.mybatis.dao.BangumiListDao;
|
||||
import com.yutou.tools.mybatis.model.BangumiItem;
|
||||
import com.yutou.tools.mybatis.model.BangumiItemExample;
|
||||
import com.yutou.tools.mybatis.model.BangumiList;
|
||||
import com.yutou.tools.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();
|
||||
}
|
||||
}
|
||||
@@ -4,31 +4,55 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yutou.tools.utils.Tools;
|
||||
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
public class AnimationData {
|
||||
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";
|
||||
public void getData(){
|
||||
try{
|
||||
String js=Tools.get(rss2jsonUrl+ URLEncoder.encode(String.format(animUrl,"1","辉夜大小姐想让我告白"),"UTF-8"));
|
||||
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\":\"c.c动漫\"},{\"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") + "&api_key=wtfm5pebya13pnl8rtu51wfgfpte0mb9sap1foll&count=500");
|
||||
String js=Tools.get(rss2jsonUrl+ URLEncoder.encode(String.format(animUrl,""+index,title,type,team),"UTF-8")+"&api_key=wtfm5pebya13pnl8rtu51wfgfpte0mb9sap1foll&count=500");
|
||||
JSONObject json=JSONObject.parseObject(js);
|
||||
if(json.getString("status").equals("ok")){
|
||||
JSONArray items=json.getJSONArray("items");
|
||||
for (Object obj : items) {
|
||||
JSONObject item= (JSONObject) obj;
|
||||
System.out.println(item.getString("title"));
|
||||
}
|
||||
return json.getJSONArray("items");
|
||||
}
|
||||
}catch (Exception e){
|
||||
} 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 main(String[] args) {
|
||||
AnimationData data=new AnimationData();
|
||||
data.getData();
|
||||
int i=data.nameToValue("极影字幕社",true);
|
||||
System.out.println(i);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,11 @@ package com.yutou.tools.mybatis.dao;
|
||||
import com.yutou.tools.mybatis.model.BangumiItem;
|
||||
import com.yutou.tools.mybatis.model.BangumiItemExample;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@Mapper
|
||||
public interface BangumiItemDao {
|
||||
long countByExample(BangumiItemExample example);
|
||||
|
||||
|
||||
@@ -3,8 +3,11 @@ package com.yutou.tools.mybatis.dao;
|
||||
import com.yutou.tools.mybatis.model.BangumiList;
|
||||
import com.yutou.tools.mybatis.model.BangumiListExample;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@Mapper
|
||||
public interface BangumiListDao {
|
||||
long countByExample(BangumiListExample example);
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ public class BangumiItem implements Serializable {
|
||||
|
||||
private String author;
|
||||
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 标题过滤词
|
||||
*/
|
||||
|
||||
@@ -374,6 +374,76 @@ public class BangumiItemExample {
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleIsNull() {
|
||||
addCriterion("title is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleIsNotNull() {
|
||||
addCriterion("title is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleEqualTo(String value) {
|
||||
addCriterion("title =", value, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleNotEqualTo(String value) {
|
||||
addCriterion("title <>", value, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleGreaterThan(String value) {
|
||||
addCriterion("title >", value, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleGreaterThanOrEqualTo(String value) {
|
||||
addCriterion("title >=", value, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleLessThan(String value) {
|
||||
addCriterion("title <", value, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleLessThanOrEqualTo(String value) {
|
||||
addCriterion("title <=", value, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleLike(String value) {
|
||||
addCriterion("title like", value, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleNotLike(String value) {
|
||||
addCriterion("title not like", value, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleIn(List<String> values) {
|
||||
addCriterion("title in", values, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleNotIn(List<String> values) {
|
||||
addCriterion("title not in", values, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleBetween(String value1, String value2) {
|
||||
addCriterion("title between", value1, value2, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitleNotBetween(String value1, String value2) {
|
||||
addCriterion("title not between", value1, value2, "title");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTitlekeyIsNull() {
|
||||
addCriterion("titleKey is null");
|
||||
return (Criteria) this;
|
||||
|
||||
@@ -13,8 +13,6 @@ public class BangumiList implements Serializable {
|
||||
|
||||
private String title;
|
||||
|
||||
private String rsskey;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -234,76 +234,6 @@ public class BangumiListExample {
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyIsNull() {
|
||||
addCriterion("rssKey is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyIsNotNull() {
|
||||
addCriterion("rssKey is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyEqualTo(String value) {
|
||||
addCriterion("rssKey =", value, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyNotEqualTo(String value) {
|
||||
addCriterion("rssKey <>", value, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyGreaterThan(String value) {
|
||||
addCriterion("rssKey >", value, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyGreaterThanOrEqualTo(String value) {
|
||||
addCriterion("rssKey >=", value, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyLessThan(String value) {
|
||||
addCriterion("rssKey <", value, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyLessThanOrEqualTo(String value) {
|
||||
addCriterion("rssKey <=", value, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyLike(String value) {
|
||||
addCriterion("rssKey like", value, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyNotLike(String value) {
|
||||
addCriterion("rssKey not like", value, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyIn(List<String> values) {
|
||||
addCriterion("rssKey in", values, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyNotIn(List<String> values) {
|
||||
addCriterion("rssKey not in", values, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyBetween(String value1, String value2) {
|
||||
addCriterion("rssKey between", value1, value2, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andRsskeyNotBetween(String value1, String value2) {
|
||||
addCriterion("rssKey not between", value1, value2, "rsskey");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusIsNull() {
|
||||
addCriterion("`status` is null");
|
||||
return (Criteria) this;
|
||||
|
||||
@@ -9,6 +9,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.util.Enumeration;
|
||||
|
||||
@Controller
|
||||
public class tools {
|
||||
@@ -32,4 +35,30 @@ public class tools {
|
||||
json.put("data",array);
|
||||
return json.toJSONString();
|
||||
}
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "tools/get.do")
|
||||
public String getJs(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
Enumeration<String> name=request.getHeaderNames();
|
||||
while (name.hasMoreElements()){
|
||||
String na=name.nextElement();
|
||||
System.out.println(na+" "+request.getHeader(na));
|
||||
}
|
||||
File file=new File("D:\\IDEA\\web_toolset\\web\\js\\my.js");
|
||||
BufferedReader reader=new BufferedReader(new FileReader(file));
|
||||
String tmp,str="";
|
||||
while ((tmp=reader.readLine())!=null){
|
||||
if(tmp.contains("\"")){
|
||||
// tmp=tmp.replace("\"","\\\"");
|
||||
}
|
||||
str+=tmp;
|
||||
}
|
||||
reader.close();
|
||||
/* response.setHeader("Content-Type","application/javascript; charset=utf-8");
|
||||
PrintWriter writer=response.getWriter();
|
||||
writer.write(str);
|
||||
writer.flush();
|
||||
writer.close();*/
|
||||
return str;
|
||||
//return "function test(){ return \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1588139022200&di=8cc8405f7514dd54bd82fcd070349603&imgtype=0&src=http%3A%2F%2Fa2.att.hudong.com%2F36%2F48%2F19300001357258133412489354717.jpg\" }";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user