TBox/JS/qiyou.js
2025-02-01 22:20:35 -05:00

181 lines
6.6 KiB
JavaScript

const webSite = 'http://www.qiyoudy4.com';
const headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36', };
//homeContent();
//categoryContent("2",1,null);
//detailContent("/view/33495.html");
//playerContent("/play/33495-0-0.html");
//searchContent("斗罗大陆");
//获取影视列表
async function categoryContent(tid, pg = 1, extend) {
let backData = new RepVideo();
try {
let listUrl = webSite + `/list/${tid}_${pg}.html`;
let pro = await req(listUrl, { headers: headers });
const proData = await pro.text();
console.log(proData);
const $ = cheerio.load(proData);
let allVideo = $('.stui-vodlist__box');
let videos = [];
allVideo.each((_, e) => {
let url = $(e).find('a').attr('href');
let name = $(e).find('a').attr('title');
let pic = $(e).find('a').attr('data-original');
let remarks = $(e).find('span.pic-text').text();
let videoDet = new VideoList();
videoDet.vod_id = url;
videoDet.vod_pic = pic;
videoDet.vod_name = name;
videoDet.vod_remarks = remarks;
videos.push(videoDet);
})
backData.list = videos;
} catch (error) {
console.error('Error in fetchData:', error);
backData.msg = error.statusText;
}
console.log(JSON.stringify(backData));
return JSON.stringify(backData);
}
//获取影视详情信息
async function detailContent(ids) {
let backData = new RepVideo();
const webUrl = webSite + ids;
try {
const pro = await req(webUrl, { headers: headers });
const proData = await pro.text();
//console.log(proData);
const $ = cheerio.load(proData);
let vod_content = $('meta[property=og:description]').attr('content');
let vod_pic = $('.stui-vodlist__thumb img').attr('data-original');
let vod_name = $('.stui-vodlist__thumb').attr('title');
let vod_year = '';
let vod_director = $('meta[property=og:video:director]').attr('content');
let vod_actor = $('meta[property=og:video:actor]').attr('content');
let vod_area = $('meta[property=og:area]').attr('content');
let playlist = $('.stui-content__playlist');
let playSources = $('.nav.nav-tabs.pull-right li a');
let vod_play_url = [];
let vod_play_from = [];
playlist.each((index, element) => {
let eps = $(element).find('li a');
let temp = '';
eps.each((index, e) => {
let name = $(e).text();
let url = $(e).attr('href');
temp += `${name}$${url}`;
if (index !== eps.length - 1) {
temp += '#';
}
})
vod_play_url.push(temp);
})
playSources.each((index, element) => {
vod_play_from.push($(element).text().trim());
});
let detModel = new VideoDetail();
let videos = [];
detModel.vod_year = vod_year;
detModel.vod_director = vod_director;
detModel.vod_actor = vod_actor;
detModel.vod_area = vod_area;
detModel.vod_content = vod_content;
detModel.vod_pic = vod_pic;
detModel.vod_name = vod_name;
detModel.vod_play_from = vod_play_from.join('$$$')
detModel.vod_play_url = vod_play_url.join('$$$');
detModel.vod_id = ids;
videos.push(detModel);
backData.list = videos;
} catch (error) {
console.error('Error in fetchData:', error);
backData.msg = error.statusText;
}
console.log(JSON.stringify(backData));
return JSON.stringify(backData);
}
//获取首页分类
async function homeContent() {
let backData = new RepVideo();
// 定义分类数据
const classData = [
{ "type_id": 1, "type_name": "电影" },
{ "type_id": 2, "type_name": "电视剧" },
{ "type_id": 3, "type_name": "动漫" },
{ "type_id": 4, "type_name": "综艺" }
];
backData.class = classData;
//console.log(JSON.stringify(backData));
return JSON.stringify(backData);
}
//解析获取播放地址
async function playerContent(vod_id) {
let backData = new RepVideoPlayUrl();
let reqUrl = webSite + vod_id;
try {
const pro = await req(reqUrl, { headers: headers });
const proData = await pro.text();
let $ = cheerio.load(proData);
let iframe = $('iframe').attr('src');
let player = await req(iframe, { headers: headers });
const playerData = await player.text();
$ = cheerio.load(playerData);
$('script').each((_, e) => {
if ($(e).text().includes('DPlayer')) {
let playUrl = $(e).text().match(/vid="(.*?)";/)[1];
backData.url = playUrl;
backData.header = headersToString(headers);
//backData.header = '';
backData.parse = 1; //直链
backData.playUrl = '';
}
})
//console.log(JSON.stringify(backData));
} catch (error) {
console.error('Error in fetchData:', error);
backData.msg = error.statusText;
}
console.log(JSON.stringify(backData));
return JSON.stringify(backData);
}
// post搜索例子
async function searchContent(keyword) {
let backData = new RepVideo();
try {
let searchUrl = `${webSite}/search.php`;
console.log(searchUrl);
let pro = await req(searchUrl, {
method: 'POST',
headers: { 'user-agent': headers['User-Agent'], 'content-type': 'application/x-www-form-urlencoded' },
body: `searchword=${encodeURIComponent(keyword)}`,
})
const proData = await pro.text();
let $ = cheerio.load(proData);
let allVideo = $('.stui-vodlist__media > li');
let videos = [];
allVideo.each((_, e) => {
let url = $(e).find('a').attr('href');
let name = $(e).find('a').attr('title');
let pic = $(e).find('a').attr('data-original');
let remarks = $(e).find('span.pic-text').text();
let videoDet = new VideoList();
videoDet.vod_id = url;
videoDet.vod_pic = pic;
videoDet.vod_name = name;
videoDet.vod_remarks = remarks;
videos.push(videoDet);
})
backData.list = videos;
} catch (error) {
console.error('Error in fetchData:', error);
backData.msg = error.statusText;
}
console.log(JSON.stringify(backData));
return JSON.stringify(backData);
}