From 4702433944fe463201a18be8b722c930969db879 Mon Sep 17 00:00:00 2001 From: lushunming <1357197829@qq.com> Date: Mon, 19 Aug 2024 11:31:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- json/js/newvision.js | 261 ------------------------------------------- 1 file changed, 261 deletions(-) delete mode 100644 json/js/newvision.js diff --git a/json/js/newvision.js b/json/js/newvision.js deleted file mode 100644 index 2558d9ef..00000000 --- a/json/js/newvision.js +++ /dev/null @@ -1,261 +0,0 @@ -/* -* @File : newvision.js -* @Author : jade -* @Date : 2024/2/20 14:14 -* @Email : jadehh@1ive.com -* @Software : Samples -* @Desc : 新视觉影院 -*/ -import {VodDetail, VodShort} from "../lib/vod.js" -import * as Utils from "../lib/utils.js"; -import {Spider} from "./spider.js"; -import {Crypto} from "../lib/cat.js"; - - -class NewVisionSpider extends Spider { - constructor() { - super(); - this.siteUrl = "https://www.6080yy3.com" - } - - getAppName() { - return "新视觉影院" - } - - getName() { - return "🐼┃新视觉影院┃🐼" - } - getJSName() { - return "newvision" - } - - getType() { - return 3 - } - async setClasses() { - let $ = await this.getHtml() - let navElements = $($("[class=\"nav-menu-items\"]")[0]).find("a") - for (const navElement of navElements) { - let type_id = Utils.getStrByRegex(/\/vodtype\/(.*?).html/, navElement.attribs.href) - let type_name = navElement.attribs.title - if (Utils.isNumeric(type_id)) { - this.classes.push(this.getTypeDic(type_name, type_id)) - } - } - } - - async getFilter($) { - let elements = $("[class='scroll-content']").slice(1) - let extend_list = [] - let type_key_list = [3, 1, 11, 2] - for (let i = 0; i < elements.length; i++) { - let name = $($(elements[i]).find("a")[0]).text() - let extend_dic = {"key": name, "name": name, "value": []} - extend_dic["name"] = name - extend_dic["value"].push({"n": "全部", "v": "0"}) - for (const ele of $(elements[i]).find("a").slice(1)) { - let type_id_list = Utils.getStrByRegex(/\/vodshow\/(.*?).html/, ele.attribs.href).split("-") - extend_dic["value"].push({ - "n": $(ele).text(), "v": decodeURIComponent(type_id_list[type_key_list[i]]) - }) - } - extend_list.push(extend_dic) - } - return extend_list - } - - async setFilterObj() { - for (const type_dic of this.classes) { - let type_id = type_dic["type_id"] - if (type_id !== "最近更新") { - let url = this.siteUrl + `/vodshow/${type_id}-----------.html` - let $ = await this.getHtml(url) - this.filterObj[type_id] = await this.getFilter($) - } - } - } - - async parseVodShortListFromDoc($) { - let items = $('.module-item'); - let vod_list = []; - for (const item of items) { - let vodShort = new VodShort() - let oneA = $(item).find('.module-item-cover .module-item-pic a').first(); - vodShort.vod_id = oneA.attr('href'); - vodShort.vod_name = oneA.attr('title'); - vodShort.vod_pic = $(item).find('.module-item-cover .module-item-pic img').first().attr('data-src'); - if (vodShort.vod_pic.indexOf("img.php?url=") > 0) { - vodShort.vod_pic = vodShort.vod_pic.split("img.php?url=")[1] - } - vodShort.vod_remarks = $(item).find('.module-item-text').first().text(); - vod_list.push(vodShort) - } - return vod_list - } - - async parseVodShortListFromJson(obj) { - let vod_list = [] - for (const result of obj["Data"]["result"]){ - let vodShort = new VodShort() - vodShort.vod_id = result["vod_url"].replaceAll(this.siteUrl,"") - vodShort.vod_pic = result["vod_pic"] - vodShort.vod_name = result["vod_name"] - vod_list.push(vodShort) - } - return vod_list - } - - async parseVodDetailFromDoc($) { - let html = $.html() - let vodDetail = new VodDetail() - let vodDetailElement = $("[class=\"box view-heading\"]") - vodDetail.vod_name = $($(vodDetailElement).find("[class=\"page-title\"]")).text() - let typeElements = $($(vodDetailElement).find("[class=\"tag-link\"]").find("a")) - vodDetail.vod_area = $($(vodDetailElement).find("[class=\"tag-link\"]").slice(-1)[0]).text() - let type_list = [] - for (const typeElement of typeElements) { - type_list.push($(typeElement).text()) - } - vodDetail.type_name = type_list.join("/") - let itemElements = $(vodDetailElement).find("[class=\"video-info-items\"]") - vodDetail.vod_director = $($(itemElements[0]).find("a")).text() - let actor_list = [] - for (const actorElement of $(itemElements[1]).find("a")) { - actor_list.push($(actorElement).text()) - } - vodDetail.vod_pic = $($(vodDetailElement).find("[class=\"module-item-pic\"]")).find("img")[0].attribs["data-src"] - vodDetail.vod_actor = actor_list.join("/") - vodDetail.vod_year = $($(itemElements[2]).find("[class=\"video-info-item\"]")).text() - vodDetail.vod_remarks = $($(itemElements[3]).find("[class=\"video-info-item\"]")).text() - vodDetail.vod_content = $($(itemElements[5]).find("[class=\"video-info-item video-info-content vod_content\"]")).text().replaceAll("\n", "\t").replaceAll("\t收起", "") - let playerformatElements = $("[class=\"module-tab-item tab-item\"]") - let playUrlElements = $("[class=\"scroll-content\"]") - let vod_play_from_list = [] - let vod_play_list = [] - for (let i = 0; i < playerformatElements.length; i++) { - let playFormatElement = playerformatElements[i] - let format_name = playFormatElement.attribs["data-dropdown-value"] - if (format_name.indexOf("夸克") === -1) { - vod_play_from_list.push(format_name) - let vodItems = [] - for (const playUrlElement of $(playUrlElements[i]).find("a")) { - let episodeName = $(playUrlElement).text() - let episodeUrl = playUrlElement.attribs.href - vodItems.push(episodeName + "$" + episodeUrl) - } - vod_play_list.push(vodItems.join("#")) - - } - } - vodDetail.vod_play_from = vod_play_from_list.join("$$$") - vodDetail.vod_play_url = vod_play_list.join("$$$") - return vodDetail - } - - async setHomeVod() { - let $ = await this.getHtml() - this.homeVodList = await this.parseVodShortListFromDoc($) - } - - async setCategory(tid, pg, filter, extend) { - let urlParams = [tid.toString(), "", "", "", "", "", "", "", pg.toString(), "", "", ""] - let type_key_list = [3, 11, 1, 2] - if (extend["全部剧情"] !== undefined && extend["全部剧情"] !== "0") { - urlParams[type_key_list[0]] = extend["全部剧情"] - } - if (extend["全部时间"] !== undefined && extend["全部时间"] !== "0") { - urlParams[type_key_list[1]] = extend["全部时间"] - } - if (extend["全部地区"] !== undefined && extend["全部地区"] !== "0") { - urlParams[type_key_list[2]] = extend["全部地区"] - } - if (extend["时间排序"] !== undefined && extend["时间排序"] !== "0") { - urlParams[type_key_list[3]] = extend["时间排序"] - } - let reqUrl = this.siteUrl + '/index.php/vodshow/' + urlParams.join("-") + '.html'; - let $ = await this.getHtml(reqUrl) - this.vodList = await this.parseVodShortListFromDoc($) - } - - async setDetail(id) { - let $ = await this.getHtml(this.siteUrl + id) - this.vodDetail = await this.parseVodDetailFromDoc($) - } - - uic(url,uid){ - let ut = Crypto.enc.Utf8.parse('2890'+uid+'tB959C') - let mm = Crypto.enc.Utf8.parse("2F131BE91247866E") - let decrypted = Crypto.AES.decrypt(url, ut, {iv: mm, mode: Crypto.mode.CBC, padding: Crypto.pad.Pkcs7}); - return Crypto.enc.Utf8.stringify(decrypted); -} - - async setPlay(flag, id, flags) { - let $ = await this.getHtml(this.siteUrl + id) - let playUrl = $("[id=\"bfurl\"]")[0].attribs.href - if (playUrl.indexOf("http") > -1){ - this.playUrl = playUrl - }else{ - //需要解析URL,支持弹幕 - let newUrl = "https://jiexi.xn--1lq90i13mxk5bolhm8k.xn--fiqs8s/player/ec.php?code=ak&if=1&url=" + playUrl - let play$ = await this.getHtml(newUrl) - let playHtml = play$.html() - let playConfig = JSON.parse(Utils.getStrByRegex(/let ConFig = (.*?),box = /,playHtml)) - this.playUrl = this.uic(playConfig["url"],playConfig["config"]["uid"]) - } - } - - async setSearch(wd, quick) { - let url = `http://123.207.150.253/zxapi/public/?service=App.F.Fetch&req_p=${wd}&type=6080` - let content = await this.fetch(url,null,this.getHeader()) - this.vodList = await this.parseVodShortListFromJson(JSON.parse(content)) - } - -} - -let spider = new NewVisionSpider() - -async function init(cfg) { - await spider.init(cfg) -} - -async function home(filter) { - return await spider.home(filter) -} - -async function homeVod() { - return await spider.homeVod() -} - -async function category(tid, pg, filter, extend) { - return await spider.category(tid, pg, filter, extend) -} - -async function detail(id) { - return await spider.detail(id) -} - -async function play(flag, id, flags) { - return await spider.play(flag, id, flags) -} - -async function search(wd, quick) { - return await spider.search(wd, quick) -} - -async function proxy(segments, headers) { - return await spider.proxy(segments, headers) -} - -export function __jsEvalReturn() { - return { - init: init, - home: home, - homeVod: homeVod, - category: category, - detail: detail, - play: play, - search: search, - proxy: proxy - }; -} -export {spider} \ No newline at end of file