Merge branch 'main' of https://github.com/FongMi/CatVodSpider
This commit is contained in:
commit
7d126bf997
|
|
@ -0,0 +1,145 @@
|
|||
package com.github.catvod.spider;
|
||||
|
||||
import android.content.Context;
|
||||
import com.github.catvod.bean.Class;
|
||||
import com.github.catvod.bean.Result;
|
||||
import com.github.catvod.bean.Vod;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
import com.github.catvod.net.OkHttp;
|
||||
import com.github.catvod.utils.Utils;
|
||||
import com.google.gson.JsonParser;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
|
||||
public class Douban extends Spider {
|
||||
private final String hostURL = "https://frodo.douban.com/api/v2";
|
||||
private final String apikey = "?apikey=0ac44ae016490db2204ce0a042db2916";
|
||||
private String extend;
|
||||
|
||||
private Map<String, String> getHeader() {
|
||||
Map<String, String> header = new HashMap<>();
|
||||
header.put("Host", "frodo.douban.com");
|
||||
header.put("Connection", "Keep-Alive");
|
||||
header.put("Referer", "https://servicewechat.com/wx2f9b06c1de1ccfca/84/page-frame.html");
|
||||
header.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat");
|
||||
return header;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context, String extend) throws Exception {
|
||||
super.init(context, extend);
|
||||
this.extend = extend;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String homeContent(boolean filter) throws Exception {
|
||||
List<Class> classes = new ArrayList<>();
|
||||
List<String> typeIds = Arrays.asList("hot_gaia", "tv_hot", "show_hot", "movie", "tv", "rank_list_movie", "rank_list_tv");
|
||||
List<String> typeNames = Arrays.asList("热门电影", "热播剧集", "热播综艺", "电影筛选", "电视筛选", "电影榜单", "电视剧榜单");
|
||||
for (int i = 0; i < typeIds.size(); i++) classes.add(new Class(typeIds.get(i), typeNames.get(i)));
|
||||
String recommendURL = "http://api.douban.com/api/v2/subject_collection/subject_real_time_hotest/items" + apikey;
|
||||
JSONObject jsonObject = new JSONObject(OkHttp.string(recommendURL, getHeader()));
|
||||
JSONArray items = jsonObject.optJSONArray("subject_collection_items");
|
||||
return Result.string(classes, parseVodListFromJSONArray(items), filter ? JsonParser.parseString(OkHttp.string(extend)) : null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) throws Exception {
|
||||
HashMap<String, String> ext = new HashMap<>();
|
||||
if (extend != null && extend.size() > 0) {
|
||||
ext.putAll(extend);
|
||||
}
|
||||
String sort = ext.get("sort") == null ? "T" : ext.get("sort");
|
||||
String tags = URLEncoder.encode(getTags(ext));
|
||||
int start = (Integer.parseInt(pg) - 1) * 20;
|
||||
String cateURL;
|
||||
String itemKey = "items";
|
||||
switch (tid) {
|
||||
case "hot_gaia":
|
||||
sort = ext.get("sort") == null ? "recommend" : ext.get("sort");
|
||||
String area = ext.get("area") == null ? "全部" : ext.get("area");
|
||||
sort = sort + "&area=" + URLEncoder.encode(area);
|
||||
cateURL = hostURL + "/movie/hot_gaia" + apikey + "&sort=" + sort + "&start=" + start + "&count=20";
|
||||
break;
|
||||
case "tv_hot":
|
||||
String type = ext.get("type") == null ? "tv_hot" : ext.get("type");
|
||||
cateURL = hostURL + "/subject_collection/" + type + "/items" + apikey + "&start=" + start + "&count=20";
|
||||
itemKey = "subject_collection_items";
|
||||
break;
|
||||
case "show_hot":
|
||||
String showType = ext.get("type") == null ? "show_hot" : ext.get("type");
|
||||
cateURL = hostURL + "/subject_collection/" + showType + "/items" + apikey + "&start=" + start + "&count=20";
|
||||
itemKey = "subject_collection_items";
|
||||
break;
|
||||
case "tv":
|
||||
cateURL = hostURL + "/tv/recommend" + apikey + "&sort=" + sort + "&tags=" + tags + "&start=" + start + "&count=20";
|
||||
break;
|
||||
case "rank_list_movie":
|
||||
String rankMovieType = ext.get("榜单") == null ? "movie_real_time_hotest" : ext.get("榜单");
|
||||
cateURL = hostURL + "/subject_collection/" + rankMovieType + "/items" + apikey + "&start=" + start + "&count=20";
|
||||
itemKey = "subject_collection_items";
|
||||
break;
|
||||
case "rank_list_tv":
|
||||
String rankTVType = ext.get("榜单") == null ? "tv_real_time_hotest" : ext.get("榜单");
|
||||
cateURL = hostURL + "/subject_collection/" + rankTVType + "/items" + apikey + "&start=" + start + "&count=20";
|
||||
itemKey = "subject_collection_items";
|
||||
break;
|
||||
default:
|
||||
cateURL = hostURL + "/movie/recommend" + apikey + "&sort=" + sort + "&tags=" + tags + "&start=" + start + "&count=20";
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject(OkHttp.string(cateURL, getHeader()));
|
||||
JSONArray items = jsonObject.getJSONArray(itemKey);
|
||||
List<Vod> list = parseVodListFromJSONArray(items);
|
||||
int page = Integer.parseInt(pg), count = Integer.MAX_VALUE, limit = 20, total = Integer.MAX_VALUE;
|
||||
return Result.get().vod(list).page(page, count, limit, total).string();
|
||||
}
|
||||
|
||||
private List<Vod> parseVodListFromJSONArray(JSONArray items) throws Exception {
|
||||
List<Vod> list = new ArrayList<>();
|
||||
for (int i = 0; i < items.length(); i++) {
|
||||
JSONObject item = items.getJSONObject(i);
|
||||
String vodId = "msearch:" + item.optString("id");
|
||||
String name = item.optString("title");
|
||||
String pic = getPic(item);
|
||||
String remark = getRating(item);
|
||||
list.add(new Vod(vodId, name, pic, remark));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private String getRating(JSONObject item) {
|
||||
try {
|
||||
return "评分:" + item.getJSONObject("rating").optString("value");
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private String getPic(JSONObject item) {
|
||||
try {
|
||||
return item.getJSONObject("pic").optString("normal") + "@Referer=https://api.douban.com/@User-Agent=" + Utils.CHROME;
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private String getTags(HashMap<String, String> ext) {
|
||||
try {
|
||||
StringBuilder tags = new StringBuilder();
|
||||
for (String key : ext.keySet()) {
|
||||
if (key.equals("sort")) continue;
|
||||
tags.append(ext.get(key)).append(",");
|
||||
}
|
||||
return tags.substring(0, tags.lastIndexOf(","));
|
||||
} catch (Exception e) {
|
||||
// SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,253 @@
|
|||
package com.github.catvod.spider;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import com.github.catvod.bean.Class;
|
||||
import com.github.catvod.bean.Filter;
|
||||
import com.github.catvod.bean.Result;
|
||||
import com.github.catvod.bean.Vod;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
import com.github.catvod.net.OkHttp;
|
||||
import com.github.catvod.utils.Utils;
|
||||
import okhttp3.FormBody;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.Response;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* @author zhixc
|
||||
* 新版6V电影网
|
||||
*/
|
||||
public class Xb6v extends Spider {
|
||||
|
||||
private final String siteURL = "http://www.xb6v.com";
|
||||
private String nextSearchURLPrefix;
|
||||
private String nextSearchURLSuffix;
|
||||
|
||||
private Map<String, String> getHeader() {
|
||||
Map<String, String> header = new HashMap<>();
|
||||
header.put("User-Agent", Utils.CHROME);
|
||||
header.put("Referer", siteURL + "/");
|
||||
return header;
|
||||
}
|
||||
|
||||
private Map<String, String> getDetailHeader() {
|
||||
Map<String, String> header = new HashMap<>();
|
||||
header.put("User-Agent", Utils.CHROME);
|
||||
return header;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String homeContent(boolean filter) throws Exception {
|
||||
List<Class> classes = new ArrayList<>();
|
||||
String html = OkHttp.string(siteURL, getHeader());
|
||||
Document doc = Jsoup.parse(html);
|
||||
Elements elements = doc.select("#menus > li > a");
|
||||
LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>();
|
||||
for (int i = 0; i < elements.size(); i++) {
|
||||
if (i < 2 || i == elements.size() - 1) continue;
|
||||
Element e = elements.get(i);
|
||||
String typeId = e.attr("href");
|
||||
String typeName = e.text();
|
||||
if (typeName.equals("电视剧")) {
|
||||
List<Filter.Value> values = new ArrayList<>();
|
||||
values.add(new Filter.Value("不限", ""));
|
||||
for (Element a : e.nextElementSibling().select("a")) {
|
||||
values.add(new Filter.Value(a.text(), a.attr("href").replaceAll(typeId, "")));
|
||||
}
|
||||
List<Filter> filterList = new ArrayList<>();
|
||||
filterList.add(new Filter("cateId", "类型", values));
|
||||
filters.put(typeId, filterList);
|
||||
}
|
||||
classes.add(new Class(typeId, typeName));
|
||||
}
|
||||
return Result.string(classes, parseVodListFromDoc(doc), filters);
|
||||
}
|
||||
|
||||
private List<Vod> parseVodListFromDoc(Document doc) {
|
||||
Elements items = doc.select("#post_container .post_hover");
|
||||
List<Vod> list = new ArrayList<>();
|
||||
for (Element item : items) {
|
||||
Element element = item.select("[class=zoom]").get(0);
|
||||
String vodId = element.attr("href");
|
||||
String name = element.attr("title").replaceAll("</?[^>]+>", "");
|
||||
String pic = element.select("img").attr("src");
|
||||
String remark = item.select("[rel=category tag]").text();
|
||||
list.add(new Vod(vodId, name, pic, remark));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) throws Exception {
|
||||
HashMap<String, String> ext = new HashMap<>();
|
||||
if (extend != null && extend.size() > 0) {
|
||||
ext.putAll(extend);
|
||||
}
|
||||
String cateId = ext.get("cateId") == null ? "" : ext.get("cateId");
|
||||
String cateURL = siteURL + tid + cateId;
|
||||
if (!pg.equals("1")) cateURL += "index_" + pg + ".html";
|
||||
String html = OkHttp.string(cateURL, getHeader());
|
||||
Document doc = Jsoup.parse(html);
|
||||
String href = doc.select(".pagination > a").last().attr("href");
|
||||
int page = Integer.parseInt(pg);
|
||||
int count = Integer.parseInt(getStrByRegex(Pattern.compile("index_(.*?).html"), href));
|
||||
int limit = 18;
|
||||
Elements items = doc.select("#post_container .post_hover");
|
||||
int total = page == count ? (page - 1) * limit + items.size() : count * limit;
|
||||
return Result.get().vod(parseVodListFromDoc(doc)).page(page, count, limit, total).string();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String detailContent(List<String> ids) throws Exception {
|
||||
String vodId = ids.get(0);
|
||||
String detailURL = siteURL + vodId;
|
||||
String html = OkHttp.string(detailURL, getDetailHeader());
|
||||
Document doc = Jsoup.parse(html);
|
||||
Elements sourceList = doc.select("#post_content");
|
||||
|
||||
String circuitName = "磁力线路";
|
||||
Map<String, String> playMap = new LinkedHashMap<>();
|
||||
int i = 0;
|
||||
for (Element source : sourceList) {
|
||||
Elements aList = source.select("table a");
|
||||
List<String> vodItems = new ArrayList<>();
|
||||
for (Element a : aList) {
|
||||
String episodeURL = a.attr("href");
|
||||
String episodeName = a.text();
|
||||
if (!episodeURL.toLowerCase().startsWith("magnet")) continue;
|
||||
vodItems.add(episodeName + "$" + episodeURL);
|
||||
}
|
||||
if (vodItems.size() > 0) {
|
||||
i++;
|
||||
playMap.put(circuitName + i, TextUtils.join("#", vodItems));
|
||||
}
|
||||
}
|
||||
|
||||
String partHTML = doc.select(".context").html();
|
||||
String name = doc.select(".article_container > h1").text();
|
||||
String pic = doc.select("#post_content img").attr("src");
|
||||
String typeName = getStrByRegex(Pattern.compile("◎类 别 (.*?)<br>"), partHTML);
|
||||
if (typeName.equals("")) typeName = doc.select("[rel=category tag]").text();
|
||||
String year = getStrByRegex(Pattern.compile("◎年 代 (.*?)<br>"), partHTML);
|
||||
if (year.equals("")) year = getStrByRegex(Pattern.compile("首播:(.*?)<br>"), partHTML);
|
||||
String area = getStrByRegex(Pattern.compile("◎产 地 (.*?)<br>"), partHTML);
|
||||
if (area.equals("")) area = getStrByRegex(Pattern.compile("地区:(.*?)<br>"), partHTML);
|
||||
String remark = getStrByRegex(Pattern.compile("◎上映日期 (.*?)<br>"), partHTML);
|
||||
String actor = getActorOrDirector(Pattern.compile("◎演 员 (.*?)</p>"), partHTML);
|
||||
if (actor.equals("")) actor = getActorOrDirector(Pattern.compile("◎主 演 (.*?)</p>"), partHTML);
|
||||
if (actor.equals("")) actor = getActorOrDirector(Pattern.compile("主演:(.*?)<br>"), partHTML);
|
||||
String director = getActorOrDirector(Pattern.compile("◎导 演 (.*?)<br>"), partHTML);
|
||||
if (director.equals("")) director = getActorOrDirector(Pattern.compile("导演:(.*?)<br>"), partHTML);
|
||||
String description = getDescription(Pattern.compile("◎简 介(.*?)<hr>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL), partHTML);
|
||||
if (description.equals("")) description = getDescription(Pattern.compile("简介(.*?)</p>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL), partHTML);
|
||||
|
||||
Vod vod = new Vod();
|
||||
vod.setVodId(ids.get(0));
|
||||
vod.setVodName(name);
|
||||
vod.setVodPic(pic);
|
||||
vod.setTypeName(typeName);
|
||||
vod.setVodYear(year);
|
||||
vod.setVodArea(area);
|
||||
vod.setVodRemarks(remark);
|
||||
vod.setVodActor(actor);
|
||||
vod.setVodDirector(director);
|
||||
vod.setVodContent(description);
|
||||
if (playMap.size() > 0) {
|
||||
vod.setVodPlayFrom(TextUtils.join("$$$", playMap.keySet()));
|
||||
vod.setVodPlayUrl(TextUtils.join("$$$", playMap.values()));
|
||||
}
|
||||
return Result.string(vod);
|
||||
}
|
||||
|
||||
private String getStrByRegex(Pattern pattern, String str) {
|
||||
try {
|
||||
Matcher matcher = pattern.matcher(str);
|
||||
if (matcher.find()) {
|
||||
return matcher.group(1).trim();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private String getActorOrDirector(Pattern pattern, String str) {
|
||||
return getStrByRegex(pattern, str)
|
||||
.replaceAll("<br>", "")
|
||||
.replaceAll(" ", "")
|
||||
.replaceAll("&", "")
|
||||
.replaceAll("middot;", "・")
|
||||
.replaceAll(" ", ",")
|
||||
.replaceAll(" ", ",");
|
||||
}
|
||||
|
||||
private String getDescription(Pattern pattern, String str) {
|
||||
return getStrByRegex(pattern, str)
|
||||
.replaceAll("</?[^>]+>", "")
|
||||
.replaceAll("\n", "")
|
||||
.replaceAll(" ", "")
|
||||
.replaceAll("&", "")
|
||||
.replaceAll("middot;", "・")
|
||||
.replaceAll("ldquo;", "【")
|
||||
.replaceAll("rdquo;", "】");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String searchContent(String key, boolean quick) throws Exception {
|
||||
return searchContent(key, quick, "1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String searchContent(String key, boolean quick, String pg) throws Exception {
|
||||
String searchURL = siteURL + "/e/search/index.php";
|
||||
String html;
|
||||
if (pg.equals("1")) {
|
||||
RequestBody formBody = new FormBody.Builder()
|
||||
.add("show", "title")
|
||||
.add("tempid", "1")
|
||||
.add("tbname", "article")
|
||||
.add("mid", "1")
|
||||
.add("dopost", "search")
|
||||
.add("submit", "")
|
||||
.addEncoded("keyboard", key)
|
||||
.build();
|
||||
Request request = new Request.Builder()
|
||||
.url(searchURL)
|
||||
.addHeader("User-Agent", Utils.CHROME)
|
||||
.addHeader("Origin", siteURL)
|
||||
.addHeader("Referer", siteURL + "/")
|
||||
.post(formBody)
|
||||
.build();
|
||||
Response response = OkHttp.client().newCall(request).execute();
|
||||
if (response.body() == null) return "";
|
||||
initNextSearchURL(response);
|
||||
html = response.body().string();
|
||||
response.close();
|
||||
} else {
|
||||
int page = Integer.parseInt(pg) - 1;
|
||||
searchURL = nextSearchURLPrefix + page + nextSearchURLSuffix;
|
||||
html = OkHttp.string(searchURL, getHeader());
|
||||
}
|
||||
return Result.string(parseVodListFromDoc(Jsoup.parse(html)));
|
||||
}
|
||||
|
||||
private void initNextSearchURL(Response response) {
|
||||
String[] split = String.valueOf(response.request().url()).split("\\?searchid=");
|
||||
nextSearchURLPrefix = split[0] + "index.php?page=";
|
||||
nextSearchURLSuffix = "&searchid=" + split[1];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
|
||||
return Result.get().url(id).string();
|
||||
}
|
||||
}
|
||||
600
json/adult.json
600
json/adult.json
|
|
@ -2,22 +2,6 @@
|
|||
"spider": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;386aa45681818befd51ff5008f88f4e5",
|
||||
"wallpaper": "https://gao.chuqiuyu.tk",
|
||||
"sites": [
|
||||
{
|
||||
"key": "AList",
|
||||
"name": "AList",
|
||||
"type": 3,
|
||||
"api": "csp_AList",
|
||||
"searchable": 1,
|
||||
"changeable": 0,
|
||||
"ext": {
|
||||
"drives": [
|
||||
{
|
||||
"name": "SOD",
|
||||
"server": "https://a.sodaz.xyz"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "泥巴",
|
||||
"name": "泥巴",
|
||||
|
|
@ -54,6 +38,7 @@
|
|||
"type": 3,
|
||||
"api": "csp_Doll",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.309
|
||||
|
|
@ -65,6 +50,7 @@
|
|||
"type": 3,
|
||||
"api": "csp_Eighteen",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.485
|
||||
|
|
@ -76,6 +62,7 @@
|
|||
"type": 3,
|
||||
"api": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodOpen/main/open/18a_open.js",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.485
|
||||
|
|
@ -87,6 +74,7 @@
|
|||
"type": 3,
|
||||
"api": "csp_Jable",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.77
|
||||
|
|
@ -98,6 +86,7 @@
|
|||
"type": 3,
|
||||
"api": "csp_Miss",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.78
|
||||
|
|
@ -109,38 +98,15 @@
|
|||
"type": 3,
|
||||
"api": "csp_Hanime",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 0.68
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "dadiapi.com",
|
||||
"name": "成人01",
|
||||
"type": 0,
|
||||
"api": "http://dadiapi.com/api.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "jcspcj8.com",
|
||||
"name": "成人02",
|
||||
"type": 0,
|
||||
"api": "http://jcspcj8.com/api?ac=videolist",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "apilj.com",
|
||||
"name": "成人03",
|
||||
"name": "成人01",
|
||||
"type": 1,
|
||||
"api": "http://apilj.com/api.php/provide/vod/at/json/",
|
||||
"searchable": 1,
|
||||
|
|
@ -151,10 +117,10 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"key": "secj8.com",
|
||||
"name": "成人04",
|
||||
"key": "dadiapi.com",
|
||||
"name": "成人02",
|
||||
"type": 0,
|
||||
"api": "http://secj8.com/inc/sapi.php?ac=videolist",
|
||||
"api": "http://dadiapi.com/api.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
|
|
@ -164,7 +130,7 @@
|
|||
},
|
||||
{
|
||||
"key": "91md.me",
|
||||
"name": "成人05",
|
||||
"name": "成人03",
|
||||
"type": 1,
|
||||
"api": "http://91md.me/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
|
|
@ -174,6 +140,30 @@
|
|||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "jcspcj8.com",
|
||||
"name": "成人04",
|
||||
"type": 0,
|
||||
"api": "http://jcspcj8.com/api?ac=videolist",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "bttcj.com",
|
||||
"name": "成人05",
|
||||
"type": 0,
|
||||
"api": "http://bttcj.com/inc/sapi.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "cjmygzy.com",
|
||||
"name": "成人06",
|
||||
|
|
@ -186,21 +176,9 @@
|
|||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "bttcj.com",
|
||||
"name": "成人07",
|
||||
"type": 0,
|
||||
"api": "http://bttcj.com/inc/sapi.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "api.sexnguon.com",
|
||||
"name": "成人08",
|
||||
"name": "成人07",
|
||||
"type": 1,
|
||||
"api": "http://api.sexnguon.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
|
|
@ -212,7 +190,7 @@
|
|||
},
|
||||
{
|
||||
"key": "feifei67.com",
|
||||
"name": "成人09",
|
||||
"name": "成人08",
|
||||
"type": 1,
|
||||
"api": "http://www.feifei67.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
|
|
@ -224,7 +202,7 @@
|
|||
},
|
||||
{
|
||||
"key": "llzxcj.com",
|
||||
"name": "成人10",
|
||||
"name": "成人09",
|
||||
"type": 0,
|
||||
"api": "http://llzxcj.com/inc/sck.php?ac=videolist",
|
||||
"searchable": 1,
|
||||
|
|
@ -236,7 +214,7 @@
|
|||
},
|
||||
{
|
||||
"key": "f2dcj6.com",
|
||||
"name": "成人11",
|
||||
"name": "成人10",
|
||||
"type": 0,
|
||||
"api": "http://f2dcj6.com/sapi?ac=videolist",
|
||||
"searchable": 1,
|
||||
|
|
@ -246,6 +224,18 @@
|
|||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "ggmmzy.com",
|
||||
"name": "成人11",
|
||||
"type": 0,
|
||||
"api": "http://www.ggmmzy.com:9999/inc/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "fhapi9.com",
|
||||
"name": "成人12",
|
||||
|
|
@ -258,177 +248,9 @@
|
|||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "sdszyapi.com",
|
||||
"name": "成人13",
|
||||
"type": 0,
|
||||
"api": "http://sdszyapi.com/home/cjapi/asbb/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji07.com",
|
||||
"name": "成人14",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji07.com/home/cjapi/cfcf/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "ggmmzy.com",
|
||||
"name": "成人15",
|
||||
"type": 0,
|
||||
"api": "http://www.ggmmzy.com:9999/inc/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji05.com",
|
||||
"name": "成人16",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji05.com/home/cjapi/cfda/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji08.com",
|
||||
"name": "成人17",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji08.com/home/cjapi/cfkl/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji09.com",
|
||||
"name": "成人18",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji09.com/home/cjapi/cfp0/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji04.com",
|
||||
"name": "成人19",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji04.com/home/cjapi/cfc7/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji03.com",
|
||||
"name": "成人20",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji03.com/home/cjapi/cfg8/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji10.com",
|
||||
"name": "成人21",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji10.com/home/cjapi/cfs6/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji01.com",
|
||||
"name": "成人22",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji01.com/home/cjapi/cfd2/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji02.com",
|
||||
"name": "成人23",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji02.com/home/cjapi/cfas/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "dmmapi.com",
|
||||
"name": "成人24",
|
||||
"type": 0,
|
||||
"api": "http://www.dmmapi.com/home/cjapi/asd2c7/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "lbapiby.com",
|
||||
"name": "成人25",
|
||||
"type": 0,
|
||||
"api": "http://lbapiby.com/api.php/provide/vod/at/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "xjjzyapi.com",
|
||||
"name": "成人26",
|
||||
"type": 0,
|
||||
"api": "http://xjjzyapi.com/home/cjapi/askl/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "madouse.la",
|
||||
"name": "成人27",
|
||||
"name": "成人13",
|
||||
"type": 1,
|
||||
"api": "http://madouse.la/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
|
|
@ -439,58 +261,10 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji21.com",
|
||||
"name": "成人28",
|
||||
"key": "lbapiby.com",
|
||||
"name": "成人14",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji21.com/home/cjapi/klkl/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji22.com",
|
||||
"name": "成人29",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji22.com/home/cjapi/klp0/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji26.com",
|
||||
"name": "成人30",
|
||||
"type": 0,
|
||||
"api": "http://caiji26.com/home/cjapi/p0g8/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji23.com",
|
||||
"name": "成人31",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji23.com/home/cjapi/kls6/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji25.com",
|
||||
"name": "成人32",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji25.com/home/cjapi/p0as/mc10/vod/xml",
|
||||
"api": "http://lbapiby.com/api.php/provide/vod/at/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
|
|
@ -500,7 +274,7 @@
|
|||
},
|
||||
{
|
||||
"key": "api.maozyapi.com",
|
||||
"name": "成人33",
|
||||
"name": "成人15",
|
||||
"type": 1,
|
||||
"api": "https://api.maozyapi.com/inc/apijson_vod.php",
|
||||
"searchable": 1,
|
||||
|
|
@ -510,81 +284,9 @@
|
|||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji24.com",
|
||||
"name": "成人34",
|
||||
"type": 0,
|
||||
"api": "http://www.caiji24.com/home/cjapi/p0d2/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "888dav.com",
|
||||
"name": "成人35",
|
||||
"type": 1,
|
||||
"api": "https://www.888dav.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "mgzyz1.com",
|
||||
"name": "成人36",
|
||||
"type": 1,
|
||||
"api": "https://mgzyz1.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "caiji.huakuiapi.com",
|
||||
"name": "成人37",
|
||||
"type": 1,
|
||||
"api": "https://caiji.huakuiapi.com/inc/apijson_vod.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "mgav1.cc",
|
||||
"name": "成人38",
|
||||
"type": 0,
|
||||
"api": "https://www.mgav1.cc/api.php/provide/vod/at/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "pgxdy.com",
|
||||
"name": "成人39",
|
||||
"type": 0,
|
||||
"api": "https://www.pgxdy.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "msnii.com",
|
||||
"name": "成人40",
|
||||
"name": "成人16",
|
||||
"type": 0,
|
||||
"api": "https://www.msnii.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
|
|
@ -594,105 +296,9 @@
|
|||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "afasu.com",
|
||||
"name": "成人41",
|
||||
"type": 0,
|
||||
"api": "https://www.afasu.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "52zyapi.com",
|
||||
"name": "成人42",
|
||||
"type": 0,
|
||||
"api": "https://52zyapi.com/home/cjapi/asda/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "lbapi9.com",
|
||||
"name": "成人43",
|
||||
"type": 1,
|
||||
"api": "https://lbapi9.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "apittzy.com",
|
||||
"name": "成人44",
|
||||
"type": 1,
|
||||
"api": "https://apittzy.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "kkzy.me",
|
||||
"name": "成人45",
|
||||
"type": 1,
|
||||
"api": "https://kkzy.me/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "xrbsp.com",
|
||||
"name": "成人46",
|
||||
"type": 0,
|
||||
"api": "https://www.xrbsp.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "xx55zyapi.com",
|
||||
"name": "成人47",
|
||||
"type": 0,
|
||||
"api": "https://xx55zyapi.com/home/cjapi/ascf/mc10/vod/xml",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "kxgav.com",
|
||||
"name": "成人48",
|
||||
"type": 0,
|
||||
"api": "https://www.kxgav.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "gdlsp.com",
|
||||
"name": "成人49",
|
||||
"name": "成人17",
|
||||
"type": 0,
|
||||
"api": "https://www.gdlsp.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
|
|
@ -703,10 +309,10 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"key": "sewozyapi.com",
|
||||
"name": "成人50",
|
||||
"key": "caiji.huakuiapi.com",
|
||||
"name": "成人18",
|
||||
"type": 1,
|
||||
"api": "https://sewozyapi.com/api.php/provide/vod/",
|
||||
"api": "https://caiji.huakuiapi.com/inc/apijson_vod.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
|
|
@ -715,10 +321,10 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"key": "jgczyapi.com",
|
||||
"name": "成人51",
|
||||
"key": "kxgav.com",
|
||||
"name": "成人19",
|
||||
"type": 0,
|
||||
"api": "https://jgczyapi.com/home/cjapi/kld2/mc10/vod/xml",
|
||||
"api": "https://www.kxgav.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
|
|
@ -727,10 +333,82 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"key": "api.apilyzy.com",
|
||||
"name": "成人52",
|
||||
"key": "xrbsp.com",
|
||||
"name": "成人20",
|
||||
"type": 0,
|
||||
"api": "https://www.xrbsp.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "pgxdy.com",
|
||||
"name": "成人21",
|
||||
"type": 0,
|
||||
"api": "https://www.pgxdy.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "afasu.com",
|
||||
"name": "成人22",
|
||||
"type": 0,
|
||||
"api": "https://www.afasu.com/api/xml.php",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "kkzy.me",
|
||||
"name": "成人23",
|
||||
"type": 1,
|
||||
"api": "https://api.apilyzy.com/api.php/provide/vod/",
|
||||
"api": "https://kkzy.me/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "888dav.com",
|
||||
"name": "成人24",
|
||||
"type": 1,
|
||||
"api": "https://www.888dav.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "apittzy.com",
|
||||
"name": "成人25",
|
||||
"type": 1,
|
||||
"api": "https://apittzy.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.33
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "lbapi9.com",
|
||||
"name": "成人26",
|
||||
"type": 1,
|
||||
"api": "https://lbapi9.com/api.php/provide/vod/",
|
||||
"searchable": 1,
|
||||
"recordable": 0,
|
||||
"style": {
|
||||
|
|
|
|||
|
|
@ -98,6 +98,23 @@
|
|||
"经典片"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "豆瓣",
|
||||
"name": "豆瓣",
|
||||
"type": 3,
|
||||
"api": "csp_Douban",
|
||||
"searchable": 0,
|
||||
"changeable": 1,
|
||||
"ext": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/douban.json"
|
||||
},
|
||||
{
|
||||
"key": "新版6V电影网",
|
||||
"name": "新版6V电影网",
|
||||
"type": 3,
|
||||
"api": "csp_Xb6v",
|
||||
"searchable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "暴風",
|
||||
"name": "暴風",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,794 @@
|
|||
{
|
||||
"hot_gaia": [
|
||||
{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "热度",
|
||||
"v": "recommend"
|
||||
},
|
||||
{
|
||||
"n": "最新",
|
||||
"v": "time"
|
||||
},
|
||||
{
|
||||
"n": "评分",
|
||||
"v": "rank"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "area",
|
||||
"name": "地区",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "全部"
|
||||
},
|
||||
{
|
||||
"n": "华语",
|
||||
"v": "华语"
|
||||
},
|
||||
{
|
||||
"n": "欧美",
|
||||
"v": "欧美"
|
||||
},
|
||||
{
|
||||
"n": "韩国",
|
||||
"v": "韩国"
|
||||
},
|
||||
{
|
||||
"n": "日本",
|
||||
"v": "日本"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tv_hot": [
|
||||
{
|
||||
"key": "type",
|
||||
"name": "分类",
|
||||
"value": [
|
||||
{
|
||||
"n": "综合",
|
||||
"v": "tv_hot"
|
||||
},
|
||||
{
|
||||
"n": "国产剧",
|
||||
"v": "tv_domestic"
|
||||
},
|
||||
{
|
||||
"n": "欧美剧",
|
||||
"v": "tv_american"
|
||||
},
|
||||
{
|
||||
"n": "日剧",
|
||||
"v": "tv_japanese"
|
||||
},
|
||||
{
|
||||
"n": "韩剧",
|
||||
"v": "tv_korean"
|
||||
},
|
||||
{
|
||||
"n": "动画",
|
||||
"v": "tv_animation"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"show_hot": [
|
||||
{
|
||||
"key": "type",
|
||||
"name": "分类",
|
||||
"value": [
|
||||
{
|
||||
"n": "综合",
|
||||
"v": "show_hot"
|
||||
},
|
||||
{
|
||||
"n": "国内",
|
||||
"v": "show_domestic"
|
||||
},
|
||||
{
|
||||
"n": "国外",
|
||||
"v": "show_foreign"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"movie": [
|
||||
{
|
||||
"key": "类型",
|
||||
"name": "类型",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部类型",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "喜剧",
|
||||
"v": "喜剧"
|
||||
},
|
||||
{
|
||||
"n": "爱情",
|
||||
"v": "爱情"
|
||||
},
|
||||
{
|
||||
"n": "动作",
|
||||
"v": "动作"
|
||||
},
|
||||
{
|
||||
"n": "科幻",
|
||||
"v": "科幻"
|
||||
},
|
||||
{
|
||||
"n": "动画",
|
||||
"v": "动画"
|
||||
},
|
||||
{
|
||||
"n": "悬疑",
|
||||
"v": "悬疑"
|
||||
},
|
||||
{
|
||||
"n": "犯罪",
|
||||
"v": "犯罪"
|
||||
},
|
||||
{
|
||||
"n": "惊悚",
|
||||
"v": "惊悚"
|
||||
},
|
||||
{
|
||||
"n": "冒险",
|
||||
"v": "冒险"
|
||||
},
|
||||
{
|
||||
"n": "音乐",
|
||||
"v": "音乐"
|
||||
},
|
||||
{
|
||||
"n": "历史",
|
||||
"v": "历史"
|
||||
},
|
||||
{
|
||||
"n": "奇幻",
|
||||
"v": "奇幻"
|
||||
},
|
||||
{
|
||||
"n": "恐怖",
|
||||
"v": "恐怖"
|
||||
},
|
||||
{
|
||||
"n": "战争",
|
||||
"v": "战争"
|
||||
},
|
||||
{
|
||||
"n": "传记",
|
||||
"v": "传记"
|
||||
},
|
||||
{
|
||||
"n": "歌舞",
|
||||
"v": "歌舞"
|
||||
},
|
||||
{
|
||||
"n": "武侠",
|
||||
"v": "武侠"
|
||||
},
|
||||
{
|
||||
"n": "情色",
|
||||
"v": "情色"
|
||||
},
|
||||
{
|
||||
"n": "灾难",
|
||||
"v": "灾难"
|
||||
},
|
||||
{
|
||||
"n": "西部",
|
||||
"v": "西部"
|
||||
},
|
||||
{
|
||||
"n": "纪录片",
|
||||
"v": "纪录片"
|
||||
},
|
||||
{
|
||||
"n": "短片",
|
||||
"v": "短片"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "地区",
|
||||
"name": "地区",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部地区",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "华语",
|
||||
"v": "华语"
|
||||
},
|
||||
{
|
||||
"n": "欧美",
|
||||
"v": "欧美"
|
||||
},
|
||||
{
|
||||
"n": "韩国",
|
||||
"v": "韩国"
|
||||
},
|
||||
{
|
||||
"n": "日本",
|
||||
"v": "日本"
|
||||
},
|
||||
{
|
||||
"n": "中国大陆",
|
||||
"v": "中国大陆"
|
||||
},
|
||||
{
|
||||
"n": "美国",
|
||||
"v": "美国"
|
||||
},
|
||||
{
|
||||
"n": "中国香港",
|
||||
"v": "中国香港"
|
||||
},
|
||||
{
|
||||
"n": "中国台湾",
|
||||
"v": "中国台湾"
|
||||
},
|
||||
{
|
||||
"n": "英国",
|
||||
"v": "英国"
|
||||
},
|
||||
{
|
||||
"n": "法国",
|
||||
"v": "法国"
|
||||
},
|
||||
{
|
||||
"n": "德国",
|
||||
"v": "德国"
|
||||
},
|
||||
{
|
||||
"n": "意大利",
|
||||
"v": "意大利"
|
||||
},
|
||||
{
|
||||
"n": "西班牙",
|
||||
"v": "西班牙"
|
||||
},
|
||||
{
|
||||
"n": "印度",
|
||||
"v": "印度"
|
||||
},
|
||||
{
|
||||
"n": "泰国",
|
||||
"v": "泰国"
|
||||
},
|
||||
{
|
||||
"n": "俄罗斯",
|
||||
"v": "俄罗斯"
|
||||
},
|
||||
{
|
||||
"n": "加拿大",
|
||||
"v": "加拿大"
|
||||
},
|
||||
{
|
||||
"n": "澳大利亚",
|
||||
"v": "澳大利亚"
|
||||
},
|
||||
{
|
||||
"n": "爱尔兰",
|
||||
"v": "爱尔兰"
|
||||
},
|
||||
{
|
||||
"n": "瑞典",
|
||||
"v": "瑞典"
|
||||
},
|
||||
{
|
||||
"n": "巴西",
|
||||
"v": "巴西"
|
||||
},
|
||||
{
|
||||
"n": "丹麦",
|
||||
"v": "丹麦"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "近期热度",
|
||||
"v": "T"
|
||||
},
|
||||
{
|
||||
"n": "首映时间",
|
||||
"v": "R"
|
||||
},
|
||||
{
|
||||
"n": "高分优先",
|
||||
"v": "S"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部年代",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "2023",
|
||||
"v": "2023"
|
||||
},
|
||||
{
|
||||
"n": "2022",
|
||||
"v": "2022"
|
||||
},
|
||||
{
|
||||
"n": "2021",
|
||||
"v": "2021"
|
||||
},
|
||||
{
|
||||
"n": "2020",
|
||||
"v": "2020"
|
||||
},
|
||||
{
|
||||
"n": "2019",
|
||||
"v": "2019"
|
||||
},
|
||||
{
|
||||
"n": "2010年代",
|
||||
"v": "2010年代"
|
||||
},
|
||||
{
|
||||
"n": "2000年代",
|
||||
"v": "2000年代"
|
||||
},
|
||||
{
|
||||
"n": "90年代",
|
||||
"v": "90年代"
|
||||
},
|
||||
{
|
||||
"n": "80年代",
|
||||
"v": "80年代"
|
||||
},
|
||||
{
|
||||
"n": "70年代",
|
||||
"v": "70年代"
|
||||
},
|
||||
{
|
||||
"n": "60年代",
|
||||
"v": "60年代"
|
||||
},
|
||||
{
|
||||
"n": "更早",
|
||||
"v": "更早"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tv": [
|
||||
{
|
||||
"key": "类型",
|
||||
"name": "类型",
|
||||
"value": [
|
||||
{
|
||||
"n": "不限",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "电视剧",
|
||||
"v": "电视剧"
|
||||
},
|
||||
{
|
||||
"n": "综艺",
|
||||
"v": "综艺"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "电视剧形式",
|
||||
"name": "电视剧形式",
|
||||
"value": [
|
||||
{
|
||||
"n": "不限",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "喜剧",
|
||||
"v": "喜剧"
|
||||
},
|
||||
{
|
||||
"n": "爱情",
|
||||
"v": "爱情"
|
||||
},
|
||||
{
|
||||
"n": "悬疑",
|
||||
"v": "悬疑"
|
||||
},
|
||||
{
|
||||
"n": "动画",
|
||||
"v": "动画"
|
||||
},
|
||||
{
|
||||
"n": "武侠",
|
||||
"v": "武侠"
|
||||
},
|
||||
{
|
||||
"n": "古装",
|
||||
"v": "古装"
|
||||
},
|
||||
{
|
||||
"n": "家庭",
|
||||
"v": "家庭"
|
||||
},
|
||||
{
|
||||
"n": "犯罪",
|
||||
"v": "犯罪"
|
||||
},
|
||||
{
|
||||
"n": "科幻",
|
||||
"v": "科幻"
|
||||
},
|
||||
{
|
||||
"n": "恐怖",
|
||||
"v": "恐怖"
|
||||
},
|
||||
{
|
||||
"n": "历史",
|
||||
"v": "历史"
|
||||
},
|
||||
{
|
||||
"n": "战争",
|
||||
"v": "战争"
|
||||
},
|
||||
{
|
||||
"n": "动作",
|
||||
"v": "动作"
|
||||
},
|
||||
{
|
||||
"n": "冒险",
|
||||
"v": "冒险"
|
||||
},
|
||||
{
|
||||
"n": "传记",
|
||||
"v": "传记"
|
||||
},
|
||||
{
|
||||
"n": "剧情",
|
||||
"v": "剧情"
|
||||
},
|
||||
{
|
||||
"n": "奇幻",
|
||||
"v": "奇幻"
|
||||
},
|
||||
{
|
||||
"n": "惊悚",
|
||||
"v": "惊悚"
|
||||
},
|
||||
{
|
||||
"n": "灾难",
|
||||
"v": "灾难"
|
||||
},
|
||||
{
|
||||
"n": "歌舞",
|
||||
"v": "歌舞"
|
||||
},
|
||||
{
|
||||
"n": "音乐",
|
||||
"v": "音乐"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "综艺形式",
|
||||
"name": "综艺形式",
|
||||
"value": [
|
||||
{
|
||||
"n": "不限",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "真人秀",
|
||||
"v": "真人秀"
|
||||
},
|
||||
{
|
||||
"n": "脱口秀",
|
||||
"v": "脱口秀"
|
||||
},
|
||||
{
|
||||
"n": "音乐",
|
||||
"v": "音乐"
|
||||
},
|
||||
{
|
||||
"n": "歌舞",
|
||||
"v": "歌舞"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "地区",
|
||||
"name": "地区",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部地区",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "华语",
|
||||
"v": "华语"
|
||||
},
|
||||
{
|
||||
"n": "欧美",
|
||||
"v": "欧美"
|
||||
},
|
||||
{
|
||||
"n": "国外",
|
||||
"v": "国外"
|
||||
},
|
||||
{
|
||||
"n": "韩国",
|
||||
"v": "韩国"
|
||||
},
|
||||
{
|
||||
"n": "日本",
|
||||
"v": "日本"
|
||||
},
|
||||
{
|
||||
"n": "中国大陆",
|
||||
"v": "中国大陆"
|
||||
},
|
||||
{
|
||||
"n": "中国香港",
|
||||
"v": "中国香港"
|
||||
},
|
||||
{
|
||||
"n": "美国",
|
||||
"v": "美国"
|
||||
},
|
||||
{
|
||||
"n": "英国",
|
||||
"v": "英国"
|
||||
},
|
||||
{
|
||||
"n": "泰国",
|
||||
"v": "泰国"
|
||||
},
|
||||
{
|
||||
"n": "中国台湾",
|
||||
"v": "中国台湾"
|
||||
},
|
||||
{
|
||||
"n": "意大利",
|
||||
"v": "意大利"
|
||||
},
|
||||
{
|
||||
"n": "法国",
|
||||
"v": "法国"
|
||||
},
|
||||
{
|
||||
"n": "德国",
|
||||
"v": "德国"
|
||||
},
|
||||
{
|
||||
"n": "西班牙",
|
||||
"v": "西班牙"
|
||||
},
|
||||
{
|
||||
"n": "俄罗斯",
|
||||
"v": "俄罗斯"
|
||||
},
|
||||
{
|
||||
"n": "瑞典",
|
||||
"v": "瑞典"
|
||||
},
|
||||
{
|
||||
"n": "巴西",
|
||||
"v": "巴西"
|
||||
},
|
||||
{
|
||||
"n": "丹麦",
|
||||
"v": "丹麦"
|
||||
},
|
||||
{
|
||||
"n": "印度",
|
||||
"v": "印度"
|
||||
},
|
||||
{
|
||||
"n": "加拿大",
|
||||
"v": "加拿大"
|
||||
},
|
||||
{
|
||||
"n": "爱尔兰",
|
||||
"v": "爱尔兰"
|
||||
},
|
||||
{
|
||||
"n": "澳大利亚",
|
||||
"v": "澳大利亚"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "近期热度",
|
||||
"v": "T"
|
||||
},
|
||||
{
|
||||
"n": "首播时间",
|
||||
"v": "R"
|
||||
},
|
||||
{
|
||||
"n": "高分优先",
|
||||
"v": "S"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "2023",
|
||||
"v": "2023"
|
||||
},
|
||||
{
|
||||
"n": "2022",
|
||||
"v": "2022"
|
||||
},
|
||||
{
|
||||
"n": "2021",
|
||||
"v": "2021"
|
||||
},
|
||||
{
|
||||
"n": "2020",
|
||||
"v": "2020"
|
||||
},
|
||||
{
|
||||
"n": "2019",
|
||||
"v": "2019"
|
||||
},
|
||||
{
|
||||
"n": "2010年代",
|
||||
"v": "2010年代"
|
||||
},
|
||||
{
|
||||
"n": "2000年代",
|
||||
"v": "2000年代"
|
||||
},
|
||||
{
|
||||
"n": "90年代",
|
||||
"v": "90年代"
|
||||
},
|
||||
{
|
||||
"n": "80年代",
|
||||
"v": "80年代"
|
||||
},
|
||||
{
|
||||
"n": "70年代",
|
||||
"v": "70年代"
|
||||
},
|
||||
{
|
||||
"n": "60年代",
|
||||
"v": "60年代"
|
||||
},
|
||||
{
|
||||
"n": "更早",
|
||||
"v": "更早"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "平台",
|
||||
"name": "平台",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
},
|
||||
{
|
||||
"n": "腾讯视频",
|
||||
"v": "腾讯视频"
|
||||
},
|
||||
{
|
||||
"n": "爱奇艺",
|
||||
"v": "爱奇艺"
|
||||
},
|
||||
{
|
||||
"n": "优酷",
|
||||
"v": "优酷"
|
||||
},
|
||||
{
|
||||
"n": "湖南卫视",
|
||||
"v": "湖南卫视"
|
||||
},
|
||||
{
|
||||
"n": "Netflix",
|
||||
"v": "Netflix"
|
||||
},
|
||||
{
|
||||
"n": "HBO",
|
||||
"v": "HBO"
|
||||
},
|
||||
{
|
||||
"n": "BBC",
|
||||
"v": "BBC"
|
||||
},
|
||||
{
|
||||
"n": "NHK",
|
||||
"v": "NHK"
|
||||
},
|
||||
{
|
||||
"n": "CBS",
|
||||
"v": "CBS"
|
||||
},
|
||||
{
|
||||
"n": "NBC",
|
||||
"v": "NBC"
|
||||
},
|
||||
{
|
||||
"n": "tvN",
|
||||
"v": "tvN"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"rank_list_movie": [
|
||||
{
|
||||
"key": "榜单",
|
||||
"name": "榜单",
|
||||
"value": [
|
||||
{
|
||||
"n": "实时热门电影",
|
||||
"v": "movie_real_time_hotest"
|
||||
},
|
||||
{
|
||||
"n": "一周口碑电影榜",
|
||||
"v": "movie_weekly_best"
|
||||
},
|
||||
{
|
||||
"n": "豆瓣电影Top250",
|
||||
"v": "movie_top250"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"rank_list_tv": [
|
||||
{
|
||||
"key": "榜单",
|
||||
"name": "榜单",
|
||||
"value": [
|
||||
{
|
||||
"n": "实时热门电视",
|
||||
"v": "tv_real_time_hotest"
|
||||
},
|
||||
{
|
||||
"n": "华语口碑剧集榜",
|
||||
"v": "tv_chinese_best_weekly"
|
||||
},
|
||||
{
|
||||
"n": "全球口碑剧集榜",
|
||||
"v": "tv_global_best_weekly"
|
||||
},
|
||||
{
|
||||
"n": "国内口碑综艺榜",
|
||||
"v": "show_chinese_best_weekly"
|
||||
},
|
||||
{
|
||||
"n": "国外口碑综艺榜",
|
||||
"v": "show_global_best_weekly"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue