diff --git a/json/js/kankan70.js b/json/js/kankan70.js index 953fd23e..2b5c2b94 100644 --- a/json/js/kankan70.js +++ b/json/js/kankan70.js @@ -1,308 +1,138 @@ -/* -* @File : kankan70.js -* @Author : jade -* @Date : 2023/12/29 15:33 -* @Email : jadehh@1ive.com -* @Software : Samples -* @Desc : -*/ -import * as Utils from "../lib/utils.js"; -import {_, load} from "../lib/cat.js"; -import {VodDetail, VodShort} from "../lib/vod.js"; -import {Spider} from "./spider.js"; - -function get_qp_name44(qp_type) { - if (qp_type === 'zd') return '最大'; - if (qp_type === 'yj') return '永久'; - if (qp_type === 'hn') return '牛牛'; - if (qp_type === 'gs') return '光波'; - if (qp_type === 'sn') return '新朗'; - if (qp_type === 'wl') return '涡轮'; - if (qp_type === 'lz') return '良子'; - if (qp_type === 'fs') return 'F速'; - if (qp_type === 'ff') return '飞飞'; - if (qp_type === 'bd') return '百度'; - if (qp_type === 'uk') return '酷U'; - if (qp_type === 'wj') return '无天'; - if (qp_type === 'bj') return '八戒'; - if (qp_type === 'tk') return '天空'; - if (qp_type === 'ss') return '速速'; - if (qp_type === 'kb') return '酷播'; - if (qp_type === 'sd') return '闪电'; - if (qp_type === 'xk') return '看看'; - if (qp_type === 'tp') return '淘淘'; - if (qp_type === 'jy') return '精英'; - - return qp_type; -} - - -class Kankan70Spider extends Spider { - constructor() { - super(); - this.siteUrl = "http://cqdb6.com"; - } - - getName() { - return "📺┃70看看┃📺" - } - - getAppName() { - return "70看看" - } - - getJSName() { - return "kankan70" - } - - getType() { - return 3 - } - - paraseUrlObject(js_str) { - let content_list = js_str.split(";") - let urlObject = {} - let js_name = "" - let play_id = 0 - let pldy_id = 0 - let js_key = "" - for (let i = 0; i < content_list.length; i++) { - let content = content_list[i] - if (content.indexOf("var lianzaijs") > -1) { - js_name = content.split("=")[0].split(" ")[1] - js_key = js_name.split("_")[1] - } else if (content.indexOf("pl_id=") > -1) { - play_id = content.split("=")[1] - urlObject[js_name] = {"play_id": play_id, "list": [], "pl_dy": pldy_id} - } else if (content.indexOf("var pl_dy") > -1) { - pldy_id = content.split("=")[1] - } - if (content.indexOf(`playarr_${js_key}[`) > -1) { - let play_url = content.split("=\"")[1].split(",")[0] - urlObject[js_name]["list"].push(play_url) - } - } - let play_url_list = [], play_format_list = []; - for (const key of Object.keys(urlObject)) { - if (key.indexOf("_") > -1) { - let play_format_name = get_qp_name44(key.split("_")[1]) - play_format_list.push(play_format_name) - let vodItems = [] - let index = 0 - for (const play_url of urlObject[key]["list"]) { - index = index + 1 - vodItems.push("第" + index.toString() + "集" + "$" + play_url) - } - play_url_list.push(vodItems.join("#")) - } - } - return {"play_format": play_format_list.join("$$$"), "play_url": play_url_list.join("$$$")} - } - - async parseVodShortListFromDoc($) { - let vod_list = [] - let vod_elements = $("a.li-hv") - for (const vod_element of vod_elements) { - let vodShort = new VodShort() - vodShort.vod_id = "/" + vod_element.attribs["href"] - vodShort.vod_name = vod_element.attribs["title"] - vodShort.vod_pic = $(vod_element).find("img")[0].attribs["data-original"] - let remarkEle = $(vod_element).find("p.bz")[0] - if (remarkEle.length > 0) { - vodShort.vod_remarks = remarkEle.children[0].data - } - vod_list.push(vodShort) - } - return vod_list - } - - async parseVodDetailFromDoc($) { - let vodDetail = new VodDetail() - let infoElement = $("[class=info]") - let dtElement = $(infoElement).find("dt.name")[0] - vodDetail.vod_name = dtElement.children[0].data - vodDetail.vod_remarks = dtElement.children[1].children[0].data - let ddString = $(infoElement).find("dd").text() - vodDetail.vod_area = Utils.getStrByRegex(/地区:(.*?) /, ddString) - vodDetail.vod_year = Utils.getStrByRegex(/年代:(.*?)\n/, ddString) - vodDetail.type_name = Utils.getStrByRegex(/类型:(.*?)\n/, ddString) - vodDetail.vod_content = $(infoElement).find("[class=des2]").text().replaceAll("\n", "").replaceAll("剧情:", "") - vodDetail.vod_pic = $("img.lazy")[0].attribs["data-original"] - - return vodDetail - } - - async parseVodShortListFromJson(obj) { - let vod_list = [] - for (const vod_object of obj) { - let vodShort = new VodShort() - vodShort.vod_id = vod_object["url"] - vodShort.vod_pic = vod_object["thumb"] - vodShort.vod_remarks = vod_object["time"] - vodShort.vod_name = vod_object["title"] - vod_list.push(vodShort) - } - return vod_list - } - - async setClasses() { - let html = await this.fetch(this.siteUrl, null, this.getHeader()) - if (!_.isEmpty(html)) { - let $ = load(html) - let elements = $("[class=index-list-l]") - for (const element of elements) { - let typeElement = $($(element).find("[class=\"h1 clearfix\"]")[0]).find("a") - let type_id = typeElement[0].attribs["href"] - let type_name = $(typeElement[1]).text() - if (!_.isEmpty(type_name)) { - this.classes.push({"type_id": type_id, "type_name": type_name}) - } - } - } - } - - async getFilter(type_id) { - let url = this.siteUrl + type_id - let html = await this.fetch(url, null, this.getHeader()) - let extend_list = [] - if (!_.isEmpty(html)) { - let $ = load(html) - let elements = $("[class=\"sy scon clearfix\"]").find("dl") - let i = 0 - for (const element of elements) { - let type_name = $($(element).find("dt")).text().replace("按", "").replace(":", "") - let extend_dic = { - "key": (i + 1).toString(), "name": type_name, "value": [] - } - let type_elements = $(element).find("a") - let index = 0 - if (type_name === "剧情") { - index = 3 - } else if (type_name === "年代") { - index = 2 - } else if (type_name === "地区") { - index = 4 - } - for (const type_element of type_elements) { - let type_id_list = type_element.attribs["href"].split("/") - extend_dic["value"].push({"n": $(type_element).text(), "v": type_id_list[index]}) - } - extend_list.push(extend_dic) - i = i + 1 - } - } - return extend_list - } - - async setFilterObj() { - for (const class_dic of this.classes) { - let type_id = class_dic["type_id"] - if (type_id !== "最近更新") { - this.filterObj[type_id] = await this.getFilter(type_id) - } - } - } - - async setHomeVod() { - let html = await this.fetch(this.siteUrl, null, this.getHeader()) - if (!_.isEmpty(html)) { - let $ = load(html) - this.homeVodList = await this.parseVodShortListFromDoc($) - } - } - - async setCategory(tid, pg, filter, extend) { - let url = this.siteUrl + tid - let html = await this.fetch(url, null, this.getHeader()) - if (!_.isEmpty(html)) { - let class_name = tid.split("/")[1] - let id = tid.split("/")[2] - let api_str = Utils.getStrByRegex(/var _yu_gda_s="(.*?)";/, html) - let params = { - "action": class_name, - "page": parseInt(pg), - "year": extend["2"] ?? "0", - "area": extend["3"] ?? "all", - "class": extend["1"] ?? "0", - "dect": "", - "id": id - } - let cate_html = await this.fetch(api_str, params, this.getHeader()) - if (cate_html !== null) { - let $ = load(cate_html) - this.vodList = await this.parseVodShortListFromDoc($) - } - } - - } - - async setDetail(id) { - let detailUrl = this.siteUrl + id - let html = await this.fetch(detailUrl, null, this.getHeader()) - if (!_.isEmpty(html)) { - let $ = load(html) - this.vodDetail = await this.parseVodDetailFromDoc($) - let mather = /