上传文件至 lib

This commit is contained in:
2025-09-06 15:29:03 +02:00
parent 7cc8af211f
commit 79c4890650
5 changed files with 7040 additions and 0 deletions
+811
View File
@@ -0,0 +1,811 @@
{
"filters": {
"dianshiju": [
{
"name": "类型",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "yanqing",
"n": "言情"
},
{
"v": "ouxiang",
"n": "偶像"
},
{
"v": "dushi",
"n": "都市"
},
{
"v": "zhanzheng",
"n": "战争"
},
{
"v": "xuanyi",
"n": "悬疑"
},
{
"v": "lunli",
"n": "伦理"
},
{
"v": "jingsong",
"n": "惊悚"
},
{
"v": "wangluoju",
"n": "网络剧"
},
{
"v": "jingfei",
"n": "警匪"
},
{
"v": "guzhuang",
"n": "古装"
},
{
"v": "wuxia",
"n": "武侠"
},
{
"v": "shenhua",
"n": "神话"
},
{
"v": "lishi",
"n": "历史"
},
{
"v": "dongzuo",
"n": "动作"
},
{
"v": "diezhan",
"n": "谍战"
},
{
"v": "xiju",
"n": "喜剧"
},
{
"v": "kangri",
"n": "抗日"
},
{
"v": "jiating",
"n": "家庭"
},
{
"v": "juqing",
"n": "剧情"
},
{
"v": "lizhi",
"n": "励志"
},
{
"v": "nongcun",
"n": "农村"
},
{
"v": "kehuan",
"n": "科幻"
},
{
"v": "junlv",
"n": "军旅"
},
{
"v": "qihuan",
"n": "奇幻"
},
{
"v": "qita",
"n": "其它"
}
],
"key": "type"
},
{
"name": "地区",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "neidi",
"n": "内地"
},
{
"v": "taiwan",
"n": "台湾"
},
{
"v": "xianggang",
"n": "香港"
},
{
"v": "hanguo",
"n": "韩国"
},
{
"v": "meiguo",
"n": "美国"
},
{
"v": "taiguo",
"n": "泰国"
},
{
"v": "riben",
"n": "日本"
},
{
"v": "yingguo",
"n": "英国"
},
{
"v": "xinjiapo",
"n": "新加坡"
},
{
"v": "qita",
"n": "其它"
}
],
"key": "area"
},
{
"name": "年份",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "2024",
"n": "2024"
},
{
"v": "2023",
"n": "2023"
},
{
"v": "2022",
"n": "2022"
},
{
"v": "2021",
"n": "2021"
},
{
"v": "2020",
"n": "2020"
},
{
"v": "2019",
"n": "2019"
},
{
"v": "2018",
"n": "2018"
},
{
"v": "2017",
"n": "2017"
},
{
"v": "2016",
"n": "2016"
},
{
"v": "2015",
"n": "2015"
},
{
"v": "2014",
"n": "2014"
},
{
"v": "2013",
"n": "2013"
},
{
"v": "2012",
"n": "2012"
},
{
"v": "2011",
"n": "2011"
},
{
"v": "20102000",
"n": "2010-2000"
},
{
"v": "19991990",
"n": "90年代"
},
{
"v": "19891800",
"n": "更早"
}
],
"key": "year"
}
],
"zongyi": [
{
"name": "类型",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "lxxuanxiu/",
"n": "选秀"
},
{
"v": "lxqinggan/",
"n": "情感"
},
{
"v": "lxfangtan/",
"n": "访谈"
},
{
"v": "lxgaoxiao/",
"n": "搞笑"
},
{
"v": "lxyouxi/",
"n": "游戏"
},
{
"v": "lxzhichang/",
"n": "职场"
},
{
"v": "lxyule/",
"n": "娱乐"
},
{
"v": "lxzhenrenxiu/",
"n": "真人秀"
},
{
"v": "lxshenghuo/",
"n": "生活"
},
{
"v": "lxtiyu/",
"n": "体育"
},
{
"v": "lxshenghui/",
"n": "盛会"
},
{
"v": "lxcaijing/",
"n": "财经"
},
{
"v": "lxqinzi/",
"n": "亲子"
},
{
"v": "lxjishi/",
"n": "纪实"
},
{
"v": "lxtuokouxiu/",
"n": "脱口秀"
},
{
"v": "lxwangluojiemu/",
"n": "网络节目"
},
{
"v": "lxmeishi/",
"n": "美食"
}
],
"key": "type"
},
{
"name": "地区",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "dqdalu/",
"n": "大陆"
},
{
"v": "dqgangtai/",
"n": "港台"
},
{
"v": "dqrihan/",
"n": "日韩"
},
{
"v": "dqoumei/",
"n": "欧美"
},
{
"v": "dqqita/",
"n": "其他"
}
],
"key": "area"
}
],
"dongman": [
{
"name": "类型",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "lxrexue/",
"n": "热血"
},
{
"v": "lxaiqing/",
"n": "爱情"
},
{
"v": "lxgaoxiao/",
"n": "搞笑"
},
{
"v": "lxmeinv/",
"n": "美女"
},
{
"v": "lxshaoer/",
"n": "少儿"
},
{
"v": "lxqinzi/",
"n": "亲子"
},
{
"v": "lxmofa/",
"n": "魔法"
},
{
"v": "lxyundong/",
"n": "运动"
},
{
"v": "lxjizhan/",
"n": "机战"
},
{
"v": "lxkehuan/",
"n": "科幻"
},
{
"v": "lxxiaoyuan/",
"n": "校园"
},
{
"v": "lxdongwu/",
"n": "动物"
},
{
"v": "lxmaoxian/",
"n": "冒险"
},
{
"v": "lxshenhua/",
"n": "神话"
},
{
"v": "lxtuili/",
"n": "推理"
},
{
"v": "lxjuqing/",
"n": "剧情"
},
{
"v": "lxlishi/",
"n": "历史"
},
{
"v": "lxzhanzheng/",
"n": "战争"
},
{
"v": "lxjingdian/",
"n": "经典"
},
{
"v": "lxnanxingxiang/",
"n": "男性向"
},
{
"v": "lxnvxingxiang/",
"n": "女性向"
}
],
"key": "type"
},
{
"name": "地区",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "dqdalu/",
"n": "大陆"
},
{
"v": "dqriben/",
"n": "日本"
},
{
"v": "dqmeiguo/",
"n": "美国"
},
{
"v": "dqhanguo/",
"n": "韩国"
},
{
"v": "dqqita/",
"n": "其他"
}
],
"key": "area"
},
{
"name": "年份",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "nd2022/",
"n": "2022"
},
{
"v": "nd2021/",
"n": "2021"
},
{
"v": "nd2020/",
"n": "2020"
},
{
"v": "nd2019/",
"n": "2019"
},
{
"v": "nd2018/",
"n": "2018"
},
{
"v": "nd2017/",
"n": "2017"
},
{
"v": "nd2016/",
"n": "2016"
},
{
"v": "nd2015/",
"n": "2015"
},
{
"v": "nd2014/",
"n": "2014"
},
{
"v": "nd2013/",
"n": "2013"
},
{
"v": "nd2012/",
"n": "2012"
},
{
"v": "nd2011/",
"n": "2011"
},
{
"v": "nd20102000/",
"n": "2010-2000"
},
{
"v": "nd19991800/",
"n": "更早"
}
],
"key": "year"
}
],
"dianying": [
{
"name": "类型",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "aiqing",
"n": "爱情"
},
{
"v": "dongzuo",
"n": "动作"
},
{
"v": "xiju",
"n": "喜剧"
},
{
"v": "zhanzheng",
"n": "战争"
},
{
"v": "kehuan",
"n": "科幻"
},
{
"v": "juqing",
"n": "剧情"
},
{
"v": "wuxia",
"n": "武侠"
},
{
"v": "maoxian",
"n": "冒险"
},
{
"v": "qiangzhan",
"n": "枪战"
},
{
"v": "kongbu",
"n": "恐怖"
},
{
"v": "xuanyi",
"n": "悬疑"
},
{
"v": "fanzui",
"n": "犯罪"
},
{
"v": "qihuan",
"n": "奇幻"
},
{
"v": "donghua",
"n": "动画"
},
{
"v": "jingsong",
"n": "惊悚"
},
{
"v": "jingdian",
"n": "经典"
},
{
"v": "qingchun",
"n": "青春"
},
{
"v": "wenyi",
"n": "文艺"
},
{
"v": "weidianying",
"n": "微电影"
},
{
"v": "guzhuang",
"n": "古装"
},
{
"v": "lishi",
"n": "历史"
},
{
"v": "yundong",
"n": "运动"
},
{
"v": "nongcun",
"n": "农村"
},
{
"v": "ertong",
"n": "儿童"
},
{
"v": "wangluodianying",
"n": "网络电影"
},
{
"v": "qita",
"n": "其它"
}
],
"key": "type"
},
{
"name": "地区",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "neidi",
"n": "内地"
},
{
"v": "meiguo",
"n": "美国"
},
{
"v": "xianggang",
"n": "香港"
},
{
"v": "taiwan",
"n": "台湾"
},
{
"v": "riben",
"n": "日本"
},
{
"v": "taiguo",
"n": "泰国"
},
{
"v": "yindu",
"n": "印度"
},
{
"v": "dongnanyadiqu",
"n": "东南亚地区"
},
{
"v": "oumeidiqu",
"n": "欧美地区"
},
{
"v": "qita",
"n": "其它"
}
],
"key": "area"
},
{
"name": "年份",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "2022",
"n": "2022"
},
{
"v": "2021",
"n": "2021"
},
{
"v": "2020",
"n": "2020"
},
{
"v": "2019",
"n": "2019"
},
{
"v": "2018",
"n": "2018"
},
{
"v": "2017",
"n": "2017"
},
{
"v": "2016",
"n": "2016"
},
{
"v": "2015",
"n": "2015"
},
{
"v": "2014",
"n": "2014"
},
{
"v": "2013",
"n": "2013"
},
{
"v": "2012",
"n": "2012"
},
{
"v": "2011",
"n": "2011"
},
{
"v": "20102000",
"n": "2010-2000"
},
{
"v": "19691800",
"n": "更早"
}
],
"key": "year"
}
]
},
"class": [
{
"type_name": "电影",
"type_id": "dianying"
},
{
"type_name": "电视剧",
"type_id": "dianshiju"
},
{
"type_name": "综艺",
"type_id": "zongyi"
},
{
"type_name": "热播电影",
"type_id": "jingdian"
},
{
"type_name": "动漫",
"type_id": "dongman"
}
]
}
+429
View File
@@ -0,0 +1,429 @@
if (typeof Object.assign !== 'function') {
Object.assign = function() {
let target = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let source = arguments[i];
for (let key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
// 通用免嗅探播放
let common_lazy = `js:
let html = request(input);
let hconf = html.match(/r player_.*?=(.*?)</)[1];
let json = JSON5.parse(hconf);
let url = json.url;
if (json.encrypt == '1') {
url = unescape(url);
} else if (json.encrypt == '2') {
url = unescape(base64Decode(url));
}
if (/\\.(m3u8|mp4|m4a|mp3)/.test(url)) {
input = {
parse: 0,
jx: 0,
url: url,
};
} else {
input = url && url.startsWith('http') && tellIsJx(url) ? {parse:0,jx:1,url:url}:input;
}`;
// 默认嗅探播放
let def_lazy = `js:
input = { parse: 1, url: input, js: '' };`;
// 采集站播放
let cj_lazy = `js:
if (/\\.(m3u8|mp4)/.test(input)) {
input = { parse: 0, url: input };
} else {
if (rule.parse_url.startsWith('json:')) {
let purl = rule.parse_url.replace('json:', '') + input;
let html = request(purl);
let json = JSON.parse(html);
if (json.url) {
input = { parse: 0, url: json.url };
}
} else {
input = rule.parse_url + input;
}
}`;
function getMubans() {
const mubanDict = { // 模板字典
mx: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---/',
class_parse: '.top_nav li;a&&Text;a&&href;.*/(.*?)/',
searchable: 2,
quickSearch: 0,
filterable: 0,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true,
推荐: '.cbox_list;*;*;*;*;*',
一级: 'ul.vodlist li;a&&title;a&&data-original;.pic_text&&Text;a&&href',
二级: {
title: 'h2&&Text;.content_detail:eq(1)&&li&&a:eq(2)&&Text',
img: '.vodlist_thumb&&data-original',
desc: '.content_detail:eq(1)&&li:eq(1)&&Text;.content_detail:eq(1)&&li&&a&&Text;.content_detail:eq(1)&&li&&a:eq(1)&&Text;.content_detail:eq(1)&&li:eq(2)&&Text;.content_detail:eq(1)&&li:eq(3)&&Text',
content: '.content_desc&&span&&Text',
tabs: '.play_source_tab&&a',
lists: '.content_playlist:eq(#id) li',
},
搜索: '*',
},
mxpro: {
title: '',
host: '', // homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
headers: { //网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(0):lt(10);a&&Text;a&&href;/(\\d+)',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
title: 'h1&&Text;.module-info-tag-link:eq(-1)&&Text',
img: '.lazyload&&data-original||data-src||src',
desc: '.module-info-item:eq(-2)&&Text;.module-info-tag-link&&Text;.module-info-tag-link:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(1)&&Text',
content: '.module-info-introduction&&Text',
tabs: '.module-tab-item',
lists: '.module-play-list:eq(#id) a',
tab_text: 'div--small&&Text',
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
},
mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?)\.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
title: 'h1&&Text;.tag-link&&Text',
img: '.module-item-pic&&img&&data-src',
desc: '.video-info-items:eq(3)&&Text;.tag-link:eq(2)&&Text;.tag-link:eq(1)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text',
content: '.vod_content&&Text',
tabs: '.module-tab-item',
lists: '.module-player-list:eq(#id)&&.scroll-content&&a',
tab_text: 'div--small&&Text',
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
},
首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
headers: { //网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.myui-content__detail .title--span&&Text;.myui-content__detail p.data:eq(3)&&Text',
img: '.myui-content__thumb .lazyload&&data-original',
desc: '.myui-content__detail p.otherbox&&Text;.year&&Text;.myui-content__detail p.data:eq(4)&&Text;.myui-content__detail p.data:eq(2)&&Text;.myui-content__detail p.data:eq(0)&&Text',
content: '.content&&Text',
tabs: '.myui-panel__head&&li',
// tabs: '.nav-tabs&&li',
lists: '.myui-content__list:eq(#id) li',
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
},
首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA', // "Cookie": ""
},
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.stui-content__detail .title&&Text;.stui-content__detail&&p:eq(-2)&&a&&Text',
title1: '.stui-content__detail .title&&Text;.stui-content__detail&&p&&Text',
img: '.stui-content__thumb .lazyload&&data-original',
desc: '.stui-content__detail p&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(2)&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text;.stui-content__detail p:eq(1)&&Text',
desc1: '.stui-content__detail p:eq(4)&&Text;;;.stui-content__detail p:eq(1)&&Text',
content: '.detail&&Text',
tabs: '.stui-pannel__head h3',
tabs1: '.stui-vodlist__head h3',
lists: '.stui-content__playlist:eq(#id) li',
},
搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
},
默认: {
title: '',
host: '',
url: '',
searchUrl: '',
searchable: 2,
quickSearch: 0,
filterable: 0,
filter: '',
filter_url: '',
filter_def: {},
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#side-menu li;a&&Text;a&&href;/(.*?)\.html',
cate_exclude: '',
play_parse: true,
lazy: def_lazy,
double: true,
推荐: '列表1;列表2;标题;图片;描述;链接;详情',
一级: '列表;标题;图片;描述;链接;详情',
二级: {
title: 'vod_name;vod_type',
img: '图片链接',
desc: '主要信息;年代;地区;演员;导演',
content: '简介',
tabs: '',
lists: 'xx:eq(#id)&&a',
tab_text: 'body&&Text',
list_text: 'body&&Text',
list_url: 'a&&href',
},
搜索: '列表;标题;图片;描述;链接;详情',
},
vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
title: 'h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text',
img: '.fed-list-info&&a&&data-original',
desc: '.fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text',
content: '.fed-part-esan&&Text',
tabs: '.fed-drop-boxs&&.fed-part-rows&&li',
lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
},
海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
title: '.hl-dc-title&&Text;.hl-dc-content&&li:eq(6)&&Text',
img: '.hl-lazy&&data-original',
desc: '.hl-dc-content&&li:eq(10)&&Text;.hl-dc-content&&li:eq(4)&&Text;.hl-dc-content&&li:eq(5)&&Text;.hl-dc-content&&li:eq(2)&&Text;.hl-dc-content&&li:eq(3)&&Text',
content: '.hl-content-text&&Text',
tabs: '.hl-tabs&&a',
tab_text: 'a--span&&Text',
lists: '.hl-plays-list:eq(#id)&&li',
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
},
海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
title: 'h2&&Text;.deployment&&Text',
img: '.lazy&&data-original',
desc: '.deployment&&Text',
content: '.ec-show&&Text',
tabs: '#tag&&a',
lists: '.play_list_box:eq(#id)&&li',
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
},
短视: {
title: '',
host: '', // homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
headers: { //网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
title: 'h1&&Text;.content-rt&&p:eq(0)&&Text',
img: '.img&&img&&data-src',
desc: '.content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text',
content: '.zkjj_a&&Text',
tabs: '.py-tabs&&option',
lists: '.player:eq(#id) li',
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
},
短视2: {
title: '',
host: '',
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers: {
'User-Agent': 'MOBILE_UA'
},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable: 0, //是否启用分类筛选,
filter_url: '',
filter: {},
filter_def: {},
detailUrl: '/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级: 'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级: {
title: '.slide-info-title&&Text;.slide-info:eq(2)--strong&&Text',
img: '.detail-pic&&data-original',
desc: '.slide-info-remarks&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(1)--strong&&Text;.info-parameter&&ul&&li:eq(3)&&Text',
content: '#height_limit&&Text',
tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a',
tab_text: 'a--span&&Text',
lists: '.anthology-list-box:eq(#id) li',
},
搜索: 'json:list;name;pic;;id',
},
采集1: {
title: '',
host: '',
homeTid: '13',
homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
// class_url: '1&2&3&4',
// class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
class_parse: 'json:class;',
limit: 20,
multi: 1,
searchable: 2, //是否启用全局搜索,
quickSearch: 1, //是否启用快速搜索,
filterable: 0, //是否启用分类筛选,
play_parse: true,
parse_url: '',
lazy: cj_lazy,
推荐: '*',
一级: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
二级: `js:
let html=request(input);
html=JSON.parse(html);
let data=html.list;
VOD=data[0];`,
搜索: '*',
},
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {
muban,
getMubans
};
+279
View File
@@ -0,0 +1,279 @@
# coding=utf-8
# !/usr/bin/python
# by嗷呜(finally)
import sys
import os
sys.path.append("..")
import re
import hashlib
import hmac
import random
import string
from Crypto.Util.Padding import unpad
from concurrent.futures import ThreadPoolExecutor
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5, AES
from base64 import b64encode, b64decode
import json
import time
from base.spider import Spider
class Spider(Spider):
def getName(self):
return "电影猎手"
def init(self, extend=""):
self.device = self.device_id()
self.host = self.gethost()
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def action(self, action):
pass
def destroy(self):
pass
t = str(int(time.time()))
def homeContent(self, filter):
result = {}
filters = {}
classes = []
bba = self.url()
data = self.fetch(f"{self.host}/api/v1/app/config?pack={bba[0]}&signature={bba[1]}", headers=self.header()).text
data1 = self.aes(data)
dy = {"class":"类型","area":"地区","lang":"语言","year":"年份","letter":"字母","by":"排序","sort":"排序"}
data1['data']['movie_screen']['sort'].pop(0)
for item in data1['data']['movie_screen']['sort']:
item['n'] = item.pop('name')
item['v'] = item.pop('value')
for item in data1['data']['movie_screen']['filter']:
has_non_empty_field = False
classes.append({"type_name": item["name"], "type_id": str(item["id"])})
for key in dy:
if key in item and item[key]:
has_non_empty_field = True
break
if has_non_empty_field:
filters[str(item["id"])] = []
filters[str(item["id"])].append(
{"key": 'sort', "name": '排序', "value": data1['data']['movie_screen']['sort']})
for dkey in item:
if dkey in dy and item[dkey]:
item[dkey].pop(0)
value_array = [
{"n": value.strip(), "v": value.strip()}
for value in item[dkey]
if value.strip() != ""
]
filters[str(item["id"])].append(
{"key": dkey, "name": dy[dkey], "value": value_array}
)
result["class"] = classes
result["filters"] = filters
return result
def homeVideoContent(self):
bba = self.url()
url = f'{self.host}/api/v1/movie/index_recommend?pack={bba[0]}&signature={bba[1]}'
data = self.fetch(url, headers=self.header()).json()
videos = []
for item in data['data']:
if len(item['list']) > 0:
for it in item['list']:
try:
videos.append(self.voides(it))
except Exception as e:
continue
result = {"list": videos}
return result
def categoryContent(self, tid, pg, filter, extend):
body = {"type_id": tid, "sort": extend.get("sort", "by_default"), "class": extend.get("class", "类型"),
"area": extend.get("area", "地区"), "year": extend.get("year", "年份"), "page": str(pg),
"pageSize": "21"}
result = {}
list = []
bba = self.url(body)
url = f"{self.host}/api/v1/movie/screen/list?pack={bba[0]}&signature={bba[1]}"
data = self.fetch(url, headers=self.header()).json()['data']['list']
for item in data:
list.append(self.voides(item))
result["list"] = list
result["page"] = pg
result["pagecount"] = 9999
result["limit"] = 90
result["total"] = 999999
return result
def detailContent(self, ids):
body = {"id": ids[0]}
bba = self.url(body)
url = f'{self.host}/api/v1/movie/detail?pack={bba[0]}&signature={bba[1]}'
data = self.fetch(url, headers=self.header()).json()['data']
video = {'vod_name': data.get('name'),'type_name': data.get('type_name'),'vod_year': data.get('year'),'vod_area': data.get('area'),'vod_remarks': data.get('dynami'),'vod_content': data.get('content')}
play = []
names = []
tasks = []
for itt in data["play_from"]:
name = itt["name"]
a = []
if len(itt["list"]) > 0:
names.append(name)
play.append(self.playeach(itt['list']))
else:
tasks.append({"movie_id": ids[0], "from_code": itt["code"]})
names.append(name)
if tasks:
with ThreadPoolExecutor(max_workers=len(tasks)) as executor:
results = executor.map(self.playlist, tasks)
for result in results:
if result:
play.append(result)
else:
play.append("")
video["vod_play_from"] = "$$$".join(names)
video["vod_play_url"] = "$$$".join(play)
result = {"list": [video]}
return result
def searchContent(self, key, quick, pg=1):
body = {"keyword": key, "sort": "", "type_id": "0", "page": str(pg), "pageSize": "10",
"res_type": "by_movie_name"}
bba = self.url(body)
url = f"{self.host}/api/v1/movie/search?pack={bba[0]}&signature={bba[1]}"
data = self.fetch(url, headers=self.header()).json()['data'].get('list')
videos = []
for it in data:
try:
videos.append(self.voides(it))
except Exception as e:
continue
result = {"list": videos, "page": pg}
return result
def playerContent(self, flag, id, vipFlags):
url = id
if "m3u8" not in url and "mp4" not in url:
try:
add = id.split('|||')
data = {"from_code": add[0], "play_url": add[1], "episode_id": add[2], "type": "play"}
bba = self.url(data)
data2 = self.fetch(f"{self.host}/api/v1/movie_addr/parse_url?pack={bba[0]}&signature={bba[1]}",
headers=self.header()).json()['data']
url = data2.get('play_url') or data2.get('download_url')
try:
url1 = self.fetch(url, headers=self.header(), allow_redirects=False).headers['Location']
if url1 and "http" in url1:
url = url1
except:
pass
except Exception as e:
pass
if '.jpg' in url or '.jpeg' in url or '.png' in url:
url = self.getProxyUrl() + "&url=" + b64encode(url.encode('utf-8')).decode('utf-8') + "&type=m3u8"
result = {}
result["parse"] = 0
result["url"] = url
result["header"] = {'user-agent': 'okhttp/4.9.2'}
return result
def localProxy(self, param):
url = b64decode(param["url"]).decode('utf-8')
durl = url[:url.rfind('/')]
data = self.fetch(url, headers=self.header()).content.decode("utf-8")
lines = data.strip().split('\n')
for index, string in enumerate(lines):
# if 'URI="' in string and 'http' not in string:
# lines[index] = index
# 暂时预留,貌似用不到
if '#EXT' not in string and 'http' not in string:
lines[index] = durl + ('' if string.startswith('/') else '/') + string
data = '\n'.join(lines)
return [200, "application/vnd.apple.mpegur", data]
def device_id(self):
characters = string.ascii_lowercase + string.digits
random_string = ''.join(random.choices(characters, k=32))
return random_string
def gethost(self):
headers = {
'User-Agent': 'okhttp/4.9.2',
'Connection': 'Keep-Alive',
}
response = self.fetch('https://app-site.ecoliving168.com/domain_v5.json', headers=headers).json()
url = response['api_service'].replace('/api/', '')
return url
def header(self):
headers = {
'User-Agent': 'Android',
'Accept': 'application/prs.55App.v2+json',
'timestamp': self.t,
'x-client-setting': '{"pure-mode":1}',
'x-client-uuid': '{"device_id":' + self.device + '}, "type":1,"brand":"Redmi", "model":"M2012K10C", "system_version":30, "sdk_version":"3.1.0.7"}',
'x-client-version': '3096 '
}
return headers
def url(self, id=None):
if not id:
id = {}
id["timestamp"] = self.t
public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02F/kPg5A2NX4qZ5JSns+bjhVMCC6JbTiTKpbgNgiXU+Kkorg6Dj76gS68gB8llhbUKCXjIdygnHPrxVHWfzmzisq9P9awmXBkCk74Skglx2LKHa/mNz9ivg6YzQ5pQFUEWS0DfomGBXVtqvBlOXMCRxp69oWaMsnfjnBV+0J7vHbXzUIkqBLdXSNfM9Ag5qdRDrJC3CqB65EJ3ARWVzZTTcXSdMW9i3qzEZPawPNPe5yPYbMZIoXLcrqvEZnRK1oak67/ihf7iwPJqdc+68ZYEmmdqwunOvRdjq89fQMVelmqcRD9RYe08v+xDxG9Co9z7hcXGTsUquMxkh29uNawIDAQAB'
encrypted_text = json.dumps(id)
public_key = RSA.import_key(b64decode(public_key))
cipher = PKCS1_v1_5.new(public_key)
encrypted_message = cipher.encrypt(encrypted_text.encode('utf-8'))
encrypted_message_base64 = b64encode(encrypted_message).decode('utf-8')
result = encrypted_message_base64.replace('+', '-').replace('/', '_').replace('=', '')
key = '635a580fcb5dc6e60caa39c31a7bde48'
sign = hmac.new(key.encode(), result.encode(), hashlib.md5).hexdigest()
return result, sign
def playlist(self, body):
try:
bba = self.url(body)
url = f'{self.host}/api/v1/movie_addr/list?pack={bba[0]}&signature={bba[1]}'
data = self.fetch(url, headers=self.header()).json()['data']
return self.playeach(data)
except Exception:
return []
def playeach(self,data):
play_urls = []
for it in data:
if re.search(r"mp4|m3u8", it["play_url"]):
play_urls.append(f"{it['episode_name']}${it['play_url']}")
else:
play_urls.append(
f"{it['episode_name']}${it['from_code']}|||{it['play_url']}|||{it['episode_id']}"
)
return '#'.join(play_urls)
def voides(self, item):
if item['name'] or item['title']:
voide = {
"vod_id": item.get('id') or item.get('click'),
'vod_name': item.get('name') or item.get('title'),
'vod_pic': item.get('cover') or item.get('image'),
'vod_year': item.get('year') or item.get('label'),
'vod_remarks': item.get('dynamic') or item.get('sub_title')
}
return voide
def aes(self, text):
text = text.replace('-', '+').replace('_', '/') + '=='
key = b"e6d5de5fcc51f53d"
iv = b"2f13eef7dfc6c613"
cipher = AES.new(key, AES.MODE_CBC, iv)
pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size).decode("utf-8")
return json.loads(pt)
+5296
View File
@@ -0,0 +1,5296 @@
{
"class": [
{
"type_name": "美食",
"type_id": "美食"
},
{
"type_name": "火锅",
"type_id": "火锅"
},
{
"type_name": "烧烤",
"type_id": "烧烤"
},
{
"type_name": "烤鱼",
"type_id": "烤鱼"
},
{
"type_name": "海鲜",
"type_id": "海鲜"
},
{
"type_name": "津菜",
"type_id": "津菜"
},
{
"type_name": "川菜",
"type_id": "川菜"
},
{
"type_name": "湘菜",
"type_id": "湘菜"
},
{
"type_name": "鲁菜",
"type_id": "鲁菜"
},
{
"type_name": "苏菜",
"type_id": "苏菜"
},
{
"type_name": "闽菜",
"type_id": "闽菜"
},
{
"type_name": "粤菜",
"type_id": "粤菜"
},
{
"type_name": "东北菜",
"type_id": "东北菜"
},
{
"type_name": "冀菜",
"type_id": "冀菜"
},
{
"type_name": "豫菜",
"type_id": "豫菜"
},
{
"type_name": "鄂菜",
"type_id": "鄂菜"
},
{
"type_name": "本帮菜",
"type_id": "本帮菜"
},
{
"type_name": "客家菜",
"type_id": "客家菜"
},
{
"type_name": "赣菜",
"type_id": "赣菜"
},
{
"type_name": "京菜",
"type_id": "京菜"
},
{
"type_name": "浙菜",
"type_id": "浙菜"
},
{
"type_name": "徽菜",
"type_id": "徽菜"
},
{
"type_name": "湘菜",
"type_id": "湘菜"
},
{
"type_name": "凉菜",
"type_id": "凉菜"
},
{
"type_name": "蒸菜",
"type_id": "蒸菜"
},
{
"type_name": "日料",
"type_id": "日料"
},
{
"type_name": "点心",
"type_id": "点心"
},
{
"type_name": "面食",
"type_id": "面食"
},
{
"type_name": "汉堡",
"type_id": "汉堡"
},
{
"type_name": "小吃",
"type_id": "小吃"
},
{
"type_name": "素食",
"type_id": "素食"
},
{
"type_name": "韩国菜",
"type_id": "韩国菜"
},
{
"type_name": "泰国菜",
"type_id": "泰国菜"
},
{
"type_name": "穆斯林菜",
"type_id": "穆斯林菜"
},
{
"type_name": "土耳其菜系",
"type_id": "土耳其菜系"
},
{
"type_name": "法国菜",
"type_id": "法国菜"
},
{
"type_name": "意大利菜",
"type_id": "意大利菜"
},
{
"type_name": "希腊菜",
"type_id": "希腊菜"
},
{
"type_name": "德国菜",
"type_id": "德国菜"
},
{
"type_name": "西班牙菜",
"type_id": "西班牙菜"
},
{
"type_name": "阿拉伯菜",
"type_id": "阿拉伯菜"
},
{
"type_name": "伊朗菜",
"type_id": "伊朗菜"
},
{
"type_name": "中亚菜",
"type_id": "中亚菜"
},
{
"type_name": "糖尿病菜",
"type_id": "糖尿病菜"
},
{
"type_name": "早餐",
"type_id": "早餐"
}
],
"filters": {
"美食": [
{"key": "order","name": "排序","value": [
{"n": "综合排序","v": "0"},
{"n": "最多点击","v": "click"},
{"n": "最新发布","v": "pubdate"},
{"n": "最多弹幕","v": "dm"},
{"n": "最多收藏","v": "stow"}
]
},
{"key": "duration","name": "时长","value": [
{"n": "全部时长","v": "0"},
{"n": "60分钟以上","v": "4"},
{"n": "30~60分钟","v": "3"},
{"n": "10~30分钟","v": "2"},
{"n": "10分钟以下","v": "1"}
]
},
{"key": "tids","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": "早餐"}
]
}
],
"火锅": [
{"key": "order","name": "排序","value": [
{"n": "综合排序","v": "0"},
{"n": "最多点击","v": "click"},
{"n": "最新发布","v": "pubdate"},
{"n": "最多弹幕","v": "dm"},
{"n": "最多收藏","v": "stow"}
]
},
{"key": "duration","name": "时长","value": [
{"n": "全部时长","v": "0"},
{"n": "60分钟以上","v": "4"},
{"n": "30~60分钟","v": "3"},
{"n": "10~30分钟","v": "2"},
{"n": "10分钟以下","v": "1"}
]
}
],
"川菜": [
{"key": "order","name": "排序","value": [
{"n": "综合排序","v": "0"},
{"n": "最多点击","v": "click"},
{"n": "最新发布","v": "pubdate"},
{"n": "最多弹幕","v": "dm"},
{"n": "最多收藏","v": "stow"}
]
},
{"key": "duration","name": "时长","value": [
{"n": "全部时长","v": "0"},
{"n": "60分钟以上","v": "4"},
{"n": "30~60分钟","v": "3"},
{"n": "10~30分钟","v": "2"},
{"n": "10分钟以下","v": "1"}
]
}
],
"日料": [
{"key": "order","name": "排序","value": [
{"n": "综合排序","v": "0"},
{"n": "最多点击","v": "click"},
{"n": "最新发布","v": "pubdate"},
{"n": "最多弹幕","v": "dm"},
{"n": "最多收藏","v": "stow"}
]
},
{"key": "duration","name": "时长","value": [
{"n": "全部时长","v": "0"},
{"n": "60分钟以上","v": "4"},
{"n": "30~60分钟","v": "3"},
{"n": "10~30分钟","v": "2"},
{"n": "10分钟以下","v": "1"}
]
}
],
"湘菜": [
{"key": "order","name": "排序","value": [
{"n": "综合排序","v": "0"},
{"n": "最多点击","v": "click"},
{"n": "最新发布","v": "pubdate"},
{"n": "最多弹幕","v": "dm"},
{"n": "最多收藏","v": "stow"}
]
},
{"key": "duration","name": "时长","value": [
{"n": "全部时长","v": "0"},
{"n": "60分钟以上","v": "4"},
{"n": "30~60分钟","v": "3"},
{"n": "10~30分钟","v": "2"},
{"n": "10分钟以下","v": "1"}
]
}
],
"早餐": [
{"key": "order","name": "排序","value": [
{"n": "综合排序","v": "0"},
{"n": "最多点击","v": "click"},
{"n": "最新发布","v": "pubdate"},
{"n": "最多弹幕","v": "dm"},
{"n": "最多收藏","v": "stow"}
]
},
{"key": "duration","name": "时长","value": [
{"n": "全部时长","v": "0"},
{"n": "60分钟以上","v": "4"},
{"n": "30~60分钟","v": "3"},
{"n": "10~30分钟","v": "2"},
{"n": "10分钟以下","v": "1"}
]
}
],
"1年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版1年级语文"
},
{
"n": "人教版",
"v": "人教版1年级语文"
},
{
"n": "北师大版",
"v": "北师大版1年级语文"
},
{
"n": "苏教版",
"v": "苏教版1年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"1年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版1年级英语"
},
{
"n": "人教版",
"v": "人教版1年级英语"
},
{
"n": "北师大版",
"v": "北师大版1年级英语"
},
{
"n": "苏教版",
"v": "苏教版1年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"1年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版1年级数学"
},
{
"n": "人教版",
"v": "人教版1年级数学"
},
{
"n": "北师大版",
"v": "北师大版1年级数学"
},
{
"n": "苏教版",
"v": "苏教版1年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"2年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版2年级语文"
},
{
"n": "人教版",
"v": "人教版2年级语文"
},
{
"n": "北师大版",
"v": "北师大版2年级语文"
},
{
"n": "苏教版",
"v": "苏教版2年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"2年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版2年级英语"
},
{
"n": "人教版",
"v": "人教版2年级英语"
},
{
"n": "北师大版",
"v": "北师大版2年级英语"
},
{
"n": "苏教版",
"v": "苏教版2年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"2年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版2年级数学"
},
{
"n": "人教版",
"v": "人教版2年级数学"
},
{
"n": "北师大版",
"v": "北师大版2年级数学"
},
{
"n": "苏教版",
"v": "苏教版2年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"3年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版3年级语文"
},
{
"n": "人教版",
"v": "人教版3年级语文"
},
{
"n": "北师大版",
"v": "北师大版3年级语文"
},
{
"n": "苏教版",
"v": "苏教版3年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"3年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版3年级英语"
},
{
"n": "人教版",
"v": "人教版3年级英语"
},
{
"n": "北师大版",
"v": "北师大版3年级英语"
},
{
"n": "苏教版",
"v": "苏教版3年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"3年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版3年级数学"
},
{
"n": "人教版",
"v": "人教版3年级数学"
},
{
"n": "北师大版",
"v": "北师大版3年级数学"
},
{
"n": "苏教版",
"v": "苏教版3年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"4年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版4年级语文"
},
{
"n": "人教版",
"v": "人教版4年级语文"
},
{
"n": "北师大版",
"v": "北师大版4年级语文"
},
{
"n": "苏教版",
"v": "苏教版4年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"4年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版4年级英语"
},
{
"n": "人教版",
"v": "人教版4年级英语"
},
{
"n": "北师大版",
"v": "北师大版4年级英语"
},
{
"n": "苏教版",
"v": "苏教版4年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"4年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版4年级数学"
},
{
"n": "人教版",
"v": "人教版4年级数学"
},
{
"n": "北师大版",
"v": "北师大版4年级数学"
},
{
"n": "苏教版",
"v": "苏教版4年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"5年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版5年级语文"
},
{
"n": "人教版",
"v": "人教版5年级语文"
},
{
"n": "北师大版",
"v": "北师大版5年级语文"
},
{
"n": "苏教版",
"v": "苏教版5年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"5年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版5年级英语"
},
{
"n": "人教版",
"v": "人教版5年级英语"
},
{
"n": "北师大版",
"v": "北师大版5年级英语"
},
{
"n": "苏教版",
"v": "苏教版5年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"5年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版5年级数学"
},
{
"n": "人教版",
"v": "人教版5年级数学"
},
{
"n": "北师大版",
"v": "北师大版5年级数学"
},
{
"n": "苏教版",
"v": "苏教版5年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"6年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版6年级语文"
},
{
"n": "人教版",
"v": "人教版6年级语文"
},
{
"n": "北师大版",
"v": "北师大版6年级语文"
},
{
"n": "苏教版",
"v": "苏教版6年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"6年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版6年级英语"
},
{
"n": "人教版",
"v": "人教版6年级英语"
},
{
"n": "北师大版",
"v": "北师大版6年级英语"
},
{
"n": "苏教版",
"v": "苏教版6年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"6年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版6年级数学"
},
{
"n": "人教版",
"v": "人教版6年级数学"
},
{
"n": "北师大版",
"v": "北师大版6年级数学"
},
{
"n": "苏教版",
"v": "苏教版6年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级语文"
},
{
"n": "人教版",
"v": "人教版7年级语文"
},
{
"n": "北师大版",
"v": "北师大版7年级语文"
},
{
"n": "苏教版",
"v": "苏教版7年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级英语"
},
{
"n": "人教版",
"v": "人教版7年级英语"
},
{
"n": "北师大版",
"v": "北师大版7年级英语"
},
{
"n": "苏教版",
"v": "苏教版7年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级数学"
},
{
"n": "人教版",
"v": "人教版7年级数学"
},
{
"n": "北师大版",
"v": "北师大版7年级数学"
},
{
"n": "苏教版",
"v": "苏教版7年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级化学"
},
{
"n": "人教版",
"v": "人教版7年级化学"
},
{
"n": "北师大版",
"v": "北师大版7年级化学"
},
{
"n": "苏教版",
"v": "苏教版7年级化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级物理"
},
{
"n": "人教版",
"v": "人教版7年级物理"
},
{
"n": "北师大版",
"v": "北师大版7年级物理"
},
{
"n": "苏教版",
"v": "苏教版7年级物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级生物"
},
{
"n": "人教版",
"v": "人教版7年级生物"
},
{
"n": "北师大版",
"v": "北师大版7年级生物"
},
{
"n": "苏教版",
"v": "苏教版7年级生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级历史"
},
{
"n": "人教版",
"v": "人教版7年级历史"
},
{
"n": "北师大版",
"v": "北师大版7年级历史"
},
{
"n": "苏教版",
"v": "苏教版7年级历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级语文"
},
{
"n": "人教版",
"v": "人教版8年级语文"
},
{
"n": "北师大版",
"v": "北师大版8年级语文"
},
{
"n": "苏教版",
"v": "苏教版8年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级英语"
},
{
"n": "人教版",
"v": "人教版8年级英语"
},
{
"n": "北师大版",
"v": "北师大版8年级英语"
},
{
"n": "苏教版",
"v": "苏教版8年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级数学"
},
{
"n": "人教版",
"v": "人教版8年级数学"
},
{
"n": "北师大版",
"v": "北师大版8年级数学"
},
{
"n": "苏教版",
"v": "苏教版8年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级化学"
},
{
"n": "人教版",
"v": "人教版8年级化学"
},
{
"n": "北师大版",
"v": "北师大版8年级化学"
},
{
"n": "苏教版",
"v": "苏教版8年级化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级物理"
},
{
"n": "人教版",
"v": "人教版8年级物理"
},
{
"n": "北师大版",
"v": "北师大版8年级物理"
},
{
"n": "苏教版",
"v": "苏教版8年级物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级生物"
},
{
"n": "人教版",
"v": "人教版8年级生物"
},
{
"n": "北师大版",
"v": "北师大版8年级生物"
},
{
"n": "苏教版",
"v": "苏教版8年级生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级历史"
},
{
"n": "人教版",
"v": "人教版8年级历史"
},
{
"n": "北师大版",
"v": "北师大版8年级历史"
},
{
"n": "苏教版",
"v": "苏教版8年级历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级语文"
},
{
"n": "人教版",
"v": "人教版9年级语文"
},
{
"n": "北师大版",
"v": "北师大版9年级语文"
},
{
"n": "苏教版",
"v": "苏教版9年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级英语"
},
{
"n": "人教版",
"v": "人教版9年级英语"
},
{
"n": "北师大版",
"v": "北师大版9年级英语"
},
{
"n": "苏教版",
"v": "苏教版9年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级数学"
},
{
"n": "人教版",
"v": "人教版9年级数学"
},
{
"n": "北师大版",
"v": "北师大版9年级数学"
},
{
"n": "苏教版",
"v": "苏教版9年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级化学"
},
{
"n": "人教版",
"v": "人教版9年级化学"
},
{
"n": "北师大版",
"v": "北师大版9年级化学"
},
{
"n": "苏教版",
"v": "苏教版9年级化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级物理"
},
{
"n": "人教版",
"v": "人教版9年级物理"
},
{
"n": "北师大版",
"v": "北师大版9年级物理"
},
{
"n": "苏教版",
"v": "苏教版9年级物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级生物"
},
{
"n": "人教版",
"v": "人教版9年级生物"
},
{
"n": "北师大版",
"v": "北师大版9年级生物"
},
{
"n": "苏教版",
"v": "苏教版9年级生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级历史"
},
{
"n": "人教版",
"v": "人教版9年级历史"
},
{
"n": "北师大版",
"v": "北师大版9年级历史"
},
{
"n": "苏教版",
"v": "苏教版9年级历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一语文"
},
{
"n": "人教版",
"v": "人教版高一语文"
},
{
"n": "北师大版",
"v": "北师大版高一语文"
},
{
"n": "苏教版",
"v": "苏教版高一语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一英语"
},
{
"n": "人教版",
"v": "人教版高一英语"
},
{
"n": "北师大版",
"v": "北师大版高一英语"
},
{
"n": "苏教版",
"v": "苏教版高一英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一数学"
},
{
"n": "人教版",
"v": "人教版高一数学"
},
{
"n": "北师大版",
"v": "北师大版高一数学"
},
{
"n": "苏教版",
"v": "苏教版高一数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一物理"
},
{
"n": "人教版",
"v": "人教版高一物理"
},
{
"n": "北师大版",
"v": "北师大版高一物理"
},
{
"n": "苏教版",
"v": "苏教版高一物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一化学"
},
{
"n": "人教版",
"v": "人教版高一化学"
},
{
"n": "北师大版",
"v": "北师大版高一化学"
},
{
"n": "苏教版",
"v": "苏教版高一化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一历史"
},
{
"n": "人教版",
"v": "人教版高一历史"
},
{
"n": "北师大版",
"v": "北师大版高一历史"
},
{
"n": "苏教版",
"v": "苏教版高一历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一生物"
},
{
"n": "人教版",
"v": "人教版高一生物"
},
{
"n": "北师大版",
"v": "北师大版高一生物"
},
{
"n": "苏教版",
"v": "苏教版高一生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一思想政治": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一思想政治"
},
{
"n": "人教版",
"v": "人教版高一思想政治"
},
{
"n": "北师大版",
"v": "北师大版高一思想政治"
},
{
"n": "苏教版",
"v": "苏教版高一思想政治"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一地理"
},
{
"n": "人教版",
"v": "人教版高一地理"
},
{
"n": "北师大版",
"v": "北师大版高一地理"
},
{
"n": "苏教版",
"v": "苏教版高一地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二语文"
},
{
"n": "人教版",
"v": "人教版高二语文"
},
{
"n": "北师大版",
"v": "北师大版高二语文"
},
{
"n": "苏教版",
"v": "苏教版高二语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二英语"
},
{
"n": "人教版",
"v": "人教版高二英语"
},
{
"n": "北师大版",
"v": "北师大版高二英语"
},
{
"n": "苏教版",
"v": "苏教版高二英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二数学"
},
{
"n": "人教版",
"v": "人教版高二数学"
},
{
"n": "北师大版",
"v": "北师大版高二数学"
},
{
"n": "苏教版",
"v": "苏教版高二数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二物理"
},
{
"n": "人教版",
"v": "人教版高二物理"
},
{
"n": "北师大版",
"v": "北师大版高二物理"
},
{
"n": "苏教版",
"v": "苏教版高二物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二化学"
},
{
"n": "人教版",
"v": "人教版高二化学"
},
{
"n": "北师大版",
"v": "北师大版高二化学"
},
{
"n": "苏教版",
"v": "苏教版高二化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二历史"
},
{
"n": "人教版",
"v": "人教版高二历史"
},
{
"n": "北师大版",
"v": "北师大版高二历史"
},
{
"n": "苏教版",
"v": "苏教版高二历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二生物"
},
{
"n": "人教版",
"v": "人教版高二生物"
},
{
"n": "北师大版",
"v": "北师大版高二生物"
},
{
"n": "苏教版",
"v": "苏教版高二生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二思想政治": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二思想政治"
},
{
"n": "人教版",
"v": "人教版高二思想政治"
},
{
"n": "北师大版",
"v": "北师大版高二思想政治"
},
{
"n": "苏教版",
"v": "苏教版高二思想政治"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二地理"
},
{
"n": "人教版",
"v": "人教版高二地理"
},
{
"n": "北师大版",
"v": "北师大版高二地理"
},
{
"n": "苏教版",
"v": "苏教版高二地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三语文"
},
{
"n": "人教版",
"v": "人教版高三语文"
},
{
"n": "北师大版",
"v": "北师大版高三语文"
},
{
"n": "苏教版",
"v": "苏教版高三语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三英语"
},
{
"n": "人教版",
"v": "人教版高三英语"
},
{
"n": "北师大版",
"v": "北师大版高三英语"
},
{
"n": "苏教版",
"v": "苏教版高三英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三数学"
},
{
"n": "人教版",
"v": "人教版高三数学"
},
{
"n": "北师大版",
"v": "北师大版高三数学"
},
{
"n": "苏教版",
"v": "苏教版高三数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三物理"
},
{
"n": "人教版",
"v": "人教版高三物理"
},
{
"n": "北师大版",
"v": "北师大版高三物理"
},
{
"n": "苏教版",
"v": "苏教版高三物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三化学"
},
{
"n": "人教版",
"v": "人教版高三化学"
},
{
"n": "北师大版",
"v": "北师大版高三化学"
},
{
"n": "苏教版",
"v": "苏教版高三化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三历史"
},
{
"n": "人教版",
"v": "人教版高三历史"
},
{
"n": "北师大版",
"v": "北师大版高三历史"
},
{
"n": "苏教版",
"v": "苏教版高三历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三生物"
},
{
"n": "人教版",
"v": "人教版高三生物"
},
{
"n": "北师大版",
"v": "北师大版高三生物"
},
{
"n": "苏教版",
"v": "苏教版高三生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三思想政治": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三思想政治"
},
{
"n": "人教版",
"v": "人教版高三思想政治"
},
{
"n": "北师大版",
"v": "北师大版高三思想政治"
},
{
"n": "苏教版",
"v": "苏教版高三思想政治"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三地理"
},
{
"n": "人教版",
"v": "人教版高三地理"
},
{
"n": "北师大版",
"v": "北师大版高三地理"
},
{
"n": "苏教版",
"v": "苏教版高三地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"相声小品": [
{
"key": "tid",
"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": "屌丝男士"
},
{
"n": "喜剧综艺",
"v": "喜剧综艺"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "儿童"
},
{
"n": "教育",
"v": "儿童教育"
},
{
"n": "歌曲",
"v": "儿童歌曲"
},
{
"n": "舞蹈",
"v": "儿童舞蹈"
},
{
"n": "成语故事",
"v": "儿童成语故事"
},
{
"n": "音乐",
"v": "儿童音乐"
},
{
"n": "儿童MV",
"v": "儿童MV"
},
{
"n": "贝乐虎",
"v": "贝乐虎"
},
{
"n": "宝宝巴士",
"v": "宝宝巴士"
},
{
"n": "儿童好声音",
"v": "儿童好声音"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"动物世界": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"戏曲": [
{
"key": "tid",
"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": "沪剧"
},
{
"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": "藏剧"
},
{
"n": "皮影戏",
"v": "皮影戏"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"窗白噪音": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"演唱会": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "演唱会"
},
{
"n": "周杰伦",
"v": "周杰伦"
},
{
"n": "陈奕迅",
"v": "陈奕迅"
},
{
"n": "Beyond",
"v": "Beyond"
},
{
"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": "刘若英"
},
{
"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": "谭咏麟"
},
{
"n": "凤凰传奇",
"v": "凤凰传奇"
},
{
"n": "容祖儿",
"v": "容祖儿"
},
{
"n": "周传雄",
"v": "周传雄"
},
{
"n": "SHE",
"v": "SHE"
},
{
"n": "苏打绿",
"v": "苏打绿"
},
{
"n": "五月天",
"v": "五月天"
},
{
"n": "张国荣",
"v": "张国荣"
},
{
"n": "梅艳芳",
"v": "梅艳芳"
},
{
"n": "孙燕姿",
"v": "孙燕姿"
},
{
"n": "李健",
"v": "李健"
},
{
"n": "华晨宇",
"v": "华晨宇"
},
{
"n": "袁娅维",
"v": "袁娅维"
},
{
"n": "大张伟",
"v": "大张伟"
},
{
"n": "TFBOYS",
"v": "TFBOYS"
},
{
"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": "陈慧娴"
},
{
"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": "谢霆锋"
},
{
"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": "By2",
"v": "By2"
},
{
"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": "泰勒·斯威夫特"
},
{
"n": "阿黛尔",
"v": "阿黛尔"
},
{
"n": "BIGBANG",
"v": "BIGBANG"
},
{
"n": "LadyGaga",
"v": "LadyGaga"
},
{
"n": "贾斯丁比伯",
"v": "贾斯丁比伯"
},
{
"n": "中岛美雪",
"v": "中岛美雪"
},
{
"n": "仓木麻衣",
"v": "仓木麻衣"
},
{
"n": "后街男孩",
"v": "后街男孩"
},
{
"n": "布兰妮",
"v": "布兰妮"
},
{
"n": "吾爱评测整理",
"v": "吾爱评测"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}
}
+225
View File
@@ -0,0 +1,225 @@
# -*- coding: utf-8 -*-
# by @嗷呜
import json
import sys
import threading
import uuid
import requests
sys.path.append('..')
from base.spider import Spider
import time
from Crypto.Hash import MD5, SHA1
class Spider(Spider):
'''
配置示例:
{
"key": "xxxx",
"name": "xxxx",
"type": 3,
"api": ".所在路径/金牌.py",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": "https://www.jiabaide.cn,域名2,域名3"
}
},
'''
def init(self, extend=""):
if extend:
hosts=json.loads(extend)['site']
self.host = self.host_late(hosts)
pass
def getName(self):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def destroy(self):
pass
def homeContent(self, filter):
cdata = self.fetch(f"{self.host}/api/mw-movie/anonymous/get/filer/type", headers=self.getheaders()).json()
fdata = self.fetch(f"{self.host}/api/mw-movie/anonymous/v1/get/filer/list", headers=self.getheaders()).json()
result = {}
classes = []
filters={}
for k in cdata['data']:
classes.append({
'type_name': k['typeName'],
'type_id': str(k['typeId']),
})
sort_values = [{"n": "最近更新", "v": "2"},{"n": "人气高低", "v": "3"}, {"n": "评分高低", "v": "4"}]
for tid, d in fdata['data'].items():
current_sort_values = sort_values.copy()
if tid == '1':
del current_sort_values[0]
filters[tid] = [
{"key": "type", "name": "类型",
"value": [{"n": i["itemText"], "v": i["itemValue"]} for i in d["typeList"]]},
*([] if not d["plotList"] else [{"key": "v_class", "name": "剧情",
"value": [{"n": i["itemText"], "v": i["itemText"]}
for i in d["plotList"]]}]),
{"key": "area", "name": "地区",
"value": [{"n": i["itemText"], "v": i["itemText"]} for i in d["districtList"]]},
{"key": "year", "name": "年份",
"value": [{"n": i["itemText"], "v": i["itemText"]} for i in d["yearList"]]},
{"key": "lang", "name": "语言",
"value": [{"n": i["itemText"], "v": i["itemText"]} for i in d["languageList"]]},
{"key": "sort", "name": "排序", "value": current_sort_values}
]
result['class'] = classes
result['filters'] = filters
return result
def homeVideoContent(self):
data1 = self.fetch(f"{self.host}/api/mw-movie/anonymous/v1/home/all/list", headers=self.getheaders()).json()
data2=self.fetch(f"{self.host}/api/mw-movie/anonymous/home/hotSearch",headers=self.getheaders()).json()
data=[]
for i in data1['data'].values():
data.extend(i['list'])
data.extend(data2['data'])
vods=self.getvod(data)
return {'list':vods}
def categoryContent(self, tid, pg, filter, extend):
params = {
"area": extend.get('area', ''),
"filterStatus": "1",
"lang": extend.get('lang', ''),
"pageNum": pg,
"pageSize": "30",
"sort": extend.get('sort', '1'),
"sortBy": "1",
"type": extend.get('type', ''),
"type1": tid,
"v_class": extend.get('v_class', ''),
"year": extend.get('year', '')
}
data = self.fetch(f"{self.host}/api/mw-movie/anonymous/video/list?{self.js(params)}", headers=self.getheaders(params)).json()
result = {}
result['list'] = self.getvod(data['data']['list'])
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def detailContent(self, ids):
data=self.fetch(f"{self.host}/api/mw-movie/anonymous/video/detail?id={ids[0]}",headers=self.getheaders({'id':ids[0]})).json()
vod=self.getvod([data['data']])[0]
vod['vod_play_from']='嗷呜有金牌'
vod['vod_play_url'] = '#'.join(
f"{i['name'] if len(vod['episodelist']) > 1 else vod['vod_name']}${ids[0]}@@{i['nid']}" for i in
vod['episodelist'])
vod.pop('episodelist', None)
return {'list':[vod]}
def searchContent(self, key, quick, pg="1"):
params = {
"keyword": key,
"pageNum": pg,
"pageSize": "8",
"sourceCode": "1"
}
data=self.fetch(f"{self.host}/api/mw-movie/anonymous/video/searchByWord?{self.js(params)}",headers=self.getheaders(params)).json()
vods=self.getvod(data['data']['result']['list'])
return {'list':vods,'page':pg}
def playerContent(self, flag, id, vipFlags):
self.header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.61 Chrome/126.0.6478.61 Not/A)Brand/8 Safari/537.36',
'sec-ch-ua-platform': '"Windows"',
'DNT': '1',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'Origin': self.host,
'Referer': f'{self.host}/'
}
ids=id.split('@@')
pdata = self.fetch(f"{self.host}/api/mw-movie/anonymous/v2/video/episode/url?clientType=1&id={ids[0]}&nid={ids[1]}",headers=self.getheaders({'clientType':'1','id': ids[0], 'nid': ids[1]})).json()
vlist=[]
for i in pdata['data']['list']:vlist.extend([i['resolutionName'],i['url']])
return {'parse':0,'url':vlist,'header':self.header}
def localProxy(self, param):
pass
def host_late(self, url_list):
if isinstance(url_list, str):
urls = [u.strip() for u in url_list.split(',')]
else:
urls = url_list
if len(urls) <= 1:
return urls[0] if urls else ''
results = {}
threads = []
def test_host(url):
try:
start_time = time.time()
response = requests.head(url, timeout=1.0, allow_redirects=False)
delay = (time.time() - start_time) * 1000
results[url] = delay
except Exception as e:
results[url] = float('inf')
for url in urls:
t = threading.Thread(target=test_host, args=(url,))
threads.append(t)
t.start()
for t in threads:
t.join()
return min(results.items(), key=lambda x: x[1])[0]
def md5(self, sign_key):
md5_hash = MD5.new()
md5_hash.update(sign_key.encode('utf-8'))
md5_result = md5_hash.hexdigest()
return md5_result
def js(self, param):
return '&'.join(f"{k}={v}" for k, v in param.items())
def getheaders(self, param=None):
if param is None:param = {}
t=str(int(time.time()*1000))
param['key']='cb808529bae6b6be45ecfab29a4889bc'
param['t']=t
sha1_hash = SHA1.new()
sha1_hash.update(self.md5(self.js(param)).encode('utf-8'))
sign = sha1_hash.hexdigest()
deviceid = str(uuid.uuid4())
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.61 Chrome/126.0.6478.61 Not/A)Brand/8 Safari/537.36',
'Accept': 'application/json, text/plain, */*',
'sign': sign,
't': t,
'deviceid':deviceid
}
return headers
def convert_field_name(self, field):
field = field.lower()
if field.startswith('vod') and len(field) > 3:
field = field.replace('vod', 'vod_')
if field.startswith('type') and len(field) > 4:
field = field.replace('type', 'type_')
return field
def getvod(self, array):
return [{self.convert_field_name(k): v for k, v in item.items()} for item in array]