Files
tvbox_collect/dr/vod/555影视.js
T
2026-06-29 03:41:14 +00:00

245 lines
16 KiB
JavaScript

/**
* 剧圈圈在线(www.jqqzx.top)爬虫
* 版本:3.0 - WvSpider v2.0 新架构
* 最后更新:2025-12-23
* 发布页 https://www.555u.club/
*
* @config
// * debug: true
// * showWebView: true
*
*/
const baseUrl = 'https://www.55i5m2t9p6.shop';
/**
* 初始化方法
*/
function init(cfg) {
console.log('初始化被调用')
return {};
}
/**
* 首页分类
*/
async function homeContent(filter) {
const filterConfig = {
class: [
{ type_id: "1", type_name: "电影" },
{ type_id: "2", type_name: "连续剧" },
{ type_id: "3", type_name: "综艺" },
{ type_id: "4", type_name: "动漫" },
{ type_id: "124", type_name: "福利" }
],
filters: {
"1": [
{ key: "area", 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: "type", name: "类型", value: [ {n:"全部",v:""}, {n:"Netflix",v:"Netflix"}, {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: "lang", 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: "year", name: "年份", value: [ {n:"全部",v:""}, {n:"2026",v:"2026"}, {n:"2025",v:"2025"}, {n:"2024",v:"2024"}, {n:"2023",v:"2023"}, {n:"2022",v:"2022"}, {n:"2021",v:"2021"}, {n:"2020",v:"2020"}, {n:"2019",v:"2019"}, {n:"2018",v:"2018"}, {n:"2017",v:"2017"}, {n:"2016",v:"2016"}, {n:"2015",v:"2015"}, {n:"2014",v:"2014"}, {n:"2013",v:"2013"}, {n:"2012",v:"2012"}, {n:"2011",v:"2011"}, {n:"2010",v:"2010"}, {n:"2009",v:"2009"}, {n:"2008",v:"2008"}, {n:"2007",v:"2007"}, {n:"2006",v:"2006"}, {n:"2005",v:"2005"}, {n:"2004",v:"2004"}, {n:"2003",v:"2003"}, {n:"2002",v:"2002"}, {n:"2001",v:"2001"}, {n:"2000",v:"2000"}, {n:"90年代",v:"90年代"}, {n:"80年代",v:"80年代"}, {n:"70年代",v:"70年代"}, {n:"更早",v:"更早"} ] },
{ key: "sort", name: "排序", value: [ {n:"时间排序",v:"time"}, {n:"人气排序",v:"hits"}, {n:"评分排序",v:"score"} ] }
],
"2": [
{ key: "type", name: "剧情", value: [ {n:"全部",v:""}, {n:"Netflix",v:"Netflix"}, {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: "area", 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:"其他"} ] },
{ key: "year", name: "年份", value: [ {n:"全部",v:""}, {n:"2026",v:"2026"}, {n:"2025",v:"2025"}, {n:"2024",v:"2024"}, {n:"2023",v:"2023"}, {n:"2022",v:"2022"}, {n:"2021",v:"2021"}, {n:"2020",v:"2020"}, {n:"2019",v:"2019"}, {n:"2018",v:"2018"}, {n:"2017",v:"2017"}, {n:"2016",v:"2016"}, {n:"2015",v:"2015"}, {n:"2014",v:"2014"}, {n:"2013",v:"2013"}, {n:"2012",v:"2012"}, {n:"2011",v:"2011"}, {n:"2010",v:"2010"}, {n:"2009",v:"2009"}, {n:"2008",v:"2008"}, {n:"2007",v:"2007"}, {n:"2006",v:"2006"}, {n:"2005",v:"2005"}, {n:"2004",v:"2004"}, {n:"2003",v:"2003"}, {n:"2002",v:"2002"}, {n:"2001",v:"2001"}, {n:"2000",v:"2000"}, {n:"90年代",v:"90年代"}, {n:"80年代",v:"80年代"}, {n:"70年代",v:"70年代"}, {n:"更早",v:"更早"} ] },
{ key: "sort", name: "排序", value: [ {n:"时间排序",v:"time"}, {n:"人气排序",v:"hits"}, {n:"评分排序",v:"score"} ] }
],
"3": [
{ key: "type", name: "剧情", value: [ {n:"全部",v:""}, {n:"Netflix",v:"Netflix"}, {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: "area", name: "地区", value: [ {n:"全部",v:""}, {n:"大陆",v:"大陆"}, {n:"韩国",v:"韩国"}, {n:"香港",v:"香港"}, {n:"台湾",v:"台湾"}, {n:"美国",v:"美国"}, {n:"其它",v:"其它"} ] },
{ key: "lang", name: "语言", value: [ {n:"全部",v:""}, {n:"国语",v:"国语"}, {n:"英语",v:"英语"}, {n:"粤语",v:"粤语"}, {n:"闽南语",v:"闽南语"}, {n:"韩语",v:"韩语"}, {n:"日语",v:"日语"}, {n:"其它",v:"其它"} ] },
{ key: "year", name: "年份", value: [ {n:"全部",v:""}, {n:"2026",v:"2026"}, {n:"2025",v:"2025"}, {n:"2024",v:"2024"}, {n:"2023",v:"2023"}, {n:"2022",v:"2022"}, {n:"2021",v:"2021"}, {n:"2020",v:"2020"}, {n:"2019",v:"2019"}, {n:"2018",v:"2018"}, {n:"2017",v:"2017"}, {n:"2016",v:"2016"}, {n:"2015",v:"2015"}, {n:"2014",v:"2014"}, {n:"2013",v:"2013"}, {n:"2012",v:"2012"}, {n:"2011",v:"2011"}, {n:"2010",v:"2010"}, {n:"2009",v:"2009"}, {n:"2008",v:"2008"}, {n:"2007",v:"2007"}, {n:"2006",v:"2006"}, {n:"2005",v:"2005"}, {n:"2004",v:"2004"}, {n:"2003",v:"2003"}, {n:"2002",v:"2002"}, {n:"2001",v:"2001"}, {n:"2000",v:"2000"}, {n:"90年代",v:"90年代"}, {n:"80年代",v:"80年代"}, {n:"70年代",v:"70年代"}, {n:"更早",v:"更早"} ] },
{ key: "sort", name: "排序", value: [ {n:"时间排序",v:"time"}, {n:"人气排序",v:"hits"}, {n:"评分排序",v:"score"} ] }
],
"4": [
{ key: "type", name: "剧情", value: [ {n:"全部",v:""}, {n:"Netflix",v:"Netflix"}, {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:"OVA版",v:"OVA版"}, {n:"TV版",v:"TV版"}, {n:"新番动画",v:"新番动画"}, {n:"完结动画",v:"完结动画"} ] },
{ key: "area", name: "地区", value: [ {n:"全部",v:""}, {n:"大陆",v:"大陆"}, {n:"日本",v:"日本"}, {n:"欧美",v:"欧美"}, {n:"其他",v:"其他"} ] },
{ key: "lang", name: "语言", value: [ {n:"全部",v:""}, {n:"国语",v:"国语"}, {n:"英语",v:"英语"}, {n:"粤语",v:"粤语"}, {n:"闽南语",v:"闽南语"}, {n:"韩语",v:"韩语"}, {n:"日语",v:"日语"}, {n:"其它",v:"其它"} ] },
{ key: "year", name: "年份", value: [ {n:"全部",v:""}, {n:"2026",v:"2026"}, {n:"2025",v:"2025"}, {n:"2024",v:"2024"}, {n:"2023",v:"2023"}, {n:"2022",v:"2022"}, {n:"2021",v:"2021"}, {n:"2020",v:"2020"}, {n:"2019",v:"2019"}, {n:"2018",v:"2018"}, {n:"2017",v:"2017"}, {n:"2016",v:"2016"}, {n:"2015",v:"2015"}, {n:"2014",v:"2014"}, {n:"2013",v:"2013"}, {n:"2012",v:"2012"}, {n:"2011",v:"2011"}, {n:"2010",v:"2010"}, {n:"2009",v:"2009"}, {n:"2008",v:"2008"}, {n:"2007",v:"2007"}, {n:"2006",v:"2006"}, {n:"2005",v:"2005"}, {n:"2004",v:"2004"}, {n:"2003",v:"2003"}, {n:"2002",v:"2002"}, {n:"2001",v:"2001"}, {n:"2000",v:"2000"}, {n:"90年代",v:"90年代"}, {n:"80年代",v:"80年代"}, {n:"70年代",v:"70年代"}, {n:"更早",v:"更早"} ] },
{ key: "sort", name: "排序", value: [ {n:"时间排序",v:"time"}, {n:"人气排序",v:"hits"}, {n:"评分排序",v:"score"} ] }
]
}
};
return filterConfig;
}
/**
* 首页推荐视频
*/
async function homeVideoContent() {
const res = Java.req(baseUrl);
if (res.error) return Result.error('获取数据失败:' + res.error);
const document = res.doc;
return { list: parseVideoList(document) };
}
/**
* 分类列表
*/
async function categoryContent(tid, pg, filter, extend) {
const area = extend.area || '';
const year = extend.year || '';
const type = extend.type || '';
const sort = extend.sort || '';
const lang = extend.lang || '';
const res = Java.req(`${baseUrl}/vodshow/${tid}-${area}-${sort}-${type}-${lang}----${pg}---${year}.html`);
if (res.error) return Result.error('获取数据失败:' + res.error);
const document = res.doc;
const pagecount = parseInt(res.body.match(/href="[^"]*?-(\d+)---[^"]*"[^>]+title="尾页"/)?.[1] || '1');
return {
code: 1,
msg: "数据列表",
list: parseVideoList(document),
page: parseInt(pg) || 1,
pagecount: pagecount,
limit: 12,
total: pagecount * 12
};
}
/**
* 详情页
*/
async function detailContent(ids) {
// console.log('获取到的id', ids);
const res = Java.req(baseUrl + ids[0]);
const document = res.doc;
return {
code: 1,
msg: "数据列表",
list: parseDetailPage(document, ids[0]),
page: 1,
pagecount: 1,
limit: 1,
total: 1
};
}
/**
* 搜索
*/
async function searchContent(key, quick, pg) {
const url = `${baseUrl}/vodsearch/${key}----------${pg}---.html`;
let res = Java.req(url);
const vods = [];
const items = res.doc.querySelectorAll('.module-card-item');
items.forEach(item => {
const playLink = item.querySelector('.play-btn-o');
const vod = {
vod_id: playLink?.getAttribute('href') || '',
vod_name: item.querySelector('strong')?.textContent?.trim() || '',
vod_pic: item.querySelector('img')?.getAttribute('data-original') || '',
vod_remarks: item.querySelector('.module-item-note')?.textContent?.trim() || '',
};
vods.push(vod);
});
const totalText = res.doc.querySelector('.mac_total')?.textContent || '0';
const total = parseInt(totalText) || 0;
const pageText = res.doc.querySelector('.page-current')?.textContent || '1';
const page = parseInt(pageText) || 1;
const lastPageLink = res.doc.querySelector('a[title="尾页"]');
let pagecount = 1;
if (lastPageLink) {
const href = lastPageLink.getAttribute('href');
const match = href.match(/(\d+)---/);
if (match) {
pagecount = parseInt(match[1]) || 1;
}
}
return {
code: 1,
msg: "数据列表",
list: vods,
page: page,
pagecount: pagecount,
limit: 20,
total: total
};
}
/**
* 播放器
*/
async function playerContent(flag, id, vipFlags) {
return { url: id, parse: 1 };
}
/* ---------------- 工具函数 ---------------- */
/**
* 提取视频列表
*/
function parseVideoList(document) {
const vods = [];
const items = document.querySelectorAll('.module-poster-item');
items.forEach(item => {
const vod = {
vod_id: item?.getAttribute('href') || '',
vod_name: item.querySelector('.module-poster-item-title')?.textContent?.trim() || '',
vod_pic: item.querySelector('img')?.getAttribute('data-original') || '',
vod_remarks: item.querySelector('.module-item-note')?.textContent?.trim() || '',
};
vods.push(vod);
});
return vods;
}
/**
* 解析详情页
*/
function parseDetailPage(document, vid) {
const text = s => document.querySelector(s)?.textContent?.trim() || '';
const attr = (s, a) => document.querySelector(s)?.getAttribute(a) || '';
const findInfo = label => [...document.querySelectorAll('.module-info-item')].find(el => el.textContent.includes(label));
const playUrls = [];
document.querySelectorAll('.his-tab-list').forEach(list => {
const eps = [...list.querySelectorAll('.module-play-list-link')].map(link => {
const name = link.querySelector('span')?.textContent?.trim();
const url = baseUrl + link.getAttribute('href');
return name && url ? `${name}$${url}` : null;
}).filter(Boolean);
if (eps.length) playUrls.push(eps.join('#'));
});
const playFrom = [...document.querySelectorAll('.module-tab-item span')]
.map(s => s.textContent.trim())
.filter(Boolean)
.join('$$$');
return [{
vod_id: vid,//location.href,
vod_name: text('.module-info-heading h1'),
vod_pic: attr('.module-item-pic img', 'data-original'),
vod_remarks: findInfo('集数')?.querySelector('.module-info-item-content')?.textContent?.trim() || '',
vod_year: attr('.module-info-tag-link a[title*="202"]', 'title'),
vod_director: findInfo('导演')
? [...findInfo('导演').querySelectorAll('a')].map(a => a.textContent.trim()).join('/')
: '',
vod_actor: findInfo('主演')
? [...findInfo('主演').querySelectorAll('a')].map(a => a.textContent.trim()).join('/')
: '',
vod_content: text('.module-info-introduction-content p'),
vod_play_from: playFrom,
vod_play_url: playUrls.join('$$$')
}];
}