diff --git a/json/js/newvision.js b/json/js/newvision.js index 2558d9ef..9eadd24a 100644 --- a/json/js/newvision.js +++ b/json/js/newvision.js @@ -1,261 +1,130 @@ -/* -* @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 +//bbAsgBdGh0dHBzOi8vYW5kcm9pZGNhdHZvZHNwaWRlci5wYWdlcy5kZXYvanNvbi9qcy9uZXd2aXNp +b24uanMaLi4vbGliL3ZvZC5qcx4uLi9saWIvdXRpbHMuanMWLi9zcGlkZXIuanMaLi4vbGliL2Nh +dC5qcxxfX2pzRXZhbFJldHVybgxzcGlkZXISVm9kRGV0YWlsEFZvZFNob3J0DFNwaWRlcgxDcnlw +dG8eTmV3VmlzaW9uU3BpZGVyClV0aWxzCGluaXQIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFp +bAhwbGF5DHNlYXJjaBRnZXRBcHBOYW1lDmdldE5hbWUSZ2V0SlNOYW1lDmdldFR5cGUUc2V0Q2xh +c3NlcxJnZXRGaWx0ZXIYc2V0RmlsdGVyT2JqMHBhcnNlVm9kU2hvcnRMaXN0RnJvbURvYzJwYXJz +ZVZvZFNob3J0TGlzdEZyb21Kc29uKnBhcnNlVm9kRGV0YWlsRnJvbURvYxRzZXRIb21lVm9kFnNl +dENhdGVnb3J5EnNldERldGFpbAZ1aWMOc2V0UGxheRJzZXRTZWFyY2guaHR0cHM6Ly93d3cuNjA4 +MHl5My5jb20Oc2l0ZVVybAuwZcaJyYlxX2KWFz3YPNwDJbBlxonJiXFfYpYDJT3YPNwSbmV3dmlz +aW9uAiQWbmF2RWxlbWVudHMUbmF2RWxlbWVudA50eXBlX2lkEnR5cGVfbmFtZQ5nZXRIdG1sMFtj +bGFzcz0ibmF2LW1lbnUtaXRlbXMiXQhmaW5kAmEaZ2V0U3RyQnlSZWdleA5hdHRyaWJzCGhyZWYK +dGl0bGUSaXNOdW1lcmljDmNsYXNzZXMIcHVzaBRnZXRUeXBlRGljEGVsZW1lbnRzFmV4dGVuZF9s +aXN0GnR5cGVfa2V5X2xpc3QCaRRleHRlbmRfZGljBmVsZRh0eXBlX2lkX2xpc3QwW2NsYXNzPSdz +Y3JvbGwtY29udGVudCddCnNsaWNlCHRleHQGa2V5BWhR6JACbgJ2Ai0kZGVjb2RlVVJJQ29tcG9u +ZW50EHR5cGVfZGljBnVybAkAZ9GP9GawZRIvdm9kc2hvdy8gLS0tLS0tLS0tLS0uaHRtbBJmaWx0 +ZXJPYmoKaXRlbXMQdm9kX2xpc3QIaXRlbRB2b2RTaG9ydAhvbmVBGC5tb2R1bGUtaXRlbUoubW9k +dWxlLWl0ZW0tY292ZXIgLm1vZHVsZS1pdGVtLXBpYyBhCmZpcnN0CGF0dHIMdm9kX2lkEHZvZF9u +YW1lTi5tb2R1bGUtaXRlbS1jb3ZlciAubW9kdWxlLWl0ZW0tcGljIGltZxBkYXRhLXNyYw52b2Rf +cGljDmluZGV4T2YYaW1nLnBocD91cmw9Ii5tb2R1bGUtaXRlbS10ZXh0FnZvZF9yZW1hcmtzBm9i +agxyZXN1bHQIRGF0YQ52b2RfdXJsFHJlcGxhY2VBbGwIaHRtbBJ2b2REZXRhaWwgdm9kRGV0YWls +RWxlbWVudBh0eXBlRWxlbWVudHMSdHlwZV9saXN0FnR5cGVFbGVtZW50GGl0ZW1FbGVtZW50cxRh +Y3Rvcl9saXN0GGFjdG9yRWxlbWVudChwbGF5ZXJmb3JtYXRFbGVtZW50cx5wbGF5VXJsRWxlbWVu +dHMkdm9kX3BsYXlfZnJvbV9saXN0GnZvZF9wbGF5X2xpc3QicGxheUZvcm1hdEVsZW1lbnQWZm9y +bWF0X25hbWUQdm9kSXRlbXMccGxheVVybEVsZW1lbnQWZXBpc29kZU5hbWUUZXBpc29kZVVybDRb +Y2xhc3M9ImJveCB2aWV3LWhlYWRpbmciXShbY2xhc3M9InBhZ2UtdGl0bGUiXSRbY2xhc3M9InRh +Zy1saW5rIl0Qdm9kX2FyZWECLzRbY2xhc3M9InZpZGVvLWluZm8taXRlbXMiXRh2b2RfZGlyZWN0 +b3IyW2NsYXNzPSJtb2R1bGUtaXRlbS1waWMiXQZpbWcSdm9kX2FjdG9yMltjbGFzcz0idmlkZW8t +aW5mby1pdGVtIl0Qdm9kX3llYXJwW2NsYXNzPSJ2aWRlby1pbmZvLWl0ZW0gdmlkZW8taW5mby1j +b250ZW50IHZvZF9jb250ZW50Il0CCgIJBwkANmV3jRZ2b2RfY29udGVudERbY2xhc3M9Im1vZHVs +ZS10YWItaXRlbSB0YWItaXRlbSJdMFtjbGFzcz0ic2Nyb2xsLWNvbnRlbnQiXSZkYXRhLWRyb3Bk +b3duLXZhbHVlBThZS1ECIwYkJCQadm9kX3BsYXlfZnJvbRh2b2RfcGxheV91cmwWaG9tZVZvZExp +c3QGdGlkBHBnDGZpbHRlcgxleHRlbmQSdXJsUGFyYW1zDHJlcVVybAloUeiQZ1LFYAloUeiQ9mX0 +lQloUeiQMFc6Uwn2ZfSVkmOPXiYvaW5kZXgucGhwL3ZvZHNob3cvCi5odG1sDnZvZExpc3QEaWQG +dWlkBHV0BG1tEmRlY3J5cHRlZAZlbmMIVXRmOApwYXJzZQx0Qjk1OUMgMkYxMzFCRTkxMjQ3ODY2 +RQZBRVMOZGVjcnlwdARpdghtb2RlBkNCQwZwYWQKUGtjczcOcGFkZGluZxJzdHJpbmdpZnkIZmxh +Zw5wbGF5VXJsDG5ld1VybApwbGF5JBBwbGF5SHRtbBRwbGF5Q29uZmlnGFtpZD0iYmZ1cmwiXQho +dHRwoAFodHRwczovL2ppZXhpLnhuLS0xbHE5MGkxM214azVib2xobThrLnhuLS1maXFzOHMvcGxh +eWVyL2VjLnBocD9jb2RlPWFrJmlmPTEmdXJsPQxjb25maWcEd2QKcXVpY2sOY29udGVudH5odHRw +Oi8vMTIzLjIwNy4xNTAuMjUzL3p4YXBpL3B1YmxpYy8/c2VydmljZT1BcHAuRi5GZXRjaCZyZXFf +cD0UJnR5cGU9NjA4MApmZXRjaBJnZXRIZWFkZXIGY2ZnEHNlZ21lbnRzDmhlYWRlcnMPwgMExAPG +A8gDygMCAA/MAwAGzgMABQDQAwAB0gMAAvoBAQPUAwIE1gMDDgAGAaABAAIAAxAa1wEC2AMCADDs +AQMBcNADAAzSAwEM2gMCDdQDAwzWAwQM2AMACc4DAQncAwIB3gMDAeADBAHiAwUB5AMGAeYDBwHo +AwgBhgIJAcwDCgEI6i/AEV8HAMASXwgAwBNfCQDAFF8KAMAVXwsAwBZfDADAF18NAMAYXw4AwBlf +DwApYQAAZQMAYQEAvwBW7AAAAAHAAVT1AAAAAMACVPYAAAAAwANU9wAAAADABFT4AAAAAMAFVPkA +AAAAwAZU+gAAAADAB1T7AAAAAMAIVPwAAAAAwAlU/QAAAADAClT+AAAAAMALVP8AAAAAwAxUAAEA +AADADVQBAQAAAMAOVAIBAAAAwA9UAwEAAADAEFQEAQAAAAbKDs1oAQBfBQBlBQARIQAAXwYAKcID +ATcBADEeABEQAAgILQAICAAIFgAIKAAIFgAIJAAIGAAIXgAICgAIKAAICgAIDgAIHgAIDCw2AApe +DsYHAQAAAwADAQA0A+QBAAEA4gEAAQAQAAEg7AEBDQwCyQwDymECACvFNMYhAAARZAIAZQAAEeoI +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 +KysrLA==