于9.14更新
This commit is contained in:
@@ -0,0 +1,396 @@
|
|||||||
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
|
{
|
||||||
|
"spider": "./spider.jar",
|
||||||
|
"sites": [
|
||||||
|
{
|
||||||
|
"key": "次元城",
|
||||||
|
"name": "次元城",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Cycdm",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "http://app.95189371.cn/ciyuancheng.php/v6/",
|
||||||
|
"jar": "./jars/次元城.jar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "NyaFun",
|
||||||
|
"name": "NyaFun",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy.min.js",
|
||||||
|
"ext": "./js/NyaFun.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "AGE动漫",
|
||||||
|
"name": "AGE动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy.min.js",
|
||||||
|
"ext": "./js/AGE动漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_Dm84_3",
|
||||||
|
"name": "动漫巴士1",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/Dm84.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "58动漫网",
|
||||||
|
"name": "58┃动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"ext": "./js/58动漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "NT动漫",
|
||||||
|
"name": "NT┃动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"ext": "./js/NT动漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_Anime1",
|
||||||
|
"name": "动漫┃系列",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Anime1",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "妮可动漫",
|
||||||
|
"name": "妮可动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy.min.js",
|
||||||
|
"ext": "./js/妮可动漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_动漫岛",
|
||||||
|
"name": "动漫岛",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/动漫岛.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_路漫漫",
|
||||||
|
"name": "路漫漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/路漫漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_Ysj",
|
||||||
|
"name": "异界动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Ysj",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_Anime1",
|
||||||
|
"name": "日漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Anime1",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_Ying",
|
||||||
|
"name": "樱花动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Ying",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "动漫直链",
|
||||||
|
"name": "动漫┃直链",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XPath",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 0,
|
||||||
|
"ext": "./json/动漫直链.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "风车动漫",
|
||||||
|
"name": "风车动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy.min.js",
|
||||||
|
"ext": "./js/风车动漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "去看吧",
|
||||||
|
"name": "去看吧",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy.min.js",
|
||||||
|
"ext": "./js/去看吧.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_NyaFun",
|
||||||
|
"name": "动漫 | NyaFun[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/NyaFun.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_爱弹幕",
|
||||||
|
"name": "动漫 | 爱弹幕[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/爱弹幕.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "nt动漫",
|
||||||
|
"name": "拿铁动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/ntdm.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "妮可",
|
||||||
|
"name": "妮可动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/妮可动漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "anfuns",
|
||||||
|
"name": "ANF动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/anfuns.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "怡萱动漫",
|
||||||
|
"name": "怡萱动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/怡萱.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "去看吧",
|
||||||
|
"name": "去看动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/去看吧.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_奇米动漫",
|
||||||
|
"name": "动漫 | 奇米动漫[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/奇米动漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_曲奇动漫",
|
||||||
|
"name": "动漫 | 曲奇动漫[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/曲奇动漫.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "异世界",
|
||||||
|
"name": "异世界",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy.min.js",
|
||||||
|
"ext": "./js/异世界.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "维奇",
|
||||||
|
"name": "维奇动漫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/维奇.json"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parses": [
|
||||||
|
{
|
||||||
|
"name": "解析聚合",
|
||||||
|
"type": 3,
|
||||||
|
"url": "Demo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Json并发",
|
||||||
|
"type": 2,
|
||||||
|
"url": "Parallel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Json轮询",
|
||||||
|
"type": 2,
|
||||||
|
"url": "Sequence"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Web聚合",
|
||||||
|
"type": 3,
|
||||||
|
"url": "Web"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "1-看看",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://jx.m3u8.pw/?url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "2-虾米",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://jx.xmflv.com/?url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "3-麒麟",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://www.cygqw.com/jiexi/jiekou-2/?url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "4-parwix1",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://jx.bozrc.com:4433/player/?url=",
|
||||||
|
"ext": {
|
||||||
|
"flag": [
|
||||||
|
"qq",
|
||||||
|
"腾讯",
|
||||||
|
"qiyi",
|
||||||
|
"爱奇艺",
|
||||||
|
"奇艺",
|
||||||
|
"youku",
|
||||||
|
"优酷",
|
||||||
|
"mgtv",
|
||||||
|
"芒果",
|
||||||
|
"letv",
|
||||||
|
"乐视",
|
||||||
|
"pptv",
|
||||||
|
"PPTV",
|
||||||
|
"sohu",
|
||||||
|
"bilibili",
|
||||||
|
"哔哩哔哩",
|
||||||
|
"哔哩"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "5-OK解析",
|
||||||
|
"type": 0,
|
||||||
|
"url": "http://okjx.cc/?url=",
|
||||||
|
"parse": "1",
|
||||||
|
"ext": {
|
||||||
|
"flag": [
|
||||||
|
"qq",
|
||||||
|
"腾讯",
|
||||||
|
"qiyi",
|
||||||
|
"爱奇艺",
|
||||||
|
"奇艺",
|
||||||
|
"youku",
|
||||||
|
"优酷",
|
||||||
|
"mgtv",
|
||||||
|
"芒果",
|
||||||
|
"letv",
|
||||||
|
"乐视",
|
||||||
|
"pptv",
|
||||||
|
"PPTV",
|
||||||
|
"sohu",
|
||||||
|
"bilibili",
|
||||||
|
"哔哩哔哩",
|
||||||
|
"哔哩"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "6-yparse",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://jx.yparse.com/index.php?url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "7-jsonplayer",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://jx.jsonplayer.com/player/?url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "8-aidou",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://jx.aidouer.net/?url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "星辰云解析",
|
||||||
|
"type": 1,
|
||||||
|
"url": "https://json.xn--9kq078cdn3a.cc/api/?key=GMp1H9mKRKVriBulRT&url=",
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "Mozilla/5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "刚刚走过",
|
||||||
|
"type": 1,
|
||||||
|
"url": "http://jx.fuqizhishi.com:63/API.php?appkey=feimao&url=",
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "Mozilla/5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tg255免费",
|
||||||
|
"type": 1,
|
||||||
|
"url": "https://jx.255jx.tk/api/?key=YYac1YA1lkwwf3an4G&url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "风起兖州",
|
||||||
|
"type": 0,
|
||||||
|
"url": "http://jx.gbxy.net.cn/?url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "江湖1080",
|
||||||
|
"type": 1,
|
||||||
|
"url": "http://211.99.99.236:4567/jhjson/ceshi.php?url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "keyu",
|
||||||
|
"type": 1,
|
||||||
|
"url": "http://newjiexi.gotka.top/keyu3.php?url=",
|
||||||
|
"ext": {
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "okhttp/4.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "荣兴",
|
||||||
|
"type": 1,
|
||||||
|
"url": "http://jx.dygfsdy.com/home/api?type=ys&uid=129415&key=acdmoruwxCDEKPZ679&url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "m3u8(720)",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://jx.m3u8.tv/jiexi/?url="
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"flags": [
|
||||||
|
"youku",
|
||||||
|
"qq",
|
||||||
|
"iqiyi",
|
||||||
|
"qiyi",
|
||||||
|
"letv",
|
||||||
|
"sohu",
|
||||||
|
"tudou",
|
||||||
|
"pptv",
|
||||||
|
"mgtv",
|
||||||
|
"wasu"
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
+1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6191 @@
|
|||||||
|
;(function (root, factory) {
|
||||||
|
if (typeof exports === "object") {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = exports = factory();
|
||||||
|
}
|
||||||
|
else if (typeof define === "function" && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define([], factory);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Global (browser)
|
||||||
|
globalThis.CryptoJS = factory();
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
|
||||||
|
/*globals window, global, require*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CryptoJS core components.
|
||||||
|
*/
|
||||||
|
var CryptoJS = CryptoJS || (function (Math, undefined) {
|
||||||
|
|
||||||
|
var crypto;
|
||||||
|
|
||||||
|
// Native crypto from window (Browser)
|
||||||
|
if (typeof window !== 'undefined' && window.crypto) {
|
||||||
|
crypto = window.crypto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native crypto in web worker (Browser)
|
||||||
|
if (typeof self !== 'undefined' && self.crypto) {
|
||||||
|
crypto = self.crypto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native crypto from worker
|
||||||
|
if (typeof globalThis !== 'undefined' && globalThis.crypto) {
|
||||||
|
crypto = globalThis.crypto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native (experimental IE 11) crypto from window (Browser)
|
||||||
|
if (!crypto && typeof window !== 'undefined' && window.msCrypto) {
|
||||||
|
crypto = window.msCrypto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native crypto from global (NodeJS)
|
||||||
|
if (!crypto && typeof global !== 'undefined' && global.crypto) {
|
||||||
|
crypto = global.crypto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native crypto import via require (NodeJS)
|
||||||
|
if (!crypto && typeof require === 'function') {
|
||||||
|
try {
|
||||||
|
crypto = require('crypto');
|
||||||
|
} catch (err) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Cryptographically secure pseudorandom number generator
|
||||||
|
*
|
||||||
|
* As Math.random() is cryptographically not safe to use
|
||||||
|
*/
|
||||||
|
var cryptoSecureRandomInt = function () {
|
||||||
|
if (crypto) {
|
||||||
|
// Use getRandomValues method (Browser)
|
||||||
|
if (typeof crypto.getRandomValues === 'function') {
|
||||||
|
try {
|
||||||
|
return crypto.getRandomValues(new Uint32Array(1))[0];
|
||||||
|
} catch (err) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use randomBytes method (NodeJS)
|
||||||
|
if (typeof crypto.randomBytes === 'function') {
|
||||||
|
try {
|
||||||
|
return crypto.randomBytes(4).readInt32LE();
|
||||||
|
} catch (err) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error('Native crypto module could not be used to get secure random number.');
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Local polyfill of Object.create
|
||||||
|
|
||||||
|
*/
|
||||||
|
var create = Object.create || (function () {
|
||||||
|
function F() {}
|
||||||
|
|
||||||
|
return function (obj) {
|
||||||
|
var subtype;
|
||||||
|
|
||||||
|
F.prototype = obj;
|
||||||
|
|
||||||
|
subtype = new F();
|
||||||
|
|
||||||
|
F.prototype = null;
|
||||||
|
|
||||||
|
return subtype;
|
||||||
|
};
|
||||||
|
}());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CryptoJS namespace.
|
||||||
|
*/
|
||||||
|
var C = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Library namespace.
|
||||||
|
*/
|
||||||
|
var C_lib = C.lib = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base object for prototypal inheritance.
|
||||||
|
*/
|
||||||
|
var Base = C_lib.Base = (function () {
|
||||||
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
/**
|
||||||
|
* Creates a new object that inherits from this object.
|
||||||
|
*
|
||||||
|
* @param {Object} overrides Properties to copy into the new object.
|
||||||
|
*
|
||||||
|
* @return {Object} The new object.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var MyType = CryptoJS.lib.Base.extend({
|
||||||
|
* field: 'value',
|
||||||
|
*
|
||||||
|
* method: function () {
|
||||||
|
* }
|
||||||
|
* });
|
||||||
|
*/
|
||||||
|
extend: function (overrides) {
|
||||||
|
// Spawn
|
||||||
|
var subtype = create(this);
|
||||||
|
|
||||||
|
// Augment
|
||||||
|
if (overrides) {
|
||||||
|
subtype.mixIn(overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create default initializer
|
||||||
|
if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
|
||||||
|
subtype.init = function () {
|
||||||
|
subtype.$super.init.apply(this, arguments);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initializer's prototype is the subtype object
|
||||||
|
subtype.init.prototype = subtype;
|
||||||
|
|
||||||
|
// Reference supertype
|
||||||
|
subtype.$super = this;
|
||||||
|
|
||||||
|
return subtype;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extends this object and runs the init method.
|
||||||
|
* Arguments to create() will be passed to init().
|
||||||
|
*
|
||||||
|
* @return {Object} The new object.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var instance = MyType.create();
|
||||||
|
*/
|
||||||
|
create: function () {
|
||||||
|
var instance = this.extend();
|
||||||
|
instance.init.apply(instance, arguments);
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a newly created object.
|
||||||
|
* Override this method to add some logic when your objects are created.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var MyType = CryptoJS.lib.Base.extend({
|
||||||
|
* init: function () {
|
||||||
|
* // ...
|
||||||
|
* }
|
||||||
|
* });
|
||||||
|
*/
|
||||||
|
init: function () {
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copies properties into this object.
|
||||||
|
*
|
||||||
|
* @param {Object} properties The properties to mix in.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* MyType.mixIn({
|
||||||
|
* field: 'value'
|
||||||
|
* });
|
||||||
|
*/
|
||||||
|
mixIn: function (properties) {
|
||||||
|
for (var propertyName in properties) {
|
||||||
|
if (properties.hasOwnProperty(propertyName)) {
|
||||||
|
this[propertyName] = properties[propertyName];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// IE won't copy toString using the loop above
|
||||||
|
if (properties.hasOwnProperty('toString')) {
|
||||||
|
this.toString = properties.toString;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a copy of this object.
|
||||||
|
*
|
||||||
|
* @return {Object} The clone.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var clone = instance.clone();
|
||||||
|
*/
|
||||||
|
clone: function () {
|
||||||
|
return this.init.prototype.extend(this);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An array of 32-bit words.
|
||||||
|
*
|
||||||
|
* @property {Array} words The array of 32-bit words.
|
||||||
|
* @property {number} sigBytes The number of significant bytes in this word array.
|
||||||
|
*/
|
||||||
|
var WordArray = C_lib.WordArray = Base.extend({
|
||||||
|
/**
|
||||||
|
* Initializes a newly created word array.
|
||||||
|
*
|
||||||
|
* @param {Array} words (Optional) An array of 32-bit words.
|
||||||
|
* @param {number} sigBytes (Optional) The number of significant bytes in the words.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.lib.WordArray.create();
|
||||||
|
* var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
|
||||||
|
* var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
|
||||||
|
*/
|
||||||
|
init: function (words, sigBytes) {
|
||||||
|
words = this.words = words || [];
|
||||||
|
|
||||||
|
if (sigBytes != undefined) {
|
||||||
|
this.sigBytes = sigBytes;
|
||||||
|
} else {
|
||||||
|
this.sigBytes = words.length * 4;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this word array to a string.
|
||||||
|
*
|
||||||
|
* @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
|
||||||
|
*
|
||||||
|
* @return {string} The stringified word array.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var string = wordArray + '';
|
||||||
|
* var string = wordArray.toString();
|
||||||
|
* var string = wordArray.toString(CryptoJS.enc.Utf8);
|
||||||
|
*/
|
||||||
|
toString: function (encoder) {
|
||||||
|
return (encoder || Hex).stringify(this);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Concatenates a word array to this word array.
|
||||||
|
*
|
||||||
|
* @param {WordArray} wordArray The word array to append.
|
||||||
|
*
|
||||||
|
* @return {WordArray} This word array.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* wordArray1.concat(wordArray2);
|
||||||
|
*/
|
||||||
|
concat: function (wordArray) {
|
||||||
|
// Shortcuts
|
||||||
|
var thisWords = this.words;
|
||||||
|
var thatWords = wordArray.words;
|
||||||
|
var thisSigBytes = this.sigBytes;
|
||||||
|
var thatSigBytes = wordArray.sigBytes;
|
||||||
|
|
||||||
|
// Clamp excess bits
|
||||||
|
this.clamp();
|
||||||
|
|
||||||
|
// Concat
|
||||||
|
if (thisSigBytes % 4) {
|
||||||
|
// Copy one byte at a time
|
||||||
|
for (var i = 0; i < thatSigBytes; i++) {
|
||||||
|
var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
|
||||||
|
thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Copy one word at a time
|
||||||
|
for (var j = 0; j < thatSigBytes; j += 4) {
|
||||||
|
thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.sigBytes += thatSigBytes;
|
||||||
|
|
||||||
|
// Chainable
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes insignificant bits.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* wordArray.clamp();
|
||||||
|
*/
|
||||||
|
clamp: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var words = this.words;
|
||||||
|
var sigBytes = this.sigBytes;
|
||||||
|
|
||||||
|
// Clamp
|
||||||
|
words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);
|
||||||
|
words.length = Math.ceil(sigBytes / 4);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a copy of this word array.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The clone.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var clone = wordArray.clone();
|
||||||
|
*/
|
||||||
|
clone: function () {
|
||||||
|
var clone = Base.clone.call(this);
|
||||||
|
clone.words = this.words.slice(0);
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a word array filled with random bytes.
|
||||||
|
*
|
||||||
|
* @param {number} nBytes The number of random bytes to generate.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The random word array.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.lib.WordArray.random(16);
|
||||||
|
*/
|
||||||
|
random: function (nBytes) {
|
||||||
|
var words = [];
|
||||||
|
|
||||||
|
for (var i = 0; i < nBytes; i += 4) {
|
||||||
|
words.push(cryptoSecureRandomInt());
|
||||||
|
}
|
||||||
|
|
||||||
|
return new WordArray.init(words, nBytes);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encoder namespace.
|
||||||
|
*/
|
||||||
|
var C_enc = C.enc = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hex encoding strategy.
|
||||||
|
*/
|
||||||
|
var Hex = C_enc.Hex = {
|
||||||
|
/**
|
||||||
|
* Converts a word array to a hex string.
|
||||||
|
*
|
||||||
|
* @param {WordArray} wordArray The word array.
|
||||||
|
*
|
||||||
|
* @return {string} The hex string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hexString = CryptoJS.enc.Hex.stringify(wordArray);
|
||||||
|
*/
|
||||||
|
stringify: function (wordArray) {
|
||||||
|
// Shortcuts
|
||||||
|
var words = wordArray.words;
|
||||||
|
var sigBytes = wordArray.sigBytes;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var hexChars = [];
|
||||||
|
for (var i = 0; i < sigBytes; i++) {
|
||||||
|
var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
|
||||||
|
hexChars.push((bite >>> 4).toString(16));
|
||||||
|
hexChars.push((bite & 0x0f).toString(16));
|
||||||
|
}
|
||||||
|
|
||||||
|
return hexChars.join('');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a hex string to a word array.
|
||||||
|
*
|
||||||
|
* @param {string} hexStr The hex string.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The word array.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.enc.Hex.parse(hexString);
|
||||||
|
*/
|
||||||
|
parse: function (hexStr) {
|
||||||
|
// Shortcut
|
||||||
|
var hexStrLength = hexStr.length;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var words = [];
|
||||||
|
for (var i = 0; i < hexStrLength; i += 2) {
|
||||||
|
words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new WordArray.init(words, hexStrLength / 2);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Latin1 encoding strategy.
|
||||||
|
*/
|
||||||
|
var Latin1 = C_enc.Latin1 = {
|
||||||
|
/**
|
||||||
|
* Converts a word array to a Latin1 string.
|
||||||
|
*
|
||||||
|
* @param {WordArray} wordArray The word array.
|
||||||
|
*
|
||||||
|
* @return {string} The Latin1 string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
|
||||||
|
*/
|
||||||
|
stringify: function (wordArray) {
|
||||||
|
// Shortcuts
|
||||||
|
var words = wordArray.words;
|
||||||
|
var sigBytes = wordArray.sigBytes;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var latin1Chars = [];
|
||||||
|
for (var i = 0; i < sigBytes; i++) {
|
||||||
|
var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
|
||||||
|
latin1Chars.push(String.fromCharCode(bite));
|
||||||
|
}
|
||||||
|
|
||||||
|
return latin1Chars.join('');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a Latin1 string to a word array.
|
||||||
|
*
|
||||||
|
* @param {string} latin1Str The Latin1 string.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The word array.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
|
||||||
|
*/
|
||||||
|
parse: function (latin1Str) {
|
||||||
|
// Shortcut
|
||||||
|
var latin1StrLength = latin1Str.length;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var words = [];
|
||||||
|
for (var i = 0; i < latin1StrLength; i++) {
|
||||||
|
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new WordArray.init(words, latin1StrLength);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UTF-8 encoding strategy.
|
||||||
|
*/
|
||||||
|
var Utf8 = C_enc.Utf8 = {
|
||||||
|
/**
|
||||||
|
* Converts a word array to a UTF-8 string.
|
||||||
|
*
|
||||||
|
* @param {WordArray} wordArray The word array.
|
||||||
|
*
|
||||||
|
* @return {string} The UTF-8 string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
|
||||||
|
*/
|
||||||
|
stringify: function (wordArray) {
|
||||||
|
try {
|
||||||
|
return decodeURIComponent(escape(Latin1.stringify(wordArray)));
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error('Malformed UTF-8 data');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a UTF-8 string to a word array.
|
||||||
|
*
|
||||||
|
* @param {string} utf8Str The UTF-8 string.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The word array.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
|
||||||
|
*/
|
||||||
|
parse: function (utf8Str) {
|
||||||
|
return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract buffered block algorithm template.
|
||||||
|
*
|
||||||
|
* The property blockSize must be implemented in a concrete subtype.
|
||||||
|
*
|
||||||
|
* @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0
|
||||||
|
*/
|
||||||
|
var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
|
||||||
|
/**
|
||||||
|
* Resets this block algorithm's data buffer to its initial state.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* bufferedBlockAlgorithm.reset();
|
||||||
|
*/
|
||||||
|
reset: function () {
|
||||||
|
// Initial values
|
||||||
|
this._data = new WordArray.init();
|
||||||
|
this._nDataBytes = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds new data to this block algorithm's buffer.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* bufferedBlockAlgorithm._append('data');
|
||||||
|
* bufferedBlockAlgorithm._append(wordArray);
|
||||||
|
*/
|
||||||
|
_append: function (data) {
|
||||||
|
// Convert string to WordArray, else assume WordArray already
|
||||||
|
if (typeof data == 'string') {
|
||||||
|
data = Utf8.parse(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Append
|
||||||
|
this._data.concat(data);
|
||||||
|
this._nDataBytes += data.sigBytes;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes available data blocks.
|
||||||
|
*
|
||||||
|
* This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
|
||||||
|
*
|
||||||
|
* @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The processed data.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var processedData = bufferedBlockAlgorithm._process();
|
||||||
|
* var processedData = bufferedBlockAlgorithm._process(!!'flush');
|
||||||
|
*/
|
||||||
|
_process: function (doFlush) {
|
||||||
|
var processedWords;
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var data = this._data;
|
||||||
|
var dataWords = data.words;
|
||||||
|
var dataSigBytes = data.sigBytes;
|
||||||
|
var blockSize = this.blockSize;
|
||||||
|
var blockSizeBytes = blockSize * 4;
|
||||||
|
|
||||||
|
// Count blocks ready
|
||||||
|
var nBlocksReady = dataSigBytes / blockSizeBytes;
|
||||||
|
if (doFlush) {
|
||||||
|
// Round up to include partial blocks
|
||||||
|
nBlocksReady = Math.ceil(nBlocksReady);
|
||||||
|
} else {
|
||||||
|
// Round down to include only full blocks,
|
||||||
|
// less the number of blocks that must remain in the buffer
|
||||||
|
nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count words ready
|
||||||
|
var nWordsReady = nBlocksReady * blockSize;
|
||||||
|
|
||||||
|
// Count bytes ready
|
||||||
|
var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);
|
||||||
|
|
||||||
|
// Process blocks
|
||||||
|
if (nWordsReady) {
|
||||||
|
for (var offset = 0; offset < nWordsReady; offset += blockSize) {
|
||||||
|
// Perform concrete-algorithm logic
|
||||||
|
this._doProcessBlock(dataWords, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove processed words
|
||||||
|
processedWords = dataWords.splice(0, nWordsReady);
|
||||||
|
data.sigBytes -= nBytesReady;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return processed words
|
||||||
|
return new WordArray.init(processedWords, nBytesReady);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a copy of this object.
|
||||||
|
*
|
||||||
|
* @return {Object} The clone.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var clone = bufferedBlockAlgorithm.clone();
|
||||||
|
*/
|
||||||
|
clone: function () {
|
||||||
|
var clone = Base.clone.call(this);
|
||||||
|
clone._data = this._data.clone();
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
},
|
||||||
|
|
||||||
|
_minBufferSize: 0
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract hasher template.
|
||||||
|
*
|
||||||
|
* @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)
|
||||||
|
*/
|
||||||
|
var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*/
|
||||||
|
cfg: Base.extend(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a newly created hasher.
|
||||||
|
*
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this hash computation.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hasher = CryptoJS.algo.SHA256.create();
|
||||||
|
*/
|
||||||
|
init: function (cfg) {
|
||||||
|
// Apply config defaults
|
||||||
|
this.cfg = this.cfg.extend(cfg);
|
||||||
|
|
||||||
|
// Set initial values
|
||||||
|
this.reset();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets this hasher to its initial state.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* hasher.reset();
|
||||||
|
*/
|
||||||
|
reset: function () {
|
||||||
|
// Reset data buffer
|
||||||
|
BufferedBlockAlgorithm.reset.call(this);
|
||||||
|
|
||||||
|
// Perform concrete-hasher logic
|
||||||
|
this._doReset();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates this hasher with a message.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} messageUpdate The message to append.
|
||||||
|
*
|
||||||
|
* @return {Hasher} This hasher.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* hasher.update('message');
|
||||||
|
* hasher.update(wordArray);
|
||||||
|
*/
|
||||||
|
update: function (messageUpdate) {
|
||||||
|
// Append
|
||||||
|
this._append(messageUpdate);
|
||||||
|
|
||||||
|
// Update the hash
|
||||||
|
this._process();
|
||||||
|
|
||||||
|
// Chainable
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finalizes the hash computation.
|
||||||
|
* Note that the finalize operation is effectively a destructive, read-once operation.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} messageUpdate (Optional) A final message update.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = hasher.finalize();
|
||||||
|
* var hash = hasher.finalize('message');
|
||||||
|
* var hash = hasher.finalize(wordArray);
|
||||||
|
*/
|
||||||
|
finalize: function (messageUpdate) {
|
||||||
|
// Final message update
|
||||||
|
if (messageUpdate) {
|
||||||
|
this._append(messageUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform concrete-hasher logic
|
||||||
|
var hash = this._doFinalize();
|
||||||
|
|
||||||
|
return hash;
|
||||||
|
},
|
||||||
|
|
||||||
|
blockSize: 512/32,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a shortcut function to a hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {Hasher} hasher The hasher to create a helper for.
|
||||||
|
*
|
||||||
|
* @return {Function} The shortcut function.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
|
||||||
|
*/
|
||||||
|
_createHelper: function (hasher) {
|
||||||
|
return function (message, cfg) {
|
||||||
|
return new hasher.init(cfg).finalize(message);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {Hasher} hasher The hasher to use in this HMAC helper.
|
||||||
|
*
|
||||||
|
* @return {Function} The shortcut function.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
|
||||||
|
*/
|
||||||
|
_createHmacHelper: function (hasher) {
|
||||||
|
return function (message, key) {
|
||||||
|
return new C_algo.HMAC.init(hasher, key).finalize(message);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Algorithm namespace.
|
||||||
|
*/
|
||||||
|
var C_algo = C.algo = {};
|
||||||
|
|
||||||
|
return C;
|
||||||
|
}(Math));
|
||||||
|
|
||||||
|
|
||||||
|
(function (undefined) {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var Base = C_lib.Base;
|
||||||
|
var X32WordArray = C_lib.WordArray;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* x64 namespace.
|
||||||
|
*/
|
||||||
|
var C_x64 = C.x64 = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A 64-bit word.
|
||||||
|
*/
|
||||||
|
var X64Word = C_x64.Word = Base.extend({
|
||||||
|
/**
|
||||||
|
* Initializes a newly created 64-bit word.
|
||||||
|
*
|
||||||
|
* @param {number} high The high 32 bits.
|
||||||
|
* @param {number} low The low 32 bits.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);
|
||||||
|
*/
|
||||||
|
init: function (high, low) {
|
||||||
|
this.high = high;
|
||||||
|
this.low = low;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bitwise NOTs this word.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after negating.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var negated = x64Word.not();
|
||||||
|
*/
|
||||||
|
// not: function () {
|
||||||
|
// var high = ~this.high;
|
||||||
|
// var low = ~this.low;
|
||||||
|
|
||||||
|
// return X64Word.create(high, low);
|
||||||
|
// },
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bitwise ANDs this word with the passed word.
|
||||||
|
*
|
||||||
|
* @param {X64Word} word The x64-Word to AND with this word.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after ANDing.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var anded = x64Word.and(anotherX64Word);
|
||||||
|
*/
|
||||||
|
// and: function (word) {
|
||||||
|
// var high = this.high & word.high;
|
||||||
|
// var low = this.low & word.low;
|
||||||
|
|
||||||
|
// return X64Word.create(high, low);
|
||||||
|
// },
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bitwise ORs this word with the passed word.
|
||||||
|
*
|
||||||
|
* @param {X64Word} word The x64-Word to OR with this word.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after ORing.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ored = x64Word.or(anotherX64Word);
|
||||||
|
*/
|
||||||
|
// or: function (word) {
|
||||||
|
// var high = this.high | word.high;
|
||||||
|
// var low = this.low | word.low;
|
||||||
|
|
||||||
|
// return X64Word.create(high, low);
|
||||||
|
// },
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bitwise XORs this word with the passed word.
|
||||||
|
*
|
||||||
|
* @param {X64Word} word The x64-Word to XOR with this word.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after XORing.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var xored = x64Word.xor(anotherX64Word);
|
||||||
|
*/
|
||||||
|
// xor: function (word) {
|
||||||
|
// var high = this.high ^ word.high;
|
||||||
|
// var low = this.low ^ word.low;
|
||||||
|
|
||||||
|
// return X64Word.create(high, low);
|
||||||
|
// },
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shifts this word n bits to the left.
|
||||||
|
*
|
||||||
|
* @param {number} n The number of bits to shift.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after shifting.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var shifted = x64Word.shiftL(25);
|
||||||
|
*/
|
||||||
|
// shiftL: function (n) {
|
||||||
|
// if (n < 32) {
|
||||||
|
// var high = (this.high << n) | (this.low >>> (32 - n));
|
||||||
|
// var low = this.low << n;
|
||||||
|
// } else {
|
||||||
|
// var high = this.low << (n - 32);
|
||||||
|
// var low = 0;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return X64Word.create(high, low);
|
||||||
|
// },
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shifts this word n bits to the right.
|
||||||
|
*
|
||||||
|
* @param {number} n The number of bits to shift.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after shifting.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var shifted = x64Word.shiftR(7);
|
||||||
|
*/
|
||||||
|
// shiftR: function (n) {
|
||||||
|
// if (n < 32) {
|
||||||
|
// var low = (this.low >>> n) | (this.high << (32 - n));
|
||||||
|
// var high = this.high >>> n;
|
||||||
|
// } else {
|
||||||
|
// var low = this.high >>> (n - 32);
|
||||||
|
// var high = 0;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return X64Word.create(high, low);
|
||||||
|
// },
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rotates this word n bits to the left.
|
||||||
|
*
|
||||||
|
* @param {number} n The number of bits to rotate.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after rotating.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var rotated = x64Word.rotL(25);
|
||||||
|
*/
|
||||||
|
// rotL: function (n) {
|
||||||
|
// return this.shiftL(n).or(this.shiftR(64 - n));
|
||||||
|
// },
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rotates this word n bits to the right.
|
||||||
|
*
|
||||||
|
* @param {number} n The number of bits to rotate.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after rotating.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var rotated = x64Word.rotR(7);
|
||||||
|
*/
|
||||||
|
// rotR: function (n) {
|
||||||
|
// return this.shiftR(n).or(this.shiftL(64 - n));
|
||||||
|
// },
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds this word with the passed word.
|
||||||
|
*
|
||||||
|
* @param {X64Word} word The x64-Word to add with this word.
|
||||||
|
*
|
||||||
|
* @return {X64Word} A new x64-Word object after adding.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var added = x64Word.add(anotherX64Word);
|
||||||
|
*/
|
||||||
|
// add: function (word) {
|
||||||
|
// var low = (this.low + word.low) | 0;
|
||||||
|
// var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
|
||||||
|
// var high = (this.high + word.high + carry) | 0;
|
||||||
|
|
||||||
|
// return X64Word.create(high, low);
|
||||||
|
// }
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An array of 64-bit words.
|
||||||
|
*
|
||||||
|
* @property {Array} words The array of CryptoJS.x64.Word objects.
|
||||||
|
* @property {number} sigBytes The number of significant bytes in this word array.
|
||||||
|
*/
|
||||||
|
var X64WordArray = C_x64.WordArray = Base.extend({
|
||||||
|
/**
|
||||||
|
* Initializes a newly created word array.
|
||||||
|
*
|
||||||
|
* @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
|
||||||
|
* @param {number} sigBytes (Optional) The number of significant bytes in the words.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.x64.WordArray.create();
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.x64.WordArray.create([
|
||||||
|
* CryptoJS.x64.Word.create(0x00010203, 0x04050607),
|
||||||
|
* CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
|
||||||
|
* ]);
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.x64.WordArray.create([
|
||||||
|
* CryptoJS.x64.Word.create(0x00010203, 0x04050607),
|
||||||
|
* CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
|
||||||
|
* ], 10);
|
||||||
|
*/
|
||||||
|
init: function (words, sigBytes) {
|
||||||
|
words = this.words = words || [];
|
||||||
|
|
||||||
|
if (sigBytes != undefined) {
|
||||||
|
this.sigBytes = sigBytes;
|
||||||
|
} else {
|
||||||
|
this.sigBytes = words.length * 8;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this 64-bit word array to a 32-bit word array.
|
||||||
|
*
|
||||||
|
* @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var x32WordArray = x64WordArray.toX32();
|
||||||
|
*/
|
||||||
|
toX32: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var x64Words = this.words;
|
||||||
|
var x64WordsLength = x64Words.length;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var x32Words = [];
|
||||||
|
for (var i = 0; i < x64WordsLength; i++) {
|
||||||
|
var x64Word = x64Words[i];
|
||||||
|
x32Words.push(x64Word.high);
|
||||||
|
x32Words.push(x64Word.low);
|
||||||
|
}
|
||||||
|
|
||||||
|
return X32WordArray.create(x32Words, this.sigBytes);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a copy of this word array.
|
||||||
|
*
|
||||||
|
* @return {X64WordArray} The clone.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var clone = x64WordArray.clone();
|
||||||
|
*/
|
||||||
|
clone: function () {
|
||||||
|
var clone = Base.clone.call(this);
|
||||||
|
|
||||||
|
// Clone "words" array
|
||||||
|
var words = clone.words = this.words.slice(0);
|
||||||
|
|
||||||
|
// Clone each X64Word object
|
||||||
|
var wordsLength = words.length;
|
||||||
|
for (var i = 0; i < wordsLength; i++) {
|
||||||
|
words[i] = words[i].clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Check if typed arrays are supported
|
||||||
|
if (typeof ArrayBuffer != 'function') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
|
||||||
|
// Reference original init
|
||||||
|
var superInit = WordArray.init;
|
||||||
|
|
||||||
|
// Augment WordArray.init to handle typed arrays
|
||||||
|
var subInit = WordArray.init = function (typedArray) {
|
||||||
|
// Convert buffers to uint8
|
||||||
|
if (typedArray instanceof ArrayBuffer) {
|
||||||
|
typedArray = new Uint8Array(typedArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert other array views to uint8
|
||||||
|
if (
|
||||||
|
typedArray instanceof Int8Array ||
|
||||||
|
(typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) ||
|
||||||
|
typedArray instanceof Int16Array ||
|
||||||
|
typedArray instanceof Uint16Array ||
|
||||||
|
typedArray instanceof Int32Array ||
|
||||||
|
typedArray instanceof Uint32Array ||
|
||||||
|
typedArray instanceof Float32Array ||
|
||||||
|
typedArray instanceof Float64Array
|
||||||
|
) {
|
||||||
|
typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Uint8Array
|
||||||
|
if (typedArray instanceof Uint8Array) {
|
||||||
|
// Shortcut
|
||||||
|
var typedArrayByteLength = typedArray.byteLength;
|
||||||
|
|
||||||
|
// Extract bytes
|
||||||
|
var words = [];
|
||||||
|
for (var i = 0; i < typedArrayByteLength; i++) {
|
||||||
|
words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize this word array
|
||||||
|
superInit.call(this, words, typedArrayByteLength);
|
||||||
|
} else {
|
||||||
|
// Else call normal init
|
||||||
|
superInit.apply(this, arguments);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
subInit.prototype = WordArray;
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var C_enc = C.enc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UTF-16 BE encoding strategy.
|
||||||
|
*/
|
||||||
|
var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
|
||||||
|
/**
|
||||||
|
* Converts a word array to a UTF-16 BE string.
|
||||||
|
*
|
||||||
|
* @param {WordArray} wordArray The word array.
|
||||||
|
*
|
||||||
|
* @return {string} The UTF-16 BE string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
|
||||||
|
*/
|
||||||
|
stringify: function (wordArray) {
|
||||||
|
// Shortcuts
|
||||||
|
var words = wordArray.words;
|
||||||
|
var sigBytes = wordArray.sigBytes;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var utf16Chars = [];
|
||||||
|
for (var i = 0; i < sigBytes; i += 2) {
|
||||||
|
var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;
|
||||||
|
utf16Chars.push(String.fromCharCode(codePoint));
|
||||||
|
}
|
||||||
|
|
||||||
|
return utf16Chars.join('');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a UTF-16 BE string to a word array.
|
||||||
|
*
|
||||||
|
* @param {string} utf16Str The UTF-16 BE string.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The word array.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
|
||||||
|
*/
|
||||||
|
parse: function (utf16Str) {
|
||||||
|
// Shortcut
|
||||||
|
var utf16StrLength = utf16Str.length;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var words = [];
|
||||||
|
for (var i = 0; i < utf16StrLength; i++) {
|
||||||
|
words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
return WordArray.create(words, utf16StrLength * 2);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UTF-16 LE encoding strategy.
|
||||||
|
*/
|
||||||
|
C_enc.Utf16LE = {
|
||||||
|
/**
|
||||||
|
* Converts a word array to a UTF-16 LE string.
|
||||||
|
*
|
||||||
|
* @param {WordArray} wordArray The word array.
|
||||||
|
*
|
||||||
|
* @return {string} The UTF-16 LE string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
|
||||||
|
*/
|
||||||
|
stringify: function (wordArray) {
|
||||||
|
// Shortcuts
|
||||||
|
var words = wordArray.words;
|
||||||
|
var sigBytes = wordArray.sigBytes;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var utf16Chars = [];
|
||||||
|
for (var i = 0; i < sigBytes; i += 2) {
|
||||||
|
var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);
|
||||||
|
utf16Chars.push(String.fromCharCode(codePoint));
|
||||||
|
}
|
||||||
|
|
||||||
|
return utf16Chars.join('');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a UTF-16 LE string to a word array.
|
||||||
|
*
|
||||||
|
* @param {string} utf16Str The UTF-16 LE string.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The word array.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
|
||||||
|
*/
|
||||||
|
parse: function (utf16Str) {
|
||||||
|
// Shortcut
|
||||||
|
var utf16StrLength = utf16Str.length;
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var words = [];
|
||||||
|
for (var i = 0; i < utf16StrLength; i++) {
|
||||||
|
words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));
|
||||||
|
}
|
||||||
|
|
||||||
|
return WordArray.create(words, utf16StrLength * 2);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function swapEndian(word) {
|
||||||
|
return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var C_enc = C.enc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base64 encoding strategy.
|
||||||
|
*/
|
||||||
|
var Base64 = C_enc.Base64 = {
|
||||||
|
/**
|
||||||
|
* Converts a word array to a Base64 string.
|
||||||
|
*
|
||||||
|
* @param {WordArray} wordArray The word array.
|
||||||
|
*
|
||||||
|
* @return {string} The Base64 string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var base64String = CryptoJS.enc.Base64.stringify(wordArray);
|
||||||
|
*/
|
||||||
|
stringify: function (wordArray) {
|
||||||
|
// Shortcuts
|
||||||
|
var words = wordArray.words;
|
||||||
|
var sigBytes = wordArray.sigBytes;
|
||||||
|
var map = this._map;
|
||||||
|
|
||||||
|
// Clamp excess bits
|
||||||
|
wordArray.clamp();
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var base64Chars = [];
|
||||||
|
for (var i = 0; i < sigBytes; i += 3) {
|
||||||
|
var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
|
||||||
|
var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
|
||||||
|
var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
|
||||||
|
|
||||||
|
var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
|
||||||
|
|
||||||
|
for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
|
||||||
|
base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
var paddingChar = map.charAt(64);
|
||||||
|
if (paddingChar) {
|
||||||
|
while (base64Chars.length % 4) {
|
||||||
|
base64Chars.push(paddingChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return base64Chars.join('');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a Base64 string to a word array.
|
||||||
|
*
|
||||||
|
* @param {string} base64Str The Base64 string.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The word array.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.enc.Base64.parse(base64String);
|
||||||
|
*/
|
||||||
|
parse: function (base64Str) {
|
||||||
|
// Shortcuts
|
||||||
|
var base64StrLength = base64Str.length;
|
||||||
|
var map = this._map;
|
||||||
|
var reverseMap = this._reverseMap;
|
||||||
|
|
||||||
|
if (!reverseMap) {
|
||||||
|
reverseMap = this._reverseMap = [];
|
||||||
|
for (var j = 0; j < map.length; j++) {
|
||||||
|
reverseMap[map.charCodeAt(j)] = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ignore padding
|
||||||
|
var paddingChar = map.charAt(64);
|
||||||
|
if (paddingChar) {
|
||||||
|
var paddingIndex = base64Str.indexOf(paddingChar);
|
||||||
|
if (paddingIndex !== -1) {
|
||||||
|
base64StrLength = paddingIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
return parseLoop(base64Str, base64StrLength, reverseMap);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
|
||||||
|
};
|
||||||
|
|
||||||
|
function parseLoop(base64Str, base64StrLength, reverseMap) {
|
||||||
|
var words = [];
|
||||||
|
var nBytes = 0;
|
||||||
|
for (var i = 0; i < base64StrLength; i++) {
|
||||||
|
if (i % 4) {
|
||||||
|
var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
|
||||||
|
var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
|
||||||
|
var bitsCombined = bits1 | bits2;
|
||||||
|
words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
|
||||||
|
nBytes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return WordArray.create(words, nBytes);
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var C_enc = C.enc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base64url encoding strategy.
|
||||||
|
*/
|
||||||
|
var Base64url = C_enc.Base64url = {
|
||||||
|
/**
|
||||||
|
* Converts a word array to a Base64url string.
|
||||||
|
*
|
||||||
|
* @param {WordArray} wordArray The word array.
|
||||||
|
*
|
||||||
|
* @param {boolean} urlSafe Whether to use url safe
|
||||||
|
*
|
||||||
|
* @return {string} The Base64url string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var base64String = CryptoJS.enc.Base64url.stringify(wordArray);
|
||||||
|
*/
|
||||||
|
stringify: function (wordArray, urlSafe=true) {
|
||||||
|
// Shortcuts
|
||||||
|
var words = wordArray.words;
|
||||||
|
var sigBytes = wordArray.sigBytes;
|
||||||
|
var map = urlSafe ? this._safe_map : this._map;
|
||||||
|
|
||||||
|
// Clamp excess bits
|
||||||
|
wordArray.clamp();
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
var base64Chars = [];
|
||||||
|
for (var i = 0; i < sigBytes; i += 3) {
|
||||||
|
var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
|
||||||
|
var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
|
||||||
|
var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
|
||||||
|
|
||||||
|
var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
|
||||||
|
|
||||||
|
for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
|
||||||
|
base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
var paddingChar = map.charAt(64);
|
||||||
|
if (paddingChar) {
|
||||||
|
while (base64Chars.length % 4) {
|
||||||
|
base64Chars.push(paddingChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return base64Chars.join('');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a Base64url string to a word array.
|
||||||
|
*
|
||||||
|
* @param {string} base64Str The Base64url string.
|
||||||
|
*
|
||||||
|
* @param {boolean} urlSafe Whether to use url safe
|
||||||
|
*
|
||||||
|
* @return {WordArray} The word array.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var wordArray = CryptoJS.enc.Base64url.parse(base64String);
|
||||||
|
*/
|
||||||
|
parse: function (base64Str, urlSafe=true) {
|
||||||
|
// Shortcuts
|
||||||
|
var base64StrLength = base64Str.length;
|
||||||
|
var map = urlSafe ? this._safe_map : this._map;
|
||||||
|
var reverseMap = this._reverseMap;
|
||||||
|
|
||||||
|
if (!reverseMap) {
|
||||||
|
reverseMap = this._reverseMap = [];
|
||||||
|
for (var j = 0; j < map.length; j++) {
|
||||||
|
reverseMap[map.charCodeAt(j)] = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ignore padding
|
||||||
|
var paddingChar = map.charAt(64);
|
||||||
|
if (paddingChar) {
|
||||||
|
var paddingIndex = base64Str.indexOf(paddingChar);
|
||||||
|
if (paddingIndex !== -1) {
|
||||||
|
base64StrLength = paddingIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert
|
||||||
|
return parseLoop(base64Str, base64StrLength, reverseMap);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
|
||||||
|
_safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
|
||||||
|
};
|
||||||
|
|
||||||
|
function parseLoop(base64Str, base64StrLength, reverseMap) {
|
||||||
|
var words = [];
|
||||||
|
var nBytes = 0;
|
||||||
|
for (var i = 0; i < base64StrLength; i++) {
|
||||||
|
if (i % 4) {
|
||||||
|
var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
|
||||||
|
var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
|
||||||
|
var bitsCombined = bits1 | bits2;
|
||||||
|
words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
|
||||||
|
nBytes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return WordArray.create(words, nBytes);
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
(function (Math) {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var Hasher = C_lib.Hasher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Constants table
|
||||||
|
var T = [];
|
||||||
|
|
||||||
|
// Compute constants
|
||||||
|
(function () {
|
||||||
|
for (var i = 0; i < 64; i++) {
|
||||||
|
T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MD5 hash algorithm.
|
||||||
|
*/
|
||||||
|
var MD5 = C_algo.MD5 = Hasher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
this._hash = new WordArray.init([
|
||||||
|
0x67452301, 0xefcdab89,
|
||||||
|
0x98badcfe, 0x10325476
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
// Swap endian
|
||||||
|
for (var i = 0; i < 16; i++) {
|
||||||
|
// Shortcuts
|
||||||
|
var offset_i = offset + i;
|
||||||
|
var M_offset_i = M[offset_i];
|
||||||
|
|
||||||
|
M[offset_i] = (
|
||||||
|
(((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var H = this._hash.words;
|
||||||
|
|
||||||
|
var M_offset_0 = M[offset + 0];
|
||||||
|
var M_offset_1 = M[offset + 1];
|
||||||
|
var M_offset_2 = M[offset + 2];
|
||||||
|
var M_offset_3 = M[offset + 3];
|
||||||
|
var M_offset_4 = M[offset + 4];
|
||||||
|
var M_offset_5 = M[offset + 5];
|
||||||
|
var M_offset_6 = M[offset + 6];
|
||||||
|
var M_offset_7 = M[offset + 7];
|
||||||
|
var M_offset_8 = M[offset + 8];
|
||||||
|
var M_offset_9 = M[offset + 9];
|
||||||
|
var M_offset_10 = M[offset + 10];
|
||||||
|
var M_offset_11 = M[offset + 11];
|
||||||
|
var M_offset_12 = M[offset + 12];
|
||||||
|
var M_offset_13 = M[offset + 13];
|
||||||
|
var M_offset_14 = M[offset + 14];
|
||||||
|
var M_offset_15 = M[offset + 15];
|
||||||
|
|
||||||
|
// Working varialbes
|
||||||
|
var a = H[0];
|
||||||
|
var b = H[1];
|
||||||
|
var c = H[2];
|
||||||
|
var d = H[3];
|
||||||
|
|
||||||
|
// Computation
|
||||||
|
a = FF(a, b, c, d, M_offset_0, 7, T[0]);
|
||||||
|
d = FF(d, a, b, c, M_offset_1, 12, T[1]);
|
||||||
|
c = FF(c, d, a, b, M_offset_2, 17, T[2]);
|
||||||
|
b = FF(b, c, d, a, M_offset_3, 22, T[3]);
|
||||||
|
a = FF(a, b, c, d, M_offset_4, 7, T[4]);
|
||||||
|
d = FF(d, a, b, c, M_offset_5, 12, T[5]);
|
||||||
|
c = FF(c, d, a, b, M_offset_6, 17, T[6]);
|
||||||
|
b = FF(b, c, d, a, M_offset_7, 22, T[7]);
|
||||||
|
a = FF(a, b, c, d, M_offset_8, 7, T[8]);
|
||||||
|
d = FF(d, a, b, c, M_offset_9, 12, T[9]);
|
||||||
|
c = FF(c, d, a, b, M_offset_10, 17, T[10]);
|
||||||
|
b = FF(b, c, d, a, M_offset_11, 22, T[11]);
|
||||||
|
a = FF(a, b, c, d, M_offset_12, 7, T[12]);
|
||||||
|
d = FF(d, a, b, c, M_offset_13, 12, T[13]);
|
||||||
|
c = FF(c, d, a, b, M_offset_14, 17, T[14]);
|
||||||
|
b = FF(b, c, d, a, M_offset_15, 22, T[15]);
|
||||||
|
|
||||||
|
a = GG(a, b, c, d, M_offset_1, 5, T[16]);
|
||||||
|
d = GG(d, a, b, c, M_offset_6, 9, T[17]);
|
||||||
|
c = GG(c, d, a, b, M_offset_11, 14, T[18]);
|
||||||
|
b = GG(b, c, d, a, M_offset_0, 20, T[19]);
|
||||||
|
a = GG(a, b, c, d, M_offset_5, 5, T[20]);
|
||||||
|
d = GG(d, a, b, c, M_offset_10, 9, T[21]);
|
||||||
|
c = GG(c, d, a, b, M_offset_15, 14, T[22]);
|
||||||
|
b = GG(b, c, d, a, M_offset_4, 20, T[23]);
|
||||||
|
a = GG(a, b, c, d, M_offset_9, 5, T[24]);
|
||||||
|
d = GG(d, a, b, c, M_offset_14, 9, T[25]);
|
||||||
|
c = GG(c, d, a, b, M_offset_3, 14, T[26]);
|
||||||
|
b = GG(b, c, d, a, M_offset_8, 20, T[27]);
|
||||||
|
a = GG(a, b, c, d, M_offset_13, 5, T[28]);
|
||||||
|
d = GG(d, a, b, c, M_offset_2, 9, T[29]);
|
||||||
|
c = GG(c, d, a, b, M_offset_7, 14, T[30]);
|
||||||
|
b = GG(b, c, d, a, M_offset_12, 20, T[31]);
|
||||||
|
|
||||||
|
a = HH(a, b, c, d, M_offset_5, 4, T[32]);
|
||||||
|
d = HH(d, a, b, c, M_offset_8, 11, T[33]);
|
||||||
|
c = HH(c, d, a, b, M_offset_11, 16, T[34]);
|
||||||
|
b = HH(b, c, d, a, M_offset_14, 23, T[35]);
|
||||||
|
a = HH(a, b, c, d, M_offset_1, 4, T[36]);
|
||||||
|
d = HH(d, a, b, c, M_offset_4, 11, T[37]);
|
||||||
|
c = HH(c, d, a, b, M_offset_7, 16, T[38]);
|
||||||
|
b = HH(b, c, d, a, M_offset_10, 23, T[39]);
|
||||||
|
a = HH(a, b, c, d, M_offset_13, 4, T[40]);
|
||||||
|
d = HH(d, a, b, c, M_offset_0, 11, T[41]);
|
||||||
|
c = HH(c, d, a, b, M_offset_3, 16, T[42]);
|
||||||
|
b = HH(b, c, d, a, M_offset_6, 23, T[43]);
|
||||||
|
a = HH(a, b, c, d, M_offset_9, 4, T[44]);
|
||||||
|
d = HH(d, a, b, c, M_offset_12, 11, T[45]);
|
||||||
|
c = HH(c, d, a, b, M_offset_15, 16, T[46]);
|
||||||
|
b = HH(b, c, d, a, M_offset_2, 23, T[47]);
|
||||||
|
|
||||||
|
a = II(a, b, c, d, M_offset_0, 6, T[48]);
|
||||||
|
d = II(d, a, b, c, M_offset_7, 10, T[49]);
|
||||||
|
c = II(c, d, a, b, M_offset_14, 15, T[50]);
|
||||||
|
b = II(b, c, d, a, M_offset_5, 21, T[51]);
|
||||||
|
a = II(a, b, c, d, M_offset_12, 6, T[52]);
|
||||||
|
d = II(d, a, b, c, M_offset_3, 10, T[53]);
|
||||||
|
c = II(c, d, a, b, M_offset_10, 15, T[54]);
|
||||||
|
b = II(b, c, d, a, M_offset_1, 21, T[55]);
|
||||||
|
a = II(a, b, c, d, M_offset_8, 6, T[56]);
|
||||||
|
d = II(d, a, b, c, M_offset_15, 10, T[57]);
|
||||||
|
c = II(c, d, a, b, M_offset_6, 15, T[58]);
|
||||||
|
b = II(b, c, d, a, M_offset_13, 21, T[59]);
|
||||||
|
a = II(a, b, c, d, M_offset_4, 6, T[60]);
|
||||||
|
d = II(d, a, b, c, M_offset_11, 10, T[61]);
|
||||||
|
c = II(c, d, a, b, M_offset_2, 15, T[62]);
|
||||||
|
b = II(b, c, d, a, M_offset_9, 21, T[63]);
|
||||||
|
|
||||||
|
// Intermediate hash value
|
||||||
|
H[0] = (H[0] + a) | 0;
|
||||||
|
H[1] = (H[1] + b) | 0;
|
||||||
|
H[2] = (H[2] + c) | 0;
|
||||||
|
H[3] = (H[3] + d) | 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var data = this._data;
|
||||||
|
var dataWords = data.words;
|
||||||
|
|
||||||
|
var nBitsTotal = this._nDataBytes * 8;
|
||||||
|
var nBitsLeft = data.sigBytes * 8;
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
|
||||||
|
|
||||||
|
var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
|
||||||
|
var nBitsTotalL = nBitsTotal;
|
||||||
|
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (
|
||||||
|
(((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
|
||||||
|
(((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
|
||||||
|
data.sigBytes = (dataWords.length + 1) * 4;
|
||||||
|
|
||||||
|
// Hash final blocks
|
||||||
|
this._process();
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var hash = this._hash;
|
||||||
|
var H = hash.words;
|
||||||
|
|
||||||
|
// Swap endian
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
// Shortcut
|
||||||
|
var H_i = H[i];
|
||||||
|
|
||||||
|
H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return final computed hash
|
||||||
|
return hash;
|
||||||
|
},
|
||||||
|
|
||||||
|
clone: function () {
|
||||||
|
var clone = Hasher.clone.call(this);
|
||||||
|
clone._hash = this._hash.clone();
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function FF(a, b, c, d, x, s, t) {
|
||||||
|
var n = a + ((b & c) | (~b & d)) + x + t;
|
||||||
|
return ((n << s) | (n >>> (32 - s))) + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GG(a, b, c, d, x, s, t) {
|
||||||
|
var n = a + ((b & d) | (c & ~d)) + x + t;
|
||||||
|
return ((n << s) | (n >>> (32 - s))) + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
function HH(a, b, c, d, x, s, t) {
|
||||||
|
var n = a + (b ^ c ^ d) + x + t;
|
||||||
|
return ((n << s) | (n >>> (32 - s))) + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
function II(a, b, c, d, x, s, t) {
|
||||||
|
var n = a + (c ^ (b | ~d)) + x + t;
|
||||||
|
return ((n << s) | (n >>> (32 - s))) + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = CryptoJS.MD5('message');
|
||||||
|
* var hash = CryptoJS.MD5(wordArray);
|
||||||
|
*/
|
||||||
|
C.MD5 = Hasher._createHelper(MD5);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = CryptoJS.HmacMD5(message, key);
|
||||||
|
*/
|
||||||
|
C.HmacMD5 = Hasher._createHmacHelper(MD5);
|
||||||
|
}(Math));
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var Hasher = C_lib.Hasher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Reusable object
|
||||||
|
var W = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SHA-1 hash algorithm.
|
||||||
|
*/
|
||||||
|
var SHA1 = C_algo.SHA1 = Hasher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
this._hash = new WordArray.init([
|
||||||
|
0x67452301, 0xefcdab89,
|
||||||
|
0x98badcfe, 0x10325476,
|
||||||
|
0xc3d2e1f0
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
// Shortcut
|
||||||
|
var H = this._hash.words;
|
||||||
|
|
||||||
|
// Working variables
|
||||||
|
var a = H[0];
|
||||||
|
var b = H[1];
|
||||||
|
var c = H[2];
|
||||||
|
var d = H[3];
|
||||||
|
var e = H[4];
|
||||||
|
|
||||||
|
// Computation
|
||||||
|
for (var i = 0; i < 80; i++) {
|
||||||
|
if (i < 16) {
|
||||||
|
W[i] = M[offset + i] | 0;
|
||||||
|
} else {
|
||||||
|
var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
|
||||||
|
W[i] = (n << 1) | (n >>> 31);
|
||||||
|
}
|
||||||
|
|
||||||
|
var t = ((a << 5) | (a >>> 27)) + e + W[i];
|
||||||
|
if (i < 20) {
|
||||||
|
t += ((b & c) | (~b & d)) + 0x5a827999;
|
||||||
|
} else if (i < 40) {
|
||||||
|
t += (b ^ c ^ d) + 0x6ed9eba1;
|
||||||
|
} else if (i < 60) {
|
||||||
|
t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;
|
||||||
|
} else /* if (i < 80) */ {
|
||||||
|
t += (b ^ c ^ d) - 0x359d3e2a;
|
||||||
|
}
|
||||||
|
|
||||||
|
e = d;
|
||||||
|
d = c;
|
||||||
|
c = (b << 30) | (b >>> 2);
|
||||||
|
b = a;
|
||||||
|
a = t;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Intermediate hash value
|
||||||
|
H[0] = (H[0] + a) | 0;
|
||||||
|
H[1] = (H[1] + b) | 0;
|
||||||
|
H[2] = (H[2] + c) | 0;
|
||||||
|
H[3] = (H[3] + d) | 0;
|
||||||
|
H[4] = (H[4] + e) | 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var data = this._data;
|
||||||
|
var dataWords = data.words;
|
||||||
|
|
||||||
|
var nBitsTotal = this._nDataBytes * 8;
|
||||||
|
var nBitsLeft = data.sigBytes * 8;
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
|
||||||
|
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
|
||||||
|
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
|
||||||
|
data.sigBytes = dataWords.length * 4;
|
||||||
|
|
||||||
|
// Hash final blocks
|
||||||
|
this._process();
|
||||||
|
|
||||||
|
// Return final computed hash
|
||||||
|
return this._hash;
|
||||||
|
},
|
||||||
|
|
||||||
|
clone: function () {
|
||||||
|
var clone = Hasher.clone.call(this);
|
||||||
|
clone._hash = this._hash.clone();
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = CryptoJS.SHA1('message');
|
||||||
|
* var hash = CryptoJS.SHA1(wordArray);
|
||||||
|
*/
|
||||||
|
C.SHA1 = Hasher._createHelper(SHA1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = CryptoJS.HmacSHA1(message, key);
|
||||||
|
*/
|
||||||
|
C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function (Math) {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var Hasher = C_lib.Hasher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Initialization and round constants tables
|
||||||
|
var H = [];
|
||||||
|
var K = [];
|
||||||
|
|
||||||
|
// Compute constants
|
||||||
|
(function () {
|
||||||
|
function isPrime(n) {
|
||||||
|
var sqrtN = Math.sqrt(n);
|
||||||
|
for (var factor = 2; factor <= sqrtN; factor++) {
|
||||||
|
if (!(n % factor)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFractionalBits(n) {
|
||||||
|
return ((n - (n | 0)) * 0x100000000) | 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = 2;
|
||||||
|
var nPrime = 0;
|
||||||
|
while (nPrime < 64) {
|
||||||
|
if (isPrime(n)) {
|
||||||
|
if (nPrime < 8) {
|
||||||
|
H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));
|
||||||
|
}
|
||||||
|
K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));
|
||||||
|
|
||||||
|
nPrime++;
|
||||||
|
}
|
||||||
|
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
// Reusable object
|
||||||
|
var W = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SHA-256 hash algorithm.
|
||||||
|
*/
|
||||||
|
var SHA256 = C_algo.SHA256 = Hasher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
this._hash = new WordArray.init(H.slice(0));
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
// Shortcut
|
||||||
|
var H = this._hash.words;
|
||||||
|
|
||||||
|
// Working variables
|
||||||
|
var a = H[0];
|
||||||
|
var b = H[1];
|
||||||
|
var c = H[2];
|
||||||
|
var d = H[3];
|
||||||
|
var e = H[4];
|
||||||
|
var f = H[5];
|
||||||
|
var g = H[6];
|
||||||
|
var h = H[7];
|
||||||
|
|
||||||
|
// Computation
|
||||||
|
for (var i = 0; i < 64; i++) {
|
||||||
|
if (i < 16) {
|
||||||
|
W[i] = M[offset + i] | 0;
|
||||||
|
} else {
|
||||||
|
var gamma0x = W[i - 15];
|
||||||
|
var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^
|
||||||
|
((gamma0x << 14) | (gamma0x >>> 18)) ^
|
||||||
|
(gamma0x >>> 3);
|
||||||
|
|
||||||
|
var gamma1x = W[i - 2];
|
||||||
|
var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^
|
||||||
|
((gamma1x << 13) | (gamma1x >>> 19)) ^
|
||||||
|
(gamma1x >>> 10);
|
||||||
|
|
||||||
|
W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
|
||||||
|
}
|
||||||
|
|
||||||
|
var ch = (e & f) ^ (~e & g);
|
||||||
|
var maj = (a & b) ^ (a & c) ^ (b & c);
|
||||||
|
|
||||||
|
var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));
|
||||||
|
var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));
|
||||||
|
|
||||||
|
var t1 = h + sigma1 + ch + K[i] + W[i];
|
||||||
|
var t2 = sigma0 + maj;
|
||||||
|
|
||||||
|
h = g;
|
||||||
|
g = f;
|
||||||
|
f = e;
|
||||||
|
e = (d + t1) | 0;
|
||||||
|
d = c;
|
||||||
|
c = b;
|
||||||
|
b = a;
|
||||||
|
a = (t1 + t2) | 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Intermediate hash value
|
||||||
|
H[0] = (H[0] + a) | 0;
|
||||||
|
H[1] = (H[1] + b) | 0;
|
||||||
|
H[2] = (H[2] + c) | 0;
|
||||||
|
H[3] = (H[3] + d) | 0;
|
||||||
|
H[4] = (H[4] + e) | 0;
|
||||||
|
H[5] = (H[5] + f) | 0;
|
||||||
|
H[6] = (H[6] + g) | 0;
|
||||||
|
H[7] = (H[7] + h) | 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var data = this._data;
|
||||||
|
var dataWords = data.words;
|
||||||
|
|
||||||
|
var nBitsTotal = this._nDataBytes * 8;
|
||||||
|
var nBitsLeft = data.sigBytes * 8;
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
|
||||||
|
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
|
||||||
|
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
|
||||||
|
data.sigBytes = dataWords.length * 4;
|
||||||
|
|
||||||
|
// Hash final blocks
|
||||||
|
this._process();
|
||||||
|
|
||||||
|
// Return final computed hash
|
||||||
|
return this._hash;
|
||||||
|
},
|
||||||
|
|
||||||
|
clone: function () {
|
||||||
|
var clone = Hasher.clone.call(this);
|
||||||
|
clone._hash = this._hash.clone();
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = CryptoJS.SHA256('message');
|
||||||
|
* var hash = CryptoJS.SHA256(wordArray);
|
||||||
|
*/
|
||||||
|
C.SHA256 = Hasher._createHelper(SHA256);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = CryptoJS.HmacSHA256(message, key);
|
||||||
|
*/
|
||||||
|
C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
|
||||||
|
}(Math));
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
var SHA256 = C_algo.SHA256;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SHA-224 hash algorithm.
|
||||||
|
*/
|
||||||
|
var SHA224 = C_algo.SHA224 = SHA256.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
this._hash = new WordArray.init([
|
||||||
|
0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
|
||||||
|
0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
var hash = SHA256._doFinalize.call(this);
|
||||||
|
|
||||||
|
hash.sigBytes -= 4;
|
||||||
|
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = CryptoJS.SHA224('message');
|
||||||
|
* var hash = CryptoJS.SHA224(wordArray);
|
||||||
|
*/
|
||||||
|
C.SHA224 = SHA256._createHelper(SHA224);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = CryptoJS.HmacSHA224(message, key);
|
||||||
|
*/
|
||||||
|
C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var Hasher = C_lib.Hasher;
|
||||||
|
var C_x64 = C.x64;
|
||||||
|
var X64Word = C_x64.Word;
|
||||||
|
var X64WordArray = C_x64.WordArray;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
function X64Word_create() {
|
||||||
|
return X64Word.create.apply(X64Word, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constants
|
||||||
|
var K = [
|
||||||
|
X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),
|
||||||
|
X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),
|
||||||
|
X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),
|
||||||
|
X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),
|
||||||
|
X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),
|
||||||
|
X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),
|
||||||
|
X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),
|
||||||
|
X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),
|
||||||
|
X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),
|
||||||
|
X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),
|
||||||
|
X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),
|
||||||
|
X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),
|
||||||
|
X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),
|
||||||
|
X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),
|
||||||
|
X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),
|
||||||
|
X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),
|
||||||
|
X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),
|
||||||
|
X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),
|
||||||
|
X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),
|
||||||
|
X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),
|
||||||
|
X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),
|
||||||
|
X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),
|
||||||
|
X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),
|
||||||
|
X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),
|
||||||
|
X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),
|
||||||
|
X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),
|
||||||
|
X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),
|
||||||
|
X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),
|
||||||
|
X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),
|
||||||
|
X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),
|
||||||
|
X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),
|
||||||
|
X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),
|
||||||
|
X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),
|
||||||
|
X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),
|
||||||
|
X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),
|
||||||
|
X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),
|
||||||
|
X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),
|
||||||
|
X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),
|
||||||
|
X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),
|
||||||
|
X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)
|
||||||
|
];
|
||||||
|
|
||||||
|
// Reusable objects
|
||||||
|
var W = [];
|
||||||
|
(function () {
|
||||||
|
for (var i = 0; i < 80; i++) {
|
||||||
|
W[i] = X64Word_create();
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SHA-512 hash algorithm.
|
||||||
|
*/
|
||||||
|
var SHA512 = C_algo.SHA512 = Hasher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
this._hash = new X64WordArray.init([
|
||||||
|
new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),
|
||||||
|
new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),
|
||||||
|
new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),
|
||||||
|
new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var H = this._hash.words;
|
||||||
|
|
||||||
|
var H0 = H[0];
|
||||||
|
var H1 = H[1];
|
||||||
|
var H2 = H[2];
|
||||||
|
var H3 = H[3];
|
||||||
|
var H4 = H[4];
|
||||||
|
var H5 = H[5];
|
||||||
|
var H6 = H[6];
|
||||||
|
var H7 = H[7];
|
||||||
|
|
||||||
|
var H0h = H0.high;
|
||||||
|
var H0l = H0.low;
|
||||||
|
var H1h = H1.high;
|
||||||
|
var H1l = H1.low;
|
||||||
|
var H2h = H2.high;
|
||||||
|
var H2l = H2.low;
|
||||||
|
var H3h = H3.high;
|
||||||
|
var H3l = H3.low;
|
||||||
|
var H4h = H4.high;
|
||||||
|
var H4l = H4.low;
|
||||||
|
var H5h = H5.high;
|
||||||
|
var H5l = H5.low;
|
||||||
|
var H6h = H6.high;
|
||||||
|
var H6l = H6.low;
|
||||||
|
var H7h = H7.high;
|
||||||
|
var H7l = H7.low;
|
||||||
|
|
||||||
|
// Working variables
|
||||||
|
var ah = H0h;
|
||||||
|
var al = H0l;
|
||||||
|
var bh = H1h;
|
||||||
|
var bl = H1l;
|
||||||
|
var ch = H2h;
|
||||||
|
var cl = H2l;
|
||||||
|
var dh = H3h;
|
||||||
|
var dl = H3l;
|
||||||
|
var eh = H4h;
|
||||||
|
var el = H4l;
|
||||||
|
var fh = H5h;
|
||||||
|
var fl = H5l;
|
||||||
|
var gh = H6h;
|
||||||
|
var gl = H6l;
|
||||||
|
var hh = H7h;
|
||||||
|
var hl = H7l;
|
||||||
|
|
||||||
|
// Rounds
|
||||||
|
for (var i = 0; i < 80; i++) {
|
||||||
|
var Wil;
|
||||||
|
var Wih;
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var Wi = W[i];
|
||||||
|
|
||||||
|
// Extend message
|
||||||
|
if (i < 16) {
|
||||||
|
Wih = Wi.high = M[offset + i * 2] | 0;
|
||||||
|
Wil = Wi.low = M[offset + i * 2 + 1] | 0;
|
||||||
|
} else {
|
||||||
|
// Gamma0
|
||||||
|
var gamma0x = W[i - 15];
|
||||||
|
var gamma0xh = gamma0x.high;
|
||||||
|
var gamma0xl = gamma0x.low;
|
||||||
|
var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);
|
||||||
|
var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));
|
||||||
|
|
||||||
|
// Gamma1
|
||||||
|
var gamma1x = W[i - 2];
|
||||||
|
var gamma1xh = gamma1x.high;
|
||||||
|
var gamma1xl = gamma1x.low;
|
||||||
|
var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);
|
||||||
|
var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));
|
||||||
|
|
||||||
|
// W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
|
||||||
|
var Wi7 = W[i - 7];
|
||||||
|
var Wi7h = Wi7.high;
|
||||||
|
var Wi7l = Wi7.low;
|
||||||
|
|
||||||
|
var Wi16 = W[i - 16];
|
||||||
|
var Wi16h = Wi16.high;
|
||||||
|
var Wi16l = Wi16.low;
|
||||||
|
|
||||||
|
Wil = gamma0l + Wi7l;
|
||||||
|
Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);
|
||||||
|
Wil = Wil + gamma1l;
|
||||||
|
Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);
|
||||||
|
Wil = Wil + Wi16l;
|
||||||
|
Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);
|
||||||
|
|
||||||
|
Wi.high = Wih;
|
||||||
|
Wi.low = Wil;
|
||||||
|
}
|
||||||
|
|
||||||
|
var chh = (eh & fh) ^ (~eh & gh);
|
||||||
|
var chl = (el & fl) ^ (~el & gl);
|
||||||
|
var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
|
||||||
|
var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
|
||||||
|
|
||||||
|
var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
|
||||||
|
var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
|
||||||
|
var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));
|
||||||
|
var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));
|
||||||
|
|
||||||
|
// t1 = h + sigma1 + ch + K[i] + W[i]
|
||||||
|
var Ki = K[i];
|
||||||
|
var Kih = Ki.high;
|
||||||
|
var Kil = Ki.low;
|
||||||
|
|
||||||
|
var t1l = hl + sigma1l;
|
||||||
|
var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
|
||||||
|
var t1l = t1l + chl;
|
||||||
|
var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
|
||||||
|
var t1l = t1l + Kil;
|
||||||
|
var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);
|
||||||
|
var t1l = t1l + Wil;
|
||||||
|
var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);
|
||||||
|
|
||||||
|
// t2 = sigma0 + maj
|
||||||
|
var t2l = sigma0l + majl;
|
||||||
|
var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
|
||||||
|
|
||||||
|
// Update working variables
|
||||||
|
hh = gh;
|
||||||
|
hl = gl;
|
||||||
|
gh = fh;
|
||||||
|
gl = fl;
|
||||||
|
fh = eh;
|
||||||
|
fl = el;
|
||||||
|
el = (dl + t1l) | 0;
|
||||||
|
eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
|
||||||
|
dh = ch;
|
||||||
|
dl = cl;
|
||||||
|
ch = bh;
|
||||||
|
cl = bl;
|
||||||
|
bh = ah;
|
||||||
|
bl = al;
|
||||||
|
al = (t1l + t2l) | 0;
|
||||||
|
ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Intermediate hash value
|
||||||
|
H0l = H0.low = (H0l + al);
|
||||||
|
H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));
|
||||||
|
H1l = H1.low = (H1l + bl);
|
||||||
|
H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));
|
||||||
|
H2l = H2.low = (H2l + cl);
|
||||||
|
H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));
|
||||||
|
H3l = H3.low = (H3l + dl);
|
||||||
|
H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));
|
||||||
|
H4l = H4.low = (H4l + el);
|
||||||
|
H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));
|
||||||
|
H5l = H5.low = (H5l + fl);
|
||||||
|
H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));
|
||||||
|
H6l = H6.low = (H6l + gl);
|
||||||
|
H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));
|
||||||
|
H7l = H7.low = (H7l + hl);
|
||||||
|
H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var data = this._data;
|
||||||
|
var dataWords = data.words;
|
||||||
|
|
||||||
|
var nBitsTotal = this._nDataBytes * 8;
|
||||||
|
var nBitsLeft = data.sigBytes * 8;
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
|
||||||
|
dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);
|
||||||
|
dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;
|
||||||
|
data.sigBytes = dataWords.length * 4;
|
||||||
|
|
||||||
|
// Hash final blocks
|
||||||
|
this._process();
|
||||||
|
|
||||||
|
// Convert hash to 32-bit word array before returning
|
||||||
|
var hash = this._hash.toX32();
|
||||||
|
|
||||||
|
// Return final computed hash
|
||||||
|
return hash;
|
||||||
|
},
|
||||||
|
|
||||||
|
clone: function () {
|
||||||
|
var clone = Hasher.clone.call(this);
|
||||||
|
clone._hash = this._hash.clone();
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
},
|
||||||
|
|
||||||
|
blockSize: 1024/32
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = CryptoJS.SHA512('message');
|
||||||
|
* var hash = CryptoJS.SHA512(wordArray);
|
||||||
|
*/
|
||||||
|
C.SHA512 = Hasher._createHelper(SHA512);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = CryptoJS.HmacSHA512(message, key);
|
||||||
|
*/
|
||||||
|
C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_x64 = C.x64;
|
||||||
|
var X64Word = C_x64.Word;
|
||||||
|
var X64WordArray = C_x64.WordArray;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
var SHA512 = C_algo.SHA512;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SHA-384 hash algorithm.
|
||||||
|
*/
|
||||||
|
var SHA384 = C_algo.SHA384 = SHA512.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
this._hash = new X64WordArray.init([
|
||||||
|
new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),
|
||||||
|
new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),
|
||||||
|
new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),
|
||||||
|
new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
var hash = SHA512._doFinalize.call(this);
|
||||||
|
|
||||||
|
hash.sigBytes -= 16;
|
||||||
|
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = CryptoJS.SHA384('message');
|
||||||
|
* var hash = CryptoJS.SHA384(wordArray);
|
||||||
|
*/
|
||||||
|
C.SHA384 = SHA512._createHelper(SHA384);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = CryptoJS.HmacSHA384(message, key);
|
||||||
|
*/
|
||||||
|
C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function (Math) {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var Hasher = C_lib.Hasher;
|
||||||
|
var C_x64 = C.x64;
|
||||||
|
var X64Word = C_x64.Word;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Constants tables
|
||||||
|
var RHO_OFFSETS = [];
|
||||||
|
var PI_INDEXES = [];
|
||||||
|
var ROUND_CONSTANTS = [];
|
||||||
|
|
||||||
|
// Compute Constants
|
||||||
|
(function () {
|
||||||
|
// Compute rho offset constants
|
||||||
|
var x = 1, y = 0;
|
||||||
|
for (var t = 0; t < 24; t++) {
|
||||||
|
RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;
|
||||||
|
|
||||||
|
var newX = y % 5;
|
||||||
|
var newY = (2 * x + 3 * y) % 5;
|
||||||
|
x = newX;
|
||||||
|
y = newY;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute pi index constants
|
||||||
|
for (var x = 0; x < 5; x++) {
|
||||||
|
for (var y = 0; y < 5; y++) {
|
||||||
|
PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute round constants
|
||||||
|
var LFSR = 0x01;
|
||||||
|
for (var i = 0; i < 24; i++) {
|
||||||
|
var roundConstantMsw = 0;
|
||||||
|
var roundConstantLsw = 0;
|
||||||
|
|
||||||
|
for (var j = 0; j < 7; j++) {
|
||||||
|
if (LFSR & 0x01) {
|
||||||
|
var bitPosition = (1 << j) - 1;
|
||||||
|
if (bitPosition < 32) {
|
||||||
|
roundConstantLsw ^= 1 << bitPosition;
|
||||||
|
} else /* if (bitPosition >= 32) */ {
|
||||||
|
roundConstantMsw ^= 1 << (bitPosition - 32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute next LFSR
|
||||||
|
if (LFSR & 0x80) {
|
||||||
|
// Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1
|
||||||
|
LFSR = (LFSR << 1) ^ 0x71;
|
||||||
|
} else {
|
||||||
|
LFSR <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
// Reusable objects for temporary values
|
||||||
|
var T = [];
|
||||||
|
(function () {
|
||||||
|
for (var i = 0; i < 25; i++) {
|
||||||
|
T[i] = X64Word.create();
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SHA-3 hash algorithm.
|
||||||
|
*/
|
||||||
|
var SHA3 = C_algo.SHA3 = Hasher.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*
|
||||||
|
* @property {number} outputLength
|
||||||
|
* The desired number of bits in the output hash.
|
||||||
|
* Only values permitted are: 224, 256, 384, 512.
|
||||||
|
* Default: 512
|
||||||
|
*/
|
||||||
|
cfg: Hasher.cfg.extend({
|
||||||
|
outputLength: 512
|
||||||
|
}),
|
||||||
|
|
||||||
|
_doReset: function () {
|
||||||
|
var state = this._state = []
|
||||||
|
for (var i = 0; i < 25; i++) {
|
||||||
|
state[i] = new X64Word.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var state = this._state;
|
||||||
|
var nBlockSizeLanes = this.blockSize / 2;
|
||||||
|
|
||||||
|
// Absorb
|
||||||
|
for (var i = 0; i < nBlockSizeLanes; i++) {
|
||||||
|
// Shortcuts
|
||||||
|
var M2i = M[offset + 2 * i];
|
||||||
|
var M2i1 = M[offset + 2 * i + 1];
|
||||||
|
|
||||||
|
// Swap endian
|
||||||
|
M2i = (
|
||||||
|
(((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
M2i1 = (
|
||||||
|
(((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Absorb message into state
|
||||||
|
var lane = state[i];
|
||||||
|
lane.high ^= M2i1;
|
||||||
|
lane.low ^= M2i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rounds
|
||||||
|
for (var round = 0; round < 24; round++) {
|
||||||
|
// Theta
|
||||||
|
for (var x = 0; x < 5; x++) {
|
||||||
|
// Mix column lanes
|
||||||
|
var tMsw = 0, tLsw = 0;
|
||||||
|
for (var y = 0; y < 5; y++) {
|
||||||
|
var lane = state[x + 5 * y];
|
||||||
|
tMsw ^= lane.high;
|
||||||
|
tLsw ^= lane.low;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Temporary values
|
||||||
|
var Tx = T[x];
|
||||||
|
Tx.high = tMsw;
|
||||||
|
Tx.low = tLsw;
|
||||||
|
}
|
||||||
|
for (var x = 0; x < 5; x++) {
|
||||||
|
// Shortcuts
|
||||||
|
var Tx4 = T[(x + 4) % 5];
|
||||||
|
var Tx1 = T[(x + 1) % 5];
|
||||||
|
var Tx1Msw = Tx1.high;
|
||||||
|
var Tx1Lsw = Tx1.low;
|
||||||
|
|
||||||
|
// Mix surrounding columns
|
||||||
|
var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));
|
||||||
|
var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));
|
||||||
|
for (var y = 0; y < 5; y++) {
|
||||||
|
var lane = state[x + 5 * y];
|
||||||
|
lane.high ^= tMsw;
|
||||||
|
lane.low ^= tLsw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rho Pi
|
||||||
|
for (var laneIndex = 1; laneIndex < 25; laneIndex++) {
|
||||||
|
var tMsw;
|
||||||
|
var tLsw;
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var lane = state[laneIndex];
|
||||||
|
var laneMsw = lane.high;
|
||||||
|
var laneLsw = lane.low;
|
||||||
|
var rhoOffset = RHO_OFFSETS[laneIndex];
|
||||||
|
|
||||||
|
// Rotate lanes
|
||||||
|
if (rhoOffset < 32) {
|
||||||
|
tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));
|
||||||
|
tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));
|
||||||
|
} else /* if (rhoOffset >= 32) */ {
|
||||||
|
tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));
|
||||||
|
tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transpose lanes
|
||||||
|
var TPiLane = T[PI_INDEXES[laneIndex]];
|
||||||
|
TPiLane.high = tMsw;
|
||||||
|
TPiLane.low = tLsw;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rho pi at x = y = 0
|
||||||
|
var T0 = T[0];
|
||||||
|
var state0 = state[0];
|
||||||
|
T0.high = state0.high;
|
||||||
|
T0.low = state0.low;
|
||||||
|
|
||||||
|
// Chi
|
||||||
|
for (var x = 0; x < 5; x++) {
|
||||||
|
for (var y = 0; y < 5; y++) {
|
||||||
|
// Shortcuts
|
||||||
|
var laneIndex = x + 5 * y;
|
||||||
|
var lane = state[laneIndex];
|
||||||
|
var TLane = T[laneIndex];
|
||||||
|
var Tx1Lane = T[((x + 1) % 5) + 5 * y];
|
||||||
|
var Tx2Lane = T[((x + 2) % 5) + 5 * y];
|
||||||
|
|
||||||
|
// Mix rows
|
||||||
|
lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);
|
||||||
|
lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iota
|
||||||
|
var lane = state[0];
|
||||||
|
var roundConstant = ROUND_CONSTANTS[round];
|
||||||
|
lane.high ^= roundConstant.high;
|
||||||
|
lane.low ^= roundConstant.low;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var data = this._data;
|
||||||
|
var dataWords = data.words;
|
||||||
|
var nBitsTotal = this._nDataBytes * 8;
|
||||||
|
var nBitsLeft = data.sigBytes * 8;
|
||||||
|
var blockSizeBits = this.blockSize * 32;
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);
|
||||||
|
dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;
|
||||||
|
data.sigBytes = dataWords.length * 4;
|
||||||
|
|
||||||
|
// Hash final blocks
|
||||||
|
this._process();
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var state = this._state;
|
||||||
|
var outputLengthBytes = this.cfg.outputLength / 8;
|
||||||
|
var outputLengthLanes = outputLengthBytes / 8;
|
||||||
|
|
||||||
|
// Squeeze
|
||||||
|
var hashWords = [];
|
||||||
|
for (var i = 0; i < outputLengthLanes; i++) {
|
||||||
|
// Shortcuts
|
||||||
|
var lane = state[i];
|
||||||
|
var laneMsw = lane.high;
|
||||||
|
var laneLsw = lane.low;
|
||||||
|
|
||||||
|
// Swap endian
|
||||||
|
laneMsw = (
|
||||||
|
(((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
laneLsw = (
|
||||||
|
(((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Squeeze state to retrieve hash
|
||||||
|
hashWords.push(laneLsw);
|
||||||
|
hashWords.push(laneMsw);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return final computed hash
|
||||||
|
return new WordArray.init(hashWords, outputLengthBytes);
|
||||||
|
},
|
||||||
|
|
||||||
|
clone: function () {
|
||||||
|
var clone = Hasher.clone.call(this);
|
||||||
|
|
||||||
|
var state = clone._state = this._state.slice(0);
|
||||||
|
for (var i = 0; i < 25; i++) {
|
||||||
|
state[i] = state[i].clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = CryptoJS.SHA3('message');
|
||||||
|
* var hash = CryptoJS.SHA3(wordArray);
|
||||||
|
*/
|
||||||
|
C.SHA3 = Hasher._createHelper(SHA3);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = CryptoJS.HmacSHA3(message, key);
|
||||||
|
*/
|
||||||
|
C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
|
||||||
|
}(Math));
|
||||||
|
|
||||||
|
|
||||||
|
/** @preserve
|
||||||
|
(c) 2012 by Cédric Mesnil. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||||
|
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (Math) {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var Hasher = C_lib.Hasher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Constants table
|
||||||
|
var _zl = WordArray.create([
|
||||||
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||||
|
7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
|
||||||
|
3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
|
||||||
|
1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
|
||||||
|
4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);
|
||||||
|
var _zr = WordArray.create([
|
||||||
|
5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
|
||||||
|
6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
|
||||||
|
15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
|
||||||
|
8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
|
||||||
|
12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);
|
||||||
|
var _sl = WordArray.create([
|
||||||
|
11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
|
||||||
|
7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
|
||||||
|
11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
|
||||||
|
11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
|
||||||
|
9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);
|
||||||
|
var _sr = WordArray.create([
|
||||||
|
8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
|
||||||
|
9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
|
||||||
|
9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
|
||||||
|
15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
|
||||||
|
8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);
|
||||||
|
|
||||||
|
var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);
|
||||||
|
var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RIPEMD160 hash algorithm.
|
||||||
|
*/
|
||||||
|
var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
|
||||||
|
// Swap endian
|
||||||
|
for (var i = 0; i < 16; i++) {
|
||||||
|
// Shortcuts
|
||||||
|
var offset_i = offset + i;
|
||||||
|
var M_offset_i = M[offset_i];
|
||||||
|
|
||||||
|
// Swap
|
||||||
|
M[offset_i] = (
|
||||||
|
(((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// Shortcut
|
||||||
|
var H = this._hash.words;
|
||||||
|
var hl = _hl.words;
|
||||||
|
var hr = _hr.words;
|
||||||
|
var zl = _zl.words;
|
||||||
|
var zr = _zr.words;
|
||||||
|
var sl = _sl.words;
|
||||||
|
var sr = _sr.words;
|
||||||
|
|
||||||
|
// Working variables
|
||||||
|
var al, bl, cl, dl, el;
|
||||||
|
var ar, br, cr, dr, er;
|
||||||
|
|
||||||
|
ar = al = H[0];
|
||||||
|
br = bl = H[1];
|
||||||
|
cr = cl = H[2];
|
||||||
|
dr = dl = H[3];
|
||||||
|
er = el = H[4];
|
||||||
|
// Computation
|
||||||
|
var t;
|
||||||
|
for (var i = 0; i < 80; i += 1) {
|
||||||
|
t = (al + M[offset+zl[i]])|0;
|
||||||
|
if (i<16){
|
||||||
|
t += f1(bl,cl,dl) + hl[0];
|
||||||
|
} else if (i<32) {
|
||||||
|
t += f2(bl,cl,dl) + hl[1];
|
||||||
|
} else if (i<48) {
|
||||||
|
t += f3(bl,cl,dl) + hl[2];
|
||||||
|
} else if (i<64) {
|
||||||
|
t += f4(bl,cl,dl) + hl[3];
|
||||||
|
} else {// if (i<80) {
|
||||||
|
t += f5(bl,cl,dl) + hl[4];
|
||||||
|
}
|
||||||
|
t = t|0;
|
||||||
|
t = rotl(t,sl[i]);
|
||||||
|
t = (t+el)|0;
|
||||||
|
al = el;
|
||||||
|
el = dl;
|
||||||
|
dl = rotl(cl, 10);
|
||||||
|
cl = bl;
|
||||||
|
bl = t;
|
||||||
|
|
||||||
|
t = (ar + M[offset+zr[i]])|0;
|
||||||
|
if (i<16){
|
||||||
|
t += f5(br,cr,dr) + hr[0];
|
||||||
|
} else if (i<32) {
|
||||||
|
t += f4(br,cr,dr) + hr[1];
|
||||||
|
} else if (i<48) {
|
||||||
|
t += f3(br,cr,dr) + hr[2];
|
||||||
|
} else if (i<64) {
|
||||||
|
t += f2(br,cr,dr) + hr[3];
|
||||||
|
} else {// if (i<80) {
|
||||||
|
t += f1(br,cr,dr) + hr[4];
|
||||||
|
}
|
||||||
|
t = t|0;
|
||||||
|
t = rotl(t,sr[i]) ;
|
||||||
|
t = (t+er)|0;
|
||||||
|
ar = er;
|
||||||
|
er = dr;
|
||||||
|
dr = rotl(cr, 10);
|
||||||
|
cr = br;
|
||||||
|
br = t;
|
||||||
|
}
|
||||||
|
// Intermediate hash value
|
||||||
|
t = (H[1] + cl + dr)|0;
|
||||||
|
H[1] = (H[2] + dl + er)|0;
|
||||||
|
H[2] = (H[3] + el + ar)|0;
|
||||||
|
H[3] = (H[4] + al + br)|0;
|
||||||
|
H[4] = (H[0] + bl + cr)|0;
|
||||||
|
H[0] = t;
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var data = this._data;
|
||||||
|
var dataWords = data.words;
|
||||||
|
|
||||||
|
var nBitsTotal = this._nDataBytes * 8;
|
||||||
|
var nBitsLeft = data.sigBytes * 8;
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
|
||||||
|
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
|
||||||
|
(((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
|
||||||
|
);
|
||||||
|
data.sigBytes = (dataWords.length + 1) * 4;
|
||||||
|
|
||||||
|
// Hash final blocks
|
||||||
|
this._process();
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var hash = this._hash;
|
||||||
|
var H = hash.words;
|
||||||
|
|
||||||
|
// Swap endian
|
||||||
|
for (var i = 0; i < 5; i++) {
|
||||||
|
// Shortcut
|
||||||
|
var H_i = H[i];
|
||||||
|
|
||||||
|
// Swap
|
||||||
|
H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return final computed hash
|
||||||
|
return hash;
|
||||||
|
},
|
||||||
|
|
||||||
|
clone: function () {
|
||||||
|
var clone = Hasher.clone.call(this);
|
||||||
|
clone._hash = this._hash.clone();
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function f1(x, y, z) {
|
||||||
|
return ((x) ^ (y) ^ (z));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function f2(x, y, z) {
|
||||||
|
return (((x)&(y)) | ((~x)&(z)));
|
||||||
|
}
|
||||||
|
|
||||||
|
function f3(x, y, z) {
|
||||||
|
return (((x) | (~(y))) ^ (z));
|
||||||
|
}
|
||||||
|
|
||||||
|
function f4(x, y, z) {
|
||||||
|
return (((x) & (z)) | ((y)&(~(z))));
|
||||||
|
}
|
||||||
|
|
||||||
|
function f5(x, y, z) {
|
||||||
|
return ((x) ^ ((y) |(~(z))));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function rotl(x,n) {
|
||||||
|
return (x<<n) | (x>>>(32-n));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the hasher's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The hash.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hash = CryptoJS.RIPEMD160('message');
|
||||||
|
* var hash = CryptoJS.RIPEMD160(wordArray);
|
||||||
|
*/
|
||||||
|
C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut function to the HMAC's object interface.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} message The message to hash.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = CryptoJS.HmacRIPEMD160(message, key);
|
||||||
|
*/
|
||||||
|
C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
|
||||||
|
}(Math));
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var Base = C_lib.Base;
|
||||||
|
var C_enc = C.enc;
|
||||||
|
var Utf8 = C_enc.Utf8;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HMAC algorithm.
|
||||||
|
*/
|
||||||
|
var HMAC = C_algo.HMAC = Base.extend({
|
||||||
|
/**
|
||||||
|
* Initializes a newly created HMAC.
|
||||||
|
*
|
||||||
|
* @param {Hasher} hasher The hash algorithm to use.
|
||||||
|
* @param {WordArray|string} key The secret key.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
|
||||||
|
*/
|
||||||
|
init: function (hasher, key) {
|
||||||
|
// Init hasher
|
||||||
|
hasher = this._hasher = new hasher.init();
|
||||||
|
|
||||||
|
// Convert string to WordArray, else assume WordArray already
|
||||||
|
if (typeof key == 'string') {
|
||||||
|
key = Utf8.parse(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var hasherBlockSize = hasher.blockSize;
|
||||||
|
var hasherBlockSizeBytes = hasherBlockSize * 4;
|
||||||
|
|
||||||
|
// Allow arbitrary length keys
|
||||||
|
if (key.sigBytes > hasherBlockSizeBytes) {
|
||||||
|
key = hasher.finalize(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clamp excess bits
|
||||||
|
key.clamp();
|
||||||
|
|
||||||
|
// Clone key for inner and outer pads
|
||||||
|
var oKey = this._oKey = key.clone();
|
||||||
|
var iKey = this._iKey = key.clone();
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var oKeyWords = oKey.words;
|
||||||
|
var iKeyWords = iKey.words;
|
||||||
|
|
||||||
|
// XOR keys with pad constants
|
||||||
|
for (var i = 0; i < hasherBlockSize; i++) {
|
||||||
|
oKeyWords[i] ^= 0x5c5c5c5c;
|
||||||
|
iKeyWords[i] ^= 0x36363636;
|
||||||
|
}
|
||||||
|
oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
|
||||||
|
|
||||||
|
// Set initial values
|
||||||
|
this.reset();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets this HMAC to its initial state.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* hmacHasher.reset();
|
||||||
|
*/
|
||||||
|
reset: function () {
|
||||||
|
// Shortcut
|
||||||
|
var hasher = this._hasher;
|
||||||
|
|
||||||
|
// Reset
|
||||||
|
hasher.reset();
|
||||||
|
hasher.update(this._iKey);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates this HMAC with a message.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} messageUpdate The message to append.
|
||||||
|
*
|
||||||
|
* @return {HMAC} This HMAC instance.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* hmacHasher.update('message');
|
||||||
|
* hmacHasher.update(wordArray);
|
||||||
|
*/
|
||||||
|
update: function (messageUpdate) {
|
||||||
|
this._hasher.update(messageUpdate);
|
||||||
|
|
||||||
|
// Chainable
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finalizes the HMAC computation.
|
||||||
|
* Note that the finalize operation is effectively a destructive, read-once operation.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} messageUpdate (Optional) A final message update.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The HMAC.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hmac = hmacHasher.finalize();
|
||||||
|
* var hmac = hmacHasher.finalize('message');
|
||||||
|
* var hmac = hmacHasher.finalize(wordArray);
|
||||||
|
*/
|
||||||
|
finalize: function (messageUpdate) {
|
||||||
|
// Shortcut
|
||||||
|
var hasher = this._hasher;
|
||||||
|
|
||||||
|
// Compute HMAC
|
||||||
|
var innerHash = hasher.finalize(messageUpdate);
|
||||||
|
hasher.reset();
|
||||||
|
var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));
|
||||||
|
|
||||||
|
return hmac;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var Base = C_lib.Base;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
var SHA1 = C_algo.SHA1;
|
||||||
|
var HMAC = C_algo.HMAC;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Password-Based Key Derivation Function 2 algorithm.
|
||||||
|
*/
|
||||||
|
var PBKDF2 = C_algo.PBKDF2 = Base.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*
|
||||||
|
* @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
|
||||||
|
* @property {Hasher} hasher The hasher to use. Default: SHA1
|
||||||
|
* @property {number} iterations The number of iterations to perform. Default: 1
|
||||||
|
*/
|
||||||
|
cfg: Base.extend({
|
||||||
|
keySize: 128/32,
|
||||||
|
hasher: SHA1,
|
||||||
|
iterations: 1
|
||||||
|
}),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a newly created key derivation function.
|
||||||
|
*
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for the derivation.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var kdf = CryptoJS.algo.PBKDF2.create();
|
||||||
|
* var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
|
||||||
|
* var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
|
||||||
|
*/
|
||||||
|
init: function (cfg) {
|
||||||
|
this.cfg = this.cfg.extend(cfg);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Computes the Password-Based Key Derivation Function 2.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} password The password.
|
||||||
|
* @param {WordArray|string} salt A salt.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The derived key.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var key = kdf.compute(password, salt);
|
||||||
|
*/
|
||||||
|
compute: function (password, salt) {
|
||||||
|
// Shortcut
|
||||||
|
var cfg = this.cfg;
|
||||||
|
|
||||||
|
// Init HMAC
|
||||||
|
var hmac = HMAC.create(cfg.hasher, password);
|
||||||
|
|
||||||
|
// Initial values
|
||||||
|
var derivedKey = WordArray.create();
|
||||||
|
var blockIndex = WordArray.create([0x00000001]);
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var derivedKeyWords = derivedKey.words;
|
||||||
|
var blockIndexWords = blockIndex.words;
|
||||||
|
var keySize = cfg.keySize;
|
||||||
|
var iterations = cfg.iterations;
|
||||||
|
|
||||||
|
// Generate key
|
||||||
|
while (derivedKeyWords.length < keySize) {
|
||||||
|
var block = hmac.update(salt).finalize(blockIndex);
|
||||||
|
hmac.reset();
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var blockWords = block.words;
|
||||||
|
var blockWordsLength = blockWords.length;
|
||||||
|
|
||||||
|
// Iterations
|
||||||
|
var intermediate = block;
|
||||||
|
for (var i = 1; i < iterations; i++) {
|
||||||
|
intermediate = hmac.finalize(intermediate);
|
||||||
|
hmac.reset();
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var intermediateWords = intermediate.words;
|
||||||
|
|
||||||
|
// XOR intermediate with block
|
||||||
|
for (var j = 0; j < blockWordsLength; j++) {
|
||||||
|
blockWords[j] ^= intermediateWords[j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
derivedKey.concat(block);
|
||||||
|
blockIndexWords[0]++;
|
||||||
|
}
|
||||||
|
derivedKey.sigBytes = keySize * 4;
|
||||||
|
|
||||||
|
return derivedKey;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Computes the Password-Based Key Derivation Function 2.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} password The password.
|
||||||
|
* @param {WordArray|string} salt A salt.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this computation.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The derived key.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var key = CryptoJS.PBKDF2(password, salt);
|
||||||
|
* var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });
|
||||||
|
* var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });
|
||||||
|
*/
|
||||||
|
C.PBKDF2 = function (password, salt, cfg) {
|
||||||
|
return PBKDF2.create(cfg).compute(password, salt);
|
||||||
|
};
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var Base = C_lib.Base;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
var MD5 = C_algo.MD5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This key derivation function is meant to conform with EVP_BytesToKey.
|
||||||
|
* www.openssl.org/docs/crypto/EVP_BytesToKey.html
|
||||||
|
*/
|
||||||
|
var EvpKDF = C_algo.EvpKDF = Base.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*
|
||||||
|
* @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
|
||||||
|
* @property {Hasher} hasher The hash algorithm to use. Default: MD5
|
||||||
|
* @property {number} iterations The number of iterations to perform. Default: 1
|
||||||
|
*/
|
||||||
|
cfg: Base.extend({
|
||||||
|
keySize: 128/32,
|
||||||
|
hasher: MD5,
|
||||||
|
iterations: 1
|
||||||
|
}),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a newly created key derivation function.
|
||||||
|
*
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for the derivation.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var kdf = CryptoJS.algo.EvpKDF.create();
|
||||||
|
* var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
|
||||||
|
* var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
|
||||||
|
*/
|
||||||
|
init: function (cfg) {
|
||||||
|
this.cfg = this.cfg.extend(cfg);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Derives a key from a password.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} password The password.
|
||||||
|
* @param {WordArray|string} salt A salt.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The derived key.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var key = kdf.compute(password, salt);
|
||||||
|
*/
|
||||||
|
compute: function (password, salt) {
|
||||||
|
var block;
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var cfg = this.cfg;
|
||||||
|
|
||||||
|
// Init hasher
|
||||||
|
var hasher = cfg.hasher.create();
|
||||||
|
|
||||||
|
// Initial values
|
||||||
|
var derivedKey = WordArray.create();
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var derivedKeyWords = derivedKey.words;
|
||||||
|
var keySize = cfg.keySize;
|
||||||
|
var iterations = cfg.iterations;
|
||||||
|
|
||||||
|
// Generate key
|
||||||
|
while (derivedKeyWords.length < keySize) {
|
||||||
|
if (block) {
|
||||||
|
hasher.update(block);
|
||||||
|
}
|
||||||
|
block = hasher.update(password).finalize(salt);
|
||||||
|
hasher.reset();
|
||||||
|
|
||||||
|
// Iterations
|
||||||
|
for (var i = 1; i < iterations; i++) {
|
||||||
|
block = hasher.finalize(block);
|
||||||
|
hasher.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
derivedKey.concat(block);
|
||||||
|
}
|
||||||
|
derivedKey.sigBytes = keySize * 4;
|
||||||
|
|
||||||
|
return derivedKey;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Derives a key from a password.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} password The password.
|
||||||
|
* @param {WordArray|string} salt A salt.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this computation.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The derived key.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var key = CryptoJS.EvpKDF(password, salt);
|
||||||
|
* var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });
|
||||||
|
* var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });
|
||||||
|
*/
|
||||||
|
C.EvpKDF = function (password, salt, cfg) {
|
||||||
|
return EvpKDF.create(cfg).compute(password, salt);
|
||||||
|
};
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cipher core components.
|
||||||
|
*/
|
||||||
|
CryptoJS.lib.Cipher || (function (undefined) {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var Base = C_lib.Base;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
|
||||||
|
var C_enc = C.enc;
|
||||||
|
var Utf8 = C_enc.Utf8;
|
||||||
|
var Base64 = C_enc.Base64;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
var EvpKDF = C_algo.EvpKDF;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract base cipher template.
|
||||||
|
*
|
||||||
|
* @property {number} keySize This cipher's key size. Default: 4 (128 bits)
|
||||||
|
* @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)
|
||||||
|
* @property {number} _ENC_XFORM_MODE A constant representing encryption mode.
|
||||||
|
* @property {number} _DEC_XFORM_MODE A constant representing decryption mode.
|
||||||
|
*/
|
||||||
|
var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*
|
||||||
|
* @property {WordArray} iv The IV to use for this operation.
|
||||||
|
*/
|
||||||
|
cfg: Base.extend(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates this cipher in encryption mode.
|
||||||
|
*
|
||||||
|
* @param {WordArray} key The key.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
||||||
|
*
|
||||||
|
* @return {Cipher} A cipher instance.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
|
||||||
|
*/
|
||||||
|
createEncryptor: function (key, cfg) {
|
||||||
|
return this.create(this._ENC_XFORM_MODE, key, cfg);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates this cipher in decryption mode.
|
||||||
|
*
|
||||||
|
* @param {WordArray} key The key.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
||||||
|
*
|
||||||
|
* @return {Cipher} A cipher instance.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
|
||||||
|
*/
|
||||||
|
createDecryptor: function (key, cfg) {
|
||||||
|
return this.create(this._DEC_XFORM_MODE, key, cfg);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a newly created cipher.
|
||||||
|
*
|
||||||
|
* @param {number} xformMode Either the encryption or decryption transormation mode constant.
|
||||||
|
* @param {WordArray} key The key.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
|
||||||
|
*/
|
||||||
|
init: function (xformMode, key, cfg) {
|
||||||
|
// Apply config defaults
|
||||||
|
this.cfg = this.cfg.extend(cfg);
|
||||||
|
|
||||||
|
// Store transform mode and key
|
||||||
|
this._xformMode = xformMode;
|
||||||
|
this._key = key;
|
||||||
|
|
||||||
|
// Set initial values
|
||||||
|
this.reset();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets this cipher to its initial state.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* cipher.reset();
|
||||||
|
*/
|
||||||
|
reset: function () {
|
||||||
|
// Reset data buffer
|
||||||
|
BufferedBlockAlgorithm.reset.call(this);
|
||||||
|
|
||||||
|
// Perform concrete-cipher logic
|
||||||
|
this._doReset();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds data to be encrypted or decrypted.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The data after processing.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var encrypted = cipher.process('data');
|
||||||
|
* var encrypted = cipher.process(wordArray);
|
||||||
|
*/
|
||||||
|
process: function (dataUpdate) {
|
||||||
|
// Append
|
||||||
|
this._append(dataUpdate);
|
||||||
|
|
||||||
|
// Process available blocks
|
||||||
|
return this._process();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finalizes the encryption or decryption process.
|
||||||
|
* Note that the finalize operation is effectively a destructive, read-once operation.
|
||||||
|
*
|
||||||
|
* @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The data after final processing.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var encrypted = cipher.finalize();
|
||||||
|
* var encrypted = cipher.finalize('data');
|
||||||
|
* var encrypted = cipher.finalize(wordArray);
|
||||||
|
*/
|
||||||
|
finalize: function (dataUpdate) {
|
||||||
|
// Final data update
|
||||||
|
if (dataUpdate) {
|
||||||
|
this._append(dataUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform concrete-cipher logic
|
||||||
|
var finalProcessedData = this._doFinalize();
|
||||||
|
|
||||||
|
return finalProcessedData;
|
||||||
|
},
|
||||||
|
|
||||||
|
keySize: 128/32,
|
||||||
|
|
||||||
|
ivSize: 128/32,
|
||||||
|
|
||||||
|
_ENC_XFORM_MODE: 1,
|
||||||
|
|
||||||
|
_DEC_XFORM_MODE: 2,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates shortcut functions to a cipher's object interface.
|
||||||
|
*
|
||||||
|
* @param {Cipher} cipher The cipher to create a helper for.
|
||||||
|
*
|
||||||
|
* @return {Object} An object with encrypt and decrypt shortcut functions.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
|
||||||
|
*/
|
||||||
|
_createHelper: (function () {
|
||||||
|
function selectCipherStrategy(key) {
|
||||||
|
if (typeof key == 'string') {
|
||||||
|
return PasswordBasedCipher;
|
||||||
|
} else {
|
||||||
|
return SerializableCipher;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return function (cipher) {
|
||||||
|
return {
|
||||||
|
encrypt: function (message, key, cfg) {
|
||||||
|
return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
|
||||||
|
},
|
||||||
|
|
||||||
|
decrypt: function (ciphertext, key, cfg) {
|
||||||
|
return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}())
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract base stream cipher template.
|
||||||
|
*
|
||||||
|
* @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)
|
||||||
|
*/
|
||||||
|
var StreamCipher = C_lib.StreamCipher = Cipher.extend({
|
||||||
|
_doFinalize: function () {
|
||||||
|
// Process partial blocks
|
||||||
|
var finalProcessedBlocks = this._process(!!'flush');
|
||||||
|
|
||||||
|
return finalProcessedBlocks;
|
||||||
|
},
|
||||||
|
|
||||||
|
blockSize: 1
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mode namespace.
|
||||||
|
*/
|
||||||
|
var C_mode = C.mode = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract base block cipher mode template.
|
||||||
|
*/
|
||||||
|
var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
|
||||||
|
/**
|
||||||
|
* Creates this mode for encryption.
|
||||||
|
*
|
||||||
|
* @param {Cipher} cipher A block cipher instance.
|
||||||
|
* @param {Array} iv The IV words.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
|
||||||
|
*/
|
||||||
|
createEncryptor: function (cipher, iv) {
|
||||||
|
return this.Encryptor.create(cipher, iv);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates this mode for decryption.
|
||||||
|
*
|
||||||
|
* @param {Cipher} cipher A block cipher instance.
|
||||||
|
* @param {Array} iv The IV words.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
|
||||||
|
*/
|
||||||
|
createDecryptor: function (cipher, iv) {
|
||||||
|
return this.Decryptor.create(cipher, iv);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a newly created mode.
|
||||||
|
*
|
||||||
|
* @param {Cipher} cipher A block cipher instance.
|
||||||
|
* @param {Array} iv The IV words.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
|
||||||
|
*/
|
||||||
|
init: function (cipher, iv) {
|
||||||
|
this._cipher = cipher;
|
||||||
|
this._iv = iv;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cipher Block Chaining mode.
|
||||||
|
*/
|
||||||
|
var CBC = C_mode.CBC = (function () {
|
||||||
|
/**
|
||||||
|
* Abstract base CBC mode.
|
||||||
|
*/
|
||||||
|
var CBC = BlockCipherMode.extend();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CBC encryptor.
|
||||||
|
*/
|
||||||
|
CBC.Encryptor = CBC.extend({
|
||||||
|
/**
|
||||||
|
* Processes the data block at offset.
|
||||||
|
*
|
||||||
|
* @param {Array} words The data words to operate on.
|
||||||
|
* @param {number} offset The offset where the block starts.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* mode.processBlock(data.words, offset);
|
||||||
|
*/
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var cipher = this._cipher;
|
||||||
|
var blockSize = cipher.blockSize;
|
||||||
|
|
||||||
|
// XOR and encrypt
|
||||||
|
xorBlock.call(this, words, offset, blockSize);
|
||||||
|
cipher.encryptBlock(words, offset);
|
||||||
|
|
||||||
|
// Remember this block to use with next block
|
||||||
|
this._prevBlock = words.slice(offset, offset + blockSize);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CBC decryptor.
|
||||||
|
*/
|
||||||
|
CBC.Decryptor = CBC.extend({
|
||||||
|
/**
|
||||||
|
* Processes the data block at offset.
|
||||||
|
*
|
||||||
|
* @param {Array} words The data words to operate on.
|
||||||
|
* @param {number} offset The offset where the block starts.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* mode.processBlock(data.words, offset);
|
||||||
|
*/
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var cipher = this._cipher;
|
||||||
|
var blockSize = cipher.blockSize;
|
||||||
|
|
||||||
|
// Remember this block to use with next block
|
||||||
|
var thisBlock = words.slice(offset, offset + blockSize);
|
||||||
|
|
||||||
|
// Decrypt and XOR
|
||||||
|
cipher.decryptBlock(words, offset);
|
||||||
|
xorBlock.call(this, words, offset, blockSize);
|
||||||
|
|
||||||
|
// This block becomes the previous block
|
||||||
|
this._prevBlock = thisBlock;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function xorBlock(words, offset, blockSize) {
|
||||||
|
var block;
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var iv = this._iv;
|
||||||
|
|
||||||
|
// Choose mixing block
|
||||||
|
if (iv) {
|
||||||
|
block = iv;
|
||||||
|
|
||||||
|
// Remove IV for subsequent blocks
|
||||||
|
this._iv = undefined;
|
||||||
|
} else {
|
||||||
|
block = this._prevBlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
// XOR blocks
|
||||||
|
for (var i = 0; i < blockSize; i++) {
|
||||||
|
words[offset + i] ^= block[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return CBC;
|
||||||
|
}());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Padding namespace.
|
||||||
|
*/
|
||||||
|
var C_pad = C.pad = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PKCS #5/7 padding strategy.
|
||||||
|
*/
|
||||||
|
var Pkcs7 = C_pad.Pkcs7 = {
|
||||||
|
/**
|
||||||
|
* Pads data using the algorithm defined in PKCS #5/7.
|
||||||
|
*
|
||||||
|
* @param {WordArray} data The data to pad.
|
||||||
|
* @param {number} blockSize The multiple that the data should be padded to.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* CryptoJS.pad.Pkcs7.pad(wordArray, 4);
|
||||||
|
*/
|
||||||
|
pad: function (data, blockSize) {
|
||||||
|
// Shortcut
|
||||||
|
var blockSizeBytes = blockSize * 4;
|
||||||
|
|
||||||
|
// Count padding bytes
|
||||||
|
var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
|
||||||
|
|
||||||
|
// Create padding word
|
||||||
|
var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;
|
||||||
|
|
||||||
|
// Create padding
|
||||||
|
var paddingWords = [];
|
||||||
|
for (var i = 0; i < nPaddingBytes; i += 4) {
|
||||||
|
paddingWords.push(paddingWord);
|
||||||
|
}
|
||||||
|
var padding = WordArray.create(paddingWords, nPaddingBytes);
|
||||||
|
|
||||||
|
// Add padding
|
||||||
|
data.concat(padding);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unpads data that had been padded using the algorithm defined in PKCS #5/7.
|
||||||
|
*
|
||||||
|
* @param {WordArray} data The data to unpad.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* CryptoJS.pad.Pkcs7.unpad(wordArray);
|
||||||
|
*/
|
||||||
|
unpad: function (data) {
|
||||||
|
// Get number of padding bytes from last byte
|
||||||
|
var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
|
||||||
|
|
||||||
|
// Remove padding
|
||||||
|
data.sigBytes -= nPaddingBytes;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract base block cipher template.
|
||||||
|
*
|
||||||
|
* @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)
|
||||||
|
*/
|
||||||
|
var BlockCipher = C_lib.BlockCipher = Cipher.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*
|
||||||
|
* @property {Mode} mode The block mode to use. Default: CBC
|
||||||
|
* @property {Padding} padding The padding strategy to use. Default: Pkcs7
|
||||||
|
*/
|
||||||
|
cfg: Cipher.cfg.extend({
|
||||||
|
mode: CBC,
|
||||||
|
padding: Pkcs7
|
||||||
|
}),
|
||||||
|
|
||||||
|
reset: function () {
|
||||||
|
var modeCreator;
|
||||||
|
|
||||||
|
// Reset cipher
|
||||||
|
Cipher.reset.call(this);
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var cfg = this.cfg;
|
||||||
|
var iv = cfg.iv;
|
||||||
|
var mode = cfg.mode;
|
||||||
|
|
||||||
|
// Reset block mode
|
||||||
|
if (this._xformMode == this._ENC_XFORM_MODE) {
|
||||||
|
modeCreator = mode.createEncryptor;
|
||||||
|
} else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
|
||||||
|
modeCreator = mode.createDecryptor;
|
||||||
|
// Keep at least one block in the buffer for unpadding
|
||||||
|
this._minBufferSize = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._mode && this._mode.__creator == modeCreator) {
|
||||||
|
this._mode.init(this, iv && iv.words);
|
||||||
|
} else {
|
||||||
|
this._mode = modeCreator.call(mode, this, iv && iv.words);
|
||||||
|
this._mode.__creator = modeCreator;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (words, offset) {
|
||||||
|
this._mode.processBlock(words, offset);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doFinalize: function () {
|
||||||
|
var finalProcessedBlocks;
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var padding = this.cfg.padding;
|
||||||
|
|
||||||
|
// Finalize
|
||||||
|
if (this._xformMode == this._ENC_XFORM_MODE) {
|
||||||
|
// Pad data
|
||||||
|
padding.pad(this._data, this.blockSize);
|
||||||
|
|
||||||
|
// Process final blocks
|
||||||
|
finalProcessedBlocks = this._process(!!'flush');
|
||||||
|
} else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
|
||||||
|
// Process final blocks
|
||||||
|
finalProcessedBlocks = this._process(!!'flush');
|
||||||
|
|
||||||
|
// Unpad data
|
||||||
|
padding.unpad(finalProcessedBlocks);
|
||||||
|
}
|
||||||
|
|
||||||
|
return finalProcessedBlocks;
|
||||||
|
},
|
||||||
|
|
||||||
|
blockSize: 128/32
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A collection of cipher parameters.
|
||||||
|
*
|
||||||
|
* @property {WordArray} ciphertext The raw ciphertext.
|
||||||
|
* @property {WordArray} key The key to this ciphertext.
|
||||||
|
* @property {WordArray} iv The IV used in the ciphering operation.
|
||||||
|
* @property {WordArray} salt The salt used with a key derivation function.
|
||||||
|
* @property {Cipher} algorithm The cipher algorithm.
|
||||||
|
* @property {Mode} mode The block mode used in the ciphering operation.
|
||||||
|
* @property {Padding} padding The padding scheme used in the ciphering operation.
|
||||||
|
* @property {number} blockSize The block size of the cipher.
|
||||||
|
* @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.
|
||||||
|
*/
|
||||||
|
var CipherParams = C_lib.CipherParams = Base.extend({
|
||||||
|
/**
|
||||||
|
* Initializes a newly created cipher params object.
|
||||||
|
*
|
||||||
|
* @param {Object} cipherParams An object with any of the possible cipher parameters.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var cipherParams = CryptoJS.lib.CipherParams.create({
|
||||||
|
* ciphertext: ciphertextWordArray,
|
||||||
|
* key: keyWordArray,
|
||||||
|
* iv: ivWordArray,
|
||||||
|
* salt: saltWordArray,
|
||||||
|
* algorithm: CryptoJS.algo.AES,
|
||||||
|
* mode: CryptoJS.mode.CBC,
|
||||||
|
* padding: CryptoJS.pad.PKCS7,
|
||||||
|
* blockSize: 4,
|
||||||
|
* formatter: CryptoJS.format.OpenSSL
|
||||||
|
* });
|
||||||
|
*/
|
||||||
|
init: function (cipherParams) {
|
||||||
|
this.mixIn(cipherParams);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this cipher params object to a string.
|
||||||
|
*
|
||||||
|
* @param {Format} formatter (Optional) The formatting strategy to use.
|
||||||
|
*
|
||||||
|
* @return {string} The stringified cipher params.
|
||||||
|
*
|
||||||
|
* @throws Error If neither the formatter nor the default formatter is set.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var string = cipherParams + '';
|
||||||
|
* var string = cipherParams.toString();
|
||||||
|
* var string = cipherParams.toString(CryptoJS.format.OpenSSL);
|
||||||
|
*/
|
||||||
|
toString: function (formatter) {
|
||||||
|
return (formatter || this.formatter).stringify(this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format namespace.
|
||||||
|
*/
|
||||||
|
var C_format = C.format = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OpenSSL formatting strategy.
|
||||||
|
*/
|
||||||
|
var OpenSSLFormatter = C_format.OpenSSL = {
|
||||||
|
/**
|
||||||
|
* Converts a cipher params object to an OpenSSL-compatible string.
|
||||||
|
*
|
||||||
|
* @param {CipherParams} cipherParams The cipher params object.
|
||||||
|
*
|
||||||
|
* @return {string} The OpenSSL-compatible string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
|
||||||
|
*/
|
||||||
|
stringify: function (cipherParams) {
|
||||||
|
var wordArray;
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var ciphertext = cipherParams.ciphertext;
|
||||||
|
var salt = cipherParams.salt;
|
||||||
|
|
||||||
|
// Format
|
||||||
|
if (salt) {
|
||||||
|
wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);
|
||||||
|
} else {
|
||||||
|
wordArray = ciphertext;
|
||||||
|
}
|
||||||
|
|
||||||
|
return wordArray.toString(Base64);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts an OpenSSL-compatible string to a cipher params object.
|
||||||
|
*
|
||||||
|
* @param {string} openSSLStr The OpenSSL-compatible string.
|
||||||
|
*
|
||||||
|
* @return {CipherParams} The cipher params object.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
|
||||||
|
*/
|
||||||
|
parse: function (openSSLStr) {
|
||||||
|
var salt;
|
||||||
|
|
||||||
|
// Parse base64
|
||||||
|
var ciphertext = Base64.parse(openSSLStr);
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var ciphertextWords = ciphertext.words;
|
||||||
|
|
||||||
|
// Test for salt
|
||||||
|
if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {
|
||||||
|
// Extract salt
|
||||||
|
salt = WordArray.create(ciphertextWords.slice(2, 4));
|
||||||
|
|
||||||
|
// Remove salt from ciphertext
|
||||||
|
ciphertextWords.splice(0, 4);
|
||||||
|
ciphertext.sigBytes -= 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CipherParams.create({ ciphertext: ciphertext, salt: salt });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A cipher wrapper that returns ciphertext as a serializable cipher params object.
|
||||||
|
*/
|
||||||
|
var SerializableCipher = C_lib.SerializableCipher = Base.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*
|
||||||
|
* @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
|
||||||
|
*/
|
||||||
|
cfg: Base.extend({
|
||||||
|
format: OpenSSLFormatter
|
||||||
|
}),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypts a message.
|
||||||
|
*
|
||||||
|
* @param {Cipher} cipher The cipher algorithm to use.
|
||||||
|
* @param {WordArray|string} message The message to encrypt.
|
||||||
|
* @param {WordArray} key The key.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
||||||
|
*
|
||||||
|
* @return {CipherParams} A cipher params object.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
|
||||||
|
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
|
||||||
|
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
|
||||||
|
*/
|
||||||
|
encrypt: function (cipher, message, key, cfg) {
|
||||||
|
// Apply config defaults
|
||||||
|
cfg = this.cfg.extend(cfg);
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
var encryptor = cipher.createEncryptor(key, cfg);
|
||||||
|
var ciphertext = encryptor.finalize(message);
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var cipherCfg = encryptor.cfg;
|
||||||
|
|
||||||
|
// Create and return serializable cipher params
|
||||||
|
return CipherParams.create({
|
||||||
|
ciphertext: ciphertext,
|
||||||
|
key: key,
|
||||||
|
iv: cipherCfg.iv,
|
||||||
|
algorithm: cipher,
|
||||||
|
mode: cipherCfg.mode,
|
||||||
|
padding: cipherCfg.padding,
|
||||||
|
blockSize: cipher.blockSize,
|
||||||
|
formatter: cfg.format
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrypts serialized ciphertext.
|
||||||
|
*
|
||||||
|
* @param {Cipher} cipher The cipher algorithm to use.
|
||||||
|
* @param {CipherParams|string} ciphertext The ciphertext to decrypt.
|
||||||
|
* @param {WordArray} key The key.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The plaintext.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
|
||||||
|
* var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
|
||||||
|
*/
|
||||||
|
decrypt: function (cipher, ciphertext, key, cfg) {
|
||||||
|
// Apply config defaults
|
||||||
|
cfg = this.cfg.extend(cfg);
|
||||||
|
|
||||||
|
// Convert string to CipherParams
|
||||||
|
ciphertext = this._parse(ciphertext, cfg.format);
|
||||||
|
|
||||||
|
// Decrypt
|
||||||
|
var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
|
||||||
|
|
||||||
|
return plaintext;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts serialized ciphertext to CipherParams,
|
||||||
|
* else assumed CipherParams already and returns ciphertext unchanged.
|
||||||
|
*
|
||||||
|
* @param {CipherParams|string} ciphertext The ciphertext.
|
||||||
|
* @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
|
||||||
|
*
|
||||||
|
* @return {CipherParams} The unserialized ciphertext.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
|
||||||
|
*/
|
||||||
|
_parse: function (ciphertext, format) {
|
||||||
|
if (typeof ciphertext == 'string') {
|
||||||
|
return format.parse(ciphertext, this);
|
||||||
|
} else {
|
||||||
|
return ciphertext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Key derivation function namespace.
|
||||||
|
*/
|
||||||
|
var C_kdf = C.kdf = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OpenSSL key derivation function.
|
||||||
|
*/
|
||||||
|
var OpenSSLKdf = C_kdf.OpenSSL = {
|
||||||
|
/**
|
||||||
|
* Derives a key and IV from a password.
|
||||||
|
*
|
||||||
|
* @param {string} password The password to derive from.
|
||||||
|
* @param {number} keySize The size in words of the key to generate.
|
||||||
|
* @param {number} ivSize The size in words of the IV to generate.
|
||||||
|
* @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
|
||||||
|
*
|
||||||
|
* @return {CipherParams} A cipher params object with the key, IV, and salt.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
|
||||||
|
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
|
||||||
|
*/
|
||||||
|
execute: function (password, keySize, ivSize, salt) {
|
||||||
|
// Generate random salt
|
||||||
|
if (!salt) {
|
||||||
|
salt = WordArray.random(64/8);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Derive key and IV
|
||||||
|
var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
|
||||||
|
|
||||||
|
// Separate key and IV
|
||||||
|
var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
|
||||||
|
key.sigBytes = keySize * 4;
|
||||||
|
|
||||||
|
// Return params
|
||||||
|
return CipherParams.create({ key: key, iv: iv, salt: salt });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A serializable cipher wrapper that derives the key from a password,
|
||||||
|
* and returns ciphertext as a serializable cipher params object.
|
||||||
|
*/
|
||||||
|
var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*
|
||||||
|
* @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
|
||||||
|
*/
|
||||||
|
cfg: SerializableCipher.cfg.extend({
|
||||||
|
kdf: OpenSSLKdf
|
||||||
|
}),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypts a message using a password.
|
||||||
|
*
|
||||||
|
* @param {Cipher} cipher The cipher algorithm to use.
|
||||||
|
* @param {WordArray|string} message The message to encrypt.
|
||||||
|
* @param {string} password The password.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
||||||
|
*
|
||||||
|
* @return {CipherParams} A cipher params object.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
|
||||||
|
* var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
|
||||||
|
*/
|
||||||
|
encrypt: function (cipher, message, password, cfg) {
|
||||||
|
// Apply config defaults
|
||||||
|
cfg = this.cfg.extend(cfg);
|
||||||
|
|
||||||
|
// Derive key and other params
|
||||||
|
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);
|
||||||
|
|
||||||
|
// Add IV to config
|
||||||
|
cfg.iv = derivedParams.iv;
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
|
||||||
|
|
||||||
|
// Mix in derived params
|
||||||
|
ciphertext.mixIn(derivedParams);
|
||||||
|
|
||||||
|
return ciphertext;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrypts serialized ciphertext using a password.
|
||||||
|
*
|
||||||
|
* @param {Cipher} cipher The cipher algorithm to use.
|
||||||
|
* @param {CipherParams|string} ciphertext The ciphertext to decrypt.
|
||||||
|
* @param {string} password The password.
|
||||||
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
||||||
|
*
|
||||||
|
* @return {WordArray} The plaintext.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
|
||||||
|
* var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
|
||||||
|
*/
|
||||||
|
decrypt: function (cipher, ciphertext, password, cfg) {
|
||||||
|
// Apply config defaults
|
||||||
|
cfg = this.cfg.extend(cfg);
|
||||||
|
|
||||||
|
// Convert string to CipherParams
|
||||||
|
ciphertext = this._parse(ciphertext, cfg.format);
|
||||||
|
|
||||||
|
// Derive key and other params
|
||||||
|
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);
|
||||||
|
|
||||||
|
// Add IV to config
|
||||||
|
cfg.iv = derivedParams.iv;
|
||||||
|
|
||||||
|
// Decrypt
|
||||||
|
var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
|
||||||
|
|
||||||
|
return plaintext;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cipher Feedback block mode.
|
||||||
|
*/
|
||||||
|
CryptoJS.mode.CFB = (function () {
|
||||||
|
var CFB = CryptoJS.lib.BlockCipherMode.extend();
|
||||||
|
|
||||||
|
CFB.Encryptor = CFB.extend({
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var cipher = this._cipher;
|
||||||
|
var blockSize = cipher.blockSize;
|
||||||
|
|
||||||
|
generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
|
||||||
|
|
||||||
|
// Remember this block to use with next block
|
||||||
|
this._prevBlock = words.slice(offset, offset + blockSize);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
CFB.Decryptor = CFB.extend({
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var cipher = this._cipher;
|
||||||
|
var blockSize = cipher.blockSize;
|
||||||
|
|
||||||
|
// Remember this block to use with next block
|
||||||
|
var thisBlock = words.slice(offset, offset + blockSize);
|
||||||
|
|
||||||
|
generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
|
||||||
|
|
||||||
|
// This block becomes the previous block
|
||||||
|
this._prevBlock = thisBlock;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
|
||||||
|
var keystream;
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var iv = this._iv;
|
||||||
|
|
||||||
|
// Generate keystream
|
||||||
|
if (iv) {
|
||||||
|
keystream = iv.slice(0);
|
||||||
|
|
||||||
|
// Remove IV for subsequent blocks
|
||||||
|
this._iv = undefined;
|
||||||
|
} else {
|
||||||
|
keystream = this._prevBlock;
|
||||||
|
}
|
||||||
|
cipher.encryptBlock(keystream, 0);
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
for (var i = 0; i < blockSize; i++) {
|
||||||
|
words[offset + i] ^= keystream[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return CFB;
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Counter block mode.
|
||||||
|
*/
|
||||||
|
CryptoJS.mode.CTR = (function () {
|
||||||
|
var CTR = CryptoJS.lib.BlockCipherMode.extend();
|
||||||
|
|
||||||
|
var Encryptor = CTR.Encryptor = CTR.extend({
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var cipher = this._cipher
|
||||||
|
var blockSize = cipher.blockSize;
|
||||||
|
var iv = this._iv;
|
||||||
|
var counter = this._counter;
|
||||||
|
|
||||||
|
// Generate keystream
|
||||||
|
if (iv) {
|
||||||
|
counter = this._counter = iv.slice(0);
|
||||||
|
|
||||||
|
// Remove IV for subsequent blocks
|
||||||
|
this._iv = undefined;
|
||||||
|
}
|
||||||
|
var keystream = counter.slice(0);
|
||||||
|
cipher.encryptBlock(keystream, 0);
|
||||||
|
|
||||||
|
// Increment counter
|
||||||
|
counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
for (var i = 0; i < blockSize; i++) {
|
||||||
|
words[offset + i] ^= keystream[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
CTR.Decryptor = Encryptor;
|
||||||
|
|
||||||
|
return CTR;
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
/** @preserve
|
||||||
|
* Counter block mode compatible with Dr Brian Gladman fileenc.c
|
||||||
|
* derived from CryptoJS.mode.CTR
|
||||||
|
* Jan Hruby [email protected]
|
||||||
|
*/
|
||||||
|
CryptoJS.mode.CTRGladman = (function () {
|
||||||
|
var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
|
||||||
|
|
||||||
|
function incWord(word)
|
||||||
|
{
|
||||||
|
if (((word >> 24) & 0xff) === 0xff) { //overflow
|
||||||
|
var b1 = (word >> 16)&0xff;
|
||||||
|
var b2 = (word >> 8)&0xff;
|
||||||
|
var b3 = word & 0xff;
|
||||||
|
|
||||||
|
if (b1 === 0xff) // overflow b1
|
||||||
|
{
|
||||||
|
b1 = 0;
|
||||||
|
if (b2 === 0xff)
|
||||||
|
{
|
||||||
|
b2 = 0;
|
||||||
|
if (b3 === 0xff)
|
||||||
|
{
|
||||||
|
b3 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
++b3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
++b2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
++b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
word = 0;
|
||||||
|
word += (b1 << 16);
|
||||||
|
word += (b2 << 8);
|
||||||
|
word += b3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
word += (0x01 << 24);
|
||||||
|
}
|
||||||
|
return word;
|
||||||
|
}
|
||||||
|
|
||||||
|
function incCounter(counter)
|
||||||
|
{
|
||||||
|
if ((counter[0] = incWord(counter[0])) === 0)
|
||||||
|
{
|
||||||
|
// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8
|
||||||
|
counter[1] = incWord(counter[1]);
|
||||||
|
}
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var cipher = this._cipher
|
||||||
|
var blockSize = cipher.blockSize;
|
||||||
|
var iv = this._iv;
|
||||||
|
var counter = this._counter;
|
||||||
|
|
||||||
|
// Generate keystream
|
||||||
|
if (iv) {
|
||||||
|
counter = this._counter = iv.slice(0);
|
||||||
|
|
||||||
|
// Remove IV for subsequent blocks
|
||||||
|
this._iv = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
incCounter(counter);
|
||||||
|
|
||||||
|
var keystream = counter.slice(0);
|
||||||
|
cipher.encryptBlock(keystream, 0);
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
for (var i = 0; i < blockSize; i++) {
|
||||||
|
words[offset + i] ^= keystream[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
CTRGladman.Decryptor = Encryptor;
|
||||||
|
|
||||||
|
return CTRGladman;
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Output Feedback block mode.
|
||||||
|
*/
|
||||||
|
CryptoJS.mode.OFB = (function () {
|
||||||
|
var OFB = CryptoJS.lib.BlockCipherMode.extend();
|
||||||
|
|
||||||
|
var Encryptor = OFB.Encryptor = OFB.extend({
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
// Shortcuts
|
||||||
|
var cipher = this._cipher
|
||||||
|
var blockSize = cipher.blockSize;
|
||||||
|
var iv = this._iv;
|
||||||
|
var keystream = this._keystream;
|
||||||
|
|
||||||
|
// Generate keystream
|
||||||
|
if (iv) {
|
||||||
|
keystream = this._keystream = iv.slice(0);
|
||||||
|
|
||||||
|
// Remove IV for subsequent blocks
|
||||||
|
this._iv = undefined;
|
||||||
|
}
|
||||||
|
cipher.encryptBlock(keystream, 0);
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
for (var i = 0; i < blockSize; i++) {
|
||||||
|
words[offset + i] ^= keystream[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
OFB.Decryptor = Encryptor;
|
||||||
|
|
||||||
|
return OFB;
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Electronic Codebook block mode.
|
||||||
|
*/
|
||||||
|
CryptoJS.mode.ECB = (function () {
|
||||||
|
var ECB = CryptoJS.lib.BlockCipherMode.extend();
|
||||||
|
|
||||||
|
ECB.Encryptor = ECB.extend({
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
this._cipher.encryptBlock(words, offset);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ECB.Decryptor = ECB.extend({
|
||||||
|
processBlock: function (words, offset) {
|
||||||
|
this._cipher.decryptBlock(words, offset);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return ECB;
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ANSI X.923 padding strategy.
|
||||||
|
*/
|
||||||
|
CryptoJS.pad.AnsiX923 = {
|
||||||
|
pad: function (data, blockSize) {
|
||||||
|
// Shortcuts
|
||||||
|
var dataSigBytes = data.sigBytes;
|
||||||
|
var blockSizeBytes = blockSize * 4;
|
||||||
|
|
||||||
|
// Count padding bytes
|
||||||
|
var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
|
||||||
|
|
||||||
|
// Compute last byte position
|
||||||
|
var lastBytePos = dataSigBytes + nPaddingBytes - 1;
|
||||||
|
|
||||||
|
// Pad
|
||||||
|
data.clamp();
|
||||||
|
data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);
|
||||||
|
data.sigBytes += nPaddingBytes;
|
||||||
|
},
|
||||||
|
|
||||||
|
unpad: function (data) {
|
||||||
|
// Get number of padding bytes from last byte
|
||||||
|
var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
|
||||||
|
|
||||||
|
// Remove padding
|
||||||
|
data.sigBytes -= nPaddingBytes;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ISO 10126 padding strategy.
|
||||||
|
*/
|
||||||
|
CryptoJS.pad.Iso10126 = {
|
||||||
|
pad: function (data, blockSize) {
|
||||||
|
// Shortcut
|
||||||
|
var blockSizeBytes = blockSize * 4;
|
||||||
|
|
||||||
|
// Count padding bytes
|
||||||
|
var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
|
||||||
|
|
||||||
|
// Pad
|
||||||
|
data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).
|
||||||
|
concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
|
||||||
|
},
|
||||||
|
|
||||||
|
unpad: function (data) {
|
||||||
|
// Get number of padding bytes from last byte
|
||||||
|
var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
|
||||||
|
|
||||||
|
// Remove padding
|
||||||
|
data.sigBytes -= nPaddingBytes;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ISO/IEC 9797-1 Padding Method 2.
|
||||||
|
*/
|
||||||
|
CryptoJS.pad.Iso97971 = {
|
||||||
|
pad: function (data, blockSize) {
|
||||||
|
// Add 0x80 byte
|
||||||
|
data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));
|
||||||
|
|
||||||
|
// Zero pad the rest
|
||||||
|
CryptoJS.pad.ZeroPadding.pad(data, blockSize);
|
||||||
|
},
|
||||||
|
|
||||||
|
unpad: function (data) {
|
||||||
|
// Remove zero padding
|
||||||
|
CryptoJS.pad.ZeroPadding.unpad(data);
|
||||||
|
|
||||||
|
// Remove one more byte -- the 0x80 byte
|
||||||
|
data.sigBytes--;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zero padding strategy.
|
||||||
|
*/
|
||||||
|
CryptoJS.pad.ZeroPadding = {
|
||||||
|
pad: function (data, blockSize) {
|
||||||
|
// Shortcut
|
||||||
|
var blockSizeBytes = blockSize * 4;
|
||||||
|
|
||||||
|
// Pad
|
||||||
|
data.clamp();
|
||||||
|
data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
|
||||||
|
},
|
||||||
|
|
||||||
|
unpad: function (data) {
|
||||||
|
// Shortcut
|
||||||
|
var dataWords = data.words;
|
||||||
|
|
||||||
|
// Unpad
|
||||||
|
var i = data.sigBytes - 1;
|
||||||
|
for (var i = data.sigBytes - 1; i >= 0; i--) {
|
||||||
|
if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
|
||||||
|
data.sigBytes = i + 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A noop padding strategy.
|
||||||
|
*/
|
||||||
|
CryptoJS.pad.NoPadding = {
|
||||||
|
pad: function () {
|
||||||
|
},
|
||||||
|
|
||||||
|
unpad: function () {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
(function (undefined) {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var CipherParams = C_lib.CipherParams;
|
||||||
|
var C_enc = C.enc;
|
||||||
|
var Hex = C_enc.Hex;
|
||||||
|
var C_format = C.format;
|
||||||
|
|
||||||
|
var HexFormatter = C_format.Hex = {
|
||||||
|
/**
|
||||||
|
* Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
|
||||||
|
*
|
||||||
|
* @param {CipherParams} cipherParams The cipher params object.
|
||||||
|
*
|
||||||
|
* @return {string} The hexadecimally encoded string.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var hexString = CryptoJS.format.Hex.stringify(cipherParams);
|
||||||
|
*/
|
||||||
|
stringify: function (cipherParams) {
|
||||||
|
return cipherParams.ciphertext.toString(Hex);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a hexadecimally encoded ciphertext string to a cipher params object.
|
||||||
|
*
|
||||||
|
* @param {string} input The hexadecimally encoded string.
|
||||||
|
*
|
||||||
|
* @return {CipherParams} The cipher params object.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var cipherParams = CryptoJS.format.Hex.parse(hexString);
|
||||||
|
*/
|
||||||
|
parse: function (input) {
|
||||||
|
var ciphertext = Hex.parse(input);
|
||||||
|
return CipherParams.create({ ciphertext: ciphertext });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var BlockCipher = C_lib.BlockCipher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Lookup tables
|
||||||
|
var SBOX = [];
|
||||||
|
var INV_SBOX = [];
|
||||||
|
var SUB_MIX_0 = [];
|
||||||
|
var SUB_MIX_1 = [];
|
||||||
|
var SUB_MIX_2 = [];
|
||||||
|
var SUB_MIX_3 = [];
|
||||||
|
var INV_SUB_MIX_0 = [];
|
||||||
|
var INV_SUB_MIX_1 = [];
|
||||||
|
var INV_SUB_MIX_2 = [];
|
||||||
|
var INV_SUB_MIX_3 = [];
|
||||||
|
|
||||||
|
// Compute lookup tables
|
||||||
|
(function () {
|
||||||
|
// Compute double table
|
||||||
|
var d = [];
|
||||||
|
for (var i = 0; i < 256; i++) {
|
||||||
|
if (i < 128) {
|
||||||
|
d[i] = i << 1;
|
||||||
|
} else {
|
||||||
|
d[i] = (i << 1) ^ 0x11b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Walk GF(2^8)
|
||||||
|
var x = 0;
|
||||||
|
var xi = 0;
|
||||||
|
for (var i = 0; i < 256; i++) {
|
||||||
|
// Compute sbox
|
||||||
|
var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);
|
||||||
|
sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;
|
||||||
|
SBOX[x] = sx;
|
||||||
|
INV_SBOX[sx] = x;
|
||||||
|
|
||||||
|
// Compute multiplication
|
||||||
|
var x2 = d[x];
|
||||||
|
var x4 = d[x2];
|
||||||
|
var x8 = d[x4];
|
||||||
|
|
||||||
|
// Compute sub bytes, mix columns tables
|
||||||
|
var t = (d[sx] * 0x101) ^ (sx * 0x1010100);
|
||||||
|
SUB_MIX_0[x] = (t << 24) | (t >>> 8);
|
||||||
|
SUB_MIX_1[x] = (t << 16) | (t >>> 16);
|
||||||
|
SUB_MIX_2[x] = (t << 8) | (t >>> 24);
|
||||||
|
SUB_MIX_3[x] = t;
|
||||||
|
|
||||||
|
// Compute inv sub bytes, inv mix columns tables
|
||||||
|
var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);
|
||||||
|
INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);
|
||||||
|
INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);
|
||||||
|
INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);
|
||||||
|
INV_SUB_MIX_3[sx] = t;
|
||||||
|
|
||||||
|
// Compute next counter
|
||||||
|
if (!x) {
|
||||||
|
x = xi = 1;
|
||||||
|
} else {
|
||||||
|
x = x2 ^ d[d[d[x8 ^ x2]]];
|
||||||
|
xi ^= d[d[xi]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}());
|
||||||
|
|
||||||
|
// Precomputed Rcon lookup
|
||||||
|
var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AES block cipher algorithm.
|
||||||
|
*/
|
||||||
|
var AES = C_algo.AES = BlockCipher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
var t;
|
||||||
|
|
||||||
|
// Skip reset of nRounds has been set before and key did not change
|
||||||
|
if (this._nRounds && this._keyPriorReset === this._key) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shortcuts
|
||||||
|
var key = this._keyPriorReset = this._key;
|
||||||
|
var keyWords = key.words;
|
||||||
|
var keySize = key.sigBytes / 4;
|
||||||
|
|
||||||
|
// Compute number of rounds
|
||||||
|
var nRounds = this._nRounds = keySize + 6;
|
||||||
|
|
||||||
|
// Compute number of key schedule rows
|
||||||
|
var ksRows = (nRounds + 1) * 4;
|
||||||
|
|
||||||
|
// Compute key schedule
|
||||||
|
var keySchedule = this._keySchedule = [];
|
||||||
|
for (var ksRow = 0; ksRow < ksRows; ksRow++) {
|
||||||
|
if (ksRow < keySize) {
|
||||||
|
keySchedule[ksRow] = keyWords[ksRow];
|
||||||
|
} else {
|
||||||
|
t = keySchedule[ksRow - 1];
|
||||||
|
|
||||||
|
if (!(ksRow % keySize)) {
|
||||||
|
// Rot word
|
||||||
|
t = (t << 8) | (t >>> 24);
|
||||||
|
|
||||||
|
// Sub word
|
||||||
|
t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
|
||||||
|
|
||||||
|
// Mix Rcon
|
||||||
|
t ^= RCON[(ksRow / keySize) | 0] << 24;
|
||||||
|
} else if (keySize > 6 && ksRow % keySize == 4) {
|
||||||
|
// Sub word
|
||||||
|
t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
|
||||||
|
}
|
||||||
|
|
||||||
|
keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute inv key schedule
|
||||||
|
var invKeySchedule = this._invKeySchedule = [];
|
||||||
|
for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
|
||||||
|
var ksRow = ksRows - invKsRow;
|
||||||
|
|
||||||
|
if (invKsRow % 4) {
|
||||||
|
var t = keySchedule[ksRow];
|
||||||
|
} else {
|
||||||
|
var t = keySchedule[ksRow - 4];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (invKsRow < 4 || ksRow <= 4) {
|
||||||
|
invKeySchedule[invKsRow] = t;
|
||||||
|
} else {
|
||||||
|
invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^
|
||||||
|
INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
encryptBlock: function (M, offset) {
|
||||||
|
this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
|
||||||
|
},
|
||||||
|
|
||||||
|
decryptBlock: function (M, offset) {
|
||||||
|
// Swap 2nd and 4th rows
|
||||||
|
var t = M[offset + 1];
|
||||||
|
M[offset + 1] = M[offset + 3];
|
||||||
|
M[offset + 3] = t;
|
||||||
|
|
||||||
|
this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
|
||||||
|
|
||||||
|
// Inv swap 2nd and 4th rows
|
||||||
|
var t = M[offset + 1];
|
||||||
|
M[offset + 1] = M[offset + 3];
|
||||||
|
M[offset + 3] = t;
|
||||||
|
},
|
||||||
|
|
||||||
|
_doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
|
||||||
|
// Shortcut
|
||||||
|
var nRounds = this._nRounds;
|
||||||
|
|
||||||
|
// Get input, add round key
|
||||||
|
var s0 = M[offset] ^ keySchedule[0];
|
||||||
|
var s1 = M[offset + 1] ^ keySchedule[1];
|
||||||
|
var s2 = M[offset + 2] ^ keySchedule[2];
|
||||||
|
var s3 = M[offset + 3] ^ keySchedule[3];
|
||||||
|
|
||||||
|
// Key schedule row counter
|
||||||
|
var ksRow = 4;
|
||||||
|
|
||||||
|
// Rounds
|
||||||
|
for (var round = 1; round < nRounds; round++) {
|
||||||
|
// Shift rows, sub bytes, mix columns, add round key
|
||||||
|
var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];
|
||||||
|
var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];
|
||||||
|
var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];
|
||||||
|
var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];
|
||||||
|
|
||||||
|
// Update state
|
||||||
|
s0 = t0;
|
||||||
|
s1 = t1;
|
||||||
|
s2 = t2;
|
||||||
|
s3 = t3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shift rows, sub bytes, add round key
|
||||||
|
var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];
|
||||||
|
var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];
|
||||||
|
var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];
|
||||||
|
var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];
|
||||||
|
|
||||||
|
// Set output
|
||||||
|
M[offset] = t0;
|
||||||
|
M[offset + 1] = t1;
|
||||||
|
M[offset + 2] = t2;
|
||||||
|
M[offset + 3] = t3;
|
||||||
|
},
|
||||||
|
|
||||||
|
keySize: 256/32
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut functions to the cipher's object interface.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);
|
||||||
|
* var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);
|
||||||
|
*/
|
||||||
|
C.AES = BlockCipher._createHelper(AES);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var WordArray = C_lib.WordArray;
|
||||||
|
var BlockCipher = C_lib.BlockCipher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Permuted Choice 1 constants
|
||||||
|
var PC1 = [
|
||||||
|
57, 49, 41, 33, 25, 17, 9, 1,
|
||||||
|
58, 50, 42, 34, 26, 18, 10, 2,
|
||||||
|
59, 51, 43, 35, 27, 19, 11, 3,
|
||||||
|
60, 52, 44, 36, 63, 55, 47, 39,
|
||||||
|
31, 23, 15, 7, 62, 54, 46, 38,
|
||||||
|
30, 22, 14, 6, 61, 53, 45, 37,
|
||||||
|
29, 21, 13, 5, 28, 20, 12, 4
|
||||||
|
];
|
||||||
|
|
||||||
|
// Permuted Choice 2 constants
|
||||||
|
var PC2 = [
|
||||||
|
14, 17, 11, 24, 1, 5,
|
||||||
|
3, 28, 15, 6, 21, 10,
|
||||||
|
23, 19, 12, 4, 26, 8,
|
||||||
|
16, 7, 27, 20, 13, 2,
|
||||||
|
41, 52, 31, 37, 47, 55,
|
||||||
|
30, 40, 51, 45, 33, 48,
|
||||||
|
44, 49, 39, 56, 34, 53,
|
||||||
|
46, 42, 50, 36, 29, 32
|
||||||
|
];
|
||||||
|
|
||||||
|
// Cumulative bit shift constants
|
||||||
|
var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
|
||||||
|
|
||||||
|
// SBOXes and round permutation constants
|
||||||
|
var SBOX_P = [
|
||||||
|
{
|
||||||
|
0x0: 0x808200,
|
||||||
|
0x10000000: 0x8000,
|
||||||
|
0x20000000: 0x808002,
|
||||||
|
0x30000000: 0x2,
|
||||||
|
0x40000000: 0x200,
|
||||||
|
0x50000000: 0x808202,
|
||||||
|
0x60000000: 0x800202,
|
||||||
|
0x70000000: 0x800000,
|
||||||
|
0x80000000: 0x202,
|
||||||
|
0x90000000: 0x800200,
|
||||||
|
0xa0000000: 0x8200,
|
||||||
|
0xb0000000: 0x808000,
|
||||||
|
0xc0000000: 0x8002,
|
||||||
|
0xd0000000: 0x800002,
|
||||||
|
0xe0000000: 0x0,
|
||||||
|
0xf0000000: 0x8202,
|
||||||
|
0x8000000: 0x0,
|
||||||
|
0x18000000: 0x808202,
|
||||||
|
0x28000000: 0x8202,
|
||||||
|
0x38000000: 0x8000,
|
||||||
|
0x48000000: 0x808200,
|
||||||
|
0x58000000: 0x200,
|
||||||
|
0x68000000: 0x808002,
|
||||||
|
0x78000000: 0x2,
|
||||||
|
0x88000000: 0x800200,
|
||||||
|
0x98000000: 0x8200,
|
||||||
|
0xa8000000: 0x808000,
|
||||||
|
0xb8000000: 0x800202,
|
||||||
|
0xc8000000: 0x800002,
|
||||||
|
0xd8000000: 0x8002,
|
||||||
|
0xe8000000: 0x202,
|
||||||
|
0xf8000000: 0x800000,
|
||||||
|
0x1: 0x8000,
|
||||||
|
0x10000001: 0x2,
|
||||||
|
0x20000001: 0x808200,
|
||||||
|
0x30000001: 0x800000,
|
||||||
|
0x40000001: 0x808002,
|
||||||
|
0x50000001: 0x8200,
|
||||||
|
0x60000001: 0x200,
|
||||||
|
0x70000001: 0x800202,
|
||||||
|
0x80000001: 0x808202,
|
||||||
|
0x90000001: 0x808000,
|
||||||
|
0xa0000001: 0x800002,
|
||||||
|
0xb0000001: 0x8202,
|
||||||
|
0xc0000001: 0x202,
|
||||||
|
0xd0000001: 0x800200,
|
||||||
|
0xe0000001: 0x8002,
|
||||||
|
0xf0000001: 0x0,
|
||||||
|
0x8000001: 0x808202,
|
||||||
|
0x18000001: 0x808000,
|
||||||
|
0x28000001: 0x800000,
|
||||||
|
0x38000001: 0x200,
|
||||||
|
0x48000001: 0x8000,
|
||||||
|
0x58000001: 0x800002,
|
||||||
|
0x68000001: 0x2,
|
||||||
|
0x78000001: 0x8202,
|
||||||
|
0x88000001: 0x8002,
|
||||||
|
0x98000001: 0x800202,
|
||||||
|
0xa8000001: 0x202,
|
||||||
|
0xb8000001: 0x808200,
|
||||||
|
0xc8000001: 0x800200,
|
||||||
|
0xd8000001: 0x0,
|
||||||
|
0xe8000001: 0x8200,
|
||||||
|
0xf8000001: 0x808002
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x0: 0x40084010,
|
||||||
|
0x1000000: 0x4000,
|
||||||
|
0x2000000: 0x80000,
|
||||||
|
0x3000000: 0x40080010,
|
||||||
|
0x4000000: 0x40000010,
|
||||||
|
0x5000000: 0x40084000,
|
||||||
|
0x6000000: 0x40004000,
|
||||||
|
0x7000000: 0x10,
|
||||||
|
0x8000000: 0x84000,
|
||||||
|
0x9000000: 0x40004010,
|
||||||
|
0xa000000: 0x40000000,
|
||||||
|
0xb000000: 0x84010,
|
||||||
|
0xc000000: 0x80010,
|
||||||
|
0xd000000: 0x0,
|
||||||
|
0xe000000: 0x4010,
|
||||||
|
0xf000000: 0x40080000,
|
||||||
|
0x800000: 0x40004000,
|
||||||
|
0x1800000: 0x84010,
|
||||||
|
0x2800000: 0x10,
|
||||||
|
0x3800000: 0x40004010,
|
||||||
|
0x4800000: 0x40084010,
|
||||||
|
0x5800000: 0x40000000,
|
||||||
|
0x6800000: 0x80000,
|
||||||
|
0x7800000: 0x40080010,
|
||||||
|
0x8800000: 0x80010,
|
||||||
|
0x9800000: 0x0,
|
||||||
|
0xa800000: 0x4000,
|
||||||
|
0xb800000: 0x40080000,
|
||||||
|
0xc800000: 0x40000010,
|
||||||
|
0xd800000: 0x84000,
|
||||||
|
0xe800000: 0x40084000,
|
||||||
|
0xf800000: 0x4010,
|
||||||
|
0x10000000: 0x0,
|
||||||
|
0x11000000: 0x40080010,
|
||||||
|
0x12000000: 0x40004010,
|
||||||
|
0x13000000: 0x40084000,
|
||||||
|
0x14000000: 0x40080000,
|
||||||
|
0x15000000: 0x10,
|
||||||
|
0x16000000: 0x84010,
|
||||||
|
0x17000000: 0x4000,
|
||||||
|
0x18000000: 0x4010,
|
||||||
|
0x19000000: 0x80000,
|
||||||
|
0x1a000000: 0x80010,
|
||||||
|
0x1b000000: 0x40000010,
|
||||||
|
0x1c000000: 0x84000,
|
||||||
|
0x1d000000: 0x40004000,
|
||||||
|
0x1e000000: 0x40000000,
|
||||||
|
0x1f000000: 0x40084010,
|
||||||
|
0x10800000: 0x84010,
|
||||||
|
0x11800000: 0x80000,
|
||||||
|
0x12800000: 0x40080000,
|
||||||
|
0x13800000: 0x4000,
|
||||||
|
0x14800000: 0x40004000,
|
||||||
|
0x15800000: 0x40084010,
|
||||||
|
0x16800000: 0x10,
|
||||||
|
0x17800000: 0x40000000,
|
||||||
|
0x18800000: 0x40084000,
|
||||||
|
0x19800000: 0x40000010,
|
||||||
|
0x1a800000: 0x40004010,
|
||||||
|
0x1b800000: 0x80010,
|
||||||
|
0x1c800000: 0x0,
|
||||||
|
0x1d800000: 0x4010,
|
||||||
|
0x1e800000: 0x40080010,
|
||||||
|
0x1f800000: 0x84000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x0: 0x104,
|
||||||
|
0x100000: 0x0,
|
||||||
|
0x200000: 0x4000100,
|
||||||
|
0x300000: 0x10104,
|
||||||
|
0x400000: 0x10004,
|
||||||
|
0x500000: 0x4000004,
|
||||||
|
0x600000: 0x4010104,
|
||||||
|
0x700000: 0x4010000,
|
||||||
|
0x800000: 0x4000000,
|
||||||
|
0x900000: 0x4010100,
|
||||||
|
0xa00000: 0x10100,
|
||||||
|
0xb00000: 0x4010004,
|
||||||
|
0xc00000: 0x4000104,
|
||||||
|
0xd00000: 0x10000,
|
||||||
|
0xe00000: 0x4,
|
||||||
|
0xf00000: 0x100,
|
||||||
|
0x80000: 0x4010100,
|
||||||
|
0x180000: 0x4010004,
|
||||||
|
0x280000: 0x0,
|
||||||
|
0x380000: 0x4000100,
|
||||||
|
0x480000: 0x4000004,
|
||||||
|
0x580000: 0x10000,
|
||||||
|
0x680000: 0x10004,
|
||||||
|
0x780000: 0x104,
|
||||||
|
0x880000: 0x4,
|
||||||
|
0x980000: 0x100,
|
||||||
|
0xa80000: 0x4010000,
|
||||||
|
0xb80000: 0x10104,
|
||||||
|
0xc80000: 0x10100,
|
||||||
|
0xd80000: 0x4000104,
|
||||||
|
0xe80000: 0x4010104,
|
||||||
|
0xf80000: 0x4000000,
|
||||||
|
0x1000000: 0x4010100,
|
||||||
|
0x1100000: 0x10004,
|
||||||
|
0x1200000: 0x10000,
|
||||||
|
0x1300000: 0x4000100,
|
||||||
|
0x1400000: 0x100,
|
||||||
|
0x1500000: 0x4010104,
|
||||||
|
0x1600000: 0x4000004,
|
||||||
|
0x1700000: 0x0,
|
||||||
|
0x1800000: 0x4000104,
|
||||||
|
0x1900000: 0x4000000,
|
||||||
|
0x1a00000: 0x4,
|
||||||
|
0x1b00000: 0x10100,
|
||||||
|
0x1c00000: 0x4010000,
|
||||||
|
0x1d00000: 0x104,
|
||||||
|
0x1e00000: 0x10104,
|
||||||
|
0x1f00000: 0x4010004,
|
||||||
|
0x1080000: 0x4000000,
|
||||||
|
0x1180000: 0x104,
|
||||||
|
0x1280000: 0x4010100,
|
||||||
|
0x1380000: 0x0,
|
||||||
|
0x1480000: 0x10004,
|
||||||
|
0x1580000: 0x4000100,
|
||||||
|
0x1680000: 0x100,
|
||||||
|
0x1780000: 0x4010004,
|
||||||
|
0x1880000: 0x10000,
|
||||||
|
0x1980000: 0x4010104,
|
||||||
|
0x1a80000: 0x10104,
|
||||||
|
0x1b80000: 0x4000004,
|
||||||
|
0x1c80000: 0x4000104,
|
||||||
|
0x1d80000: 0x4010000,
|
||||||
|
0x1e80000: 0x4,
|
||||||
|
0x1f80000: 0x10100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x0: 0x80401000,
|
||||||
|
0x10000: 0x80001040,
|
||||||
|
0x20000: 0x401040,
|
||||||
|
0x30000: 0x80400000,
|
||||||
|
0x40000: 0x0,
|
||||||
|
0x50000: 0x401000,
|
||||||
|
0x60000: 0x80000040,
|
||||||
|
0x70000: 0x400040,
|
||||||
|
0x80000: 0x80000000,
|
||||||
|
0x90000: 0x400000,
|
||||||
|
0xa0000: 0x40,
|
||||||
|
0xb0000: 0x80001000,
|
||||||
|
0xc0000: 0x80400040,
|
||||||
|
0xd0000: 0x1040,
|
||||||
|
0xe0000: 0x1000,
|
||||||
|
0xf0000: 0x80401040,
|
||||||
|
0x8000: 0x80001040,
|
||||||
|
0x18000: 0x40,
|
||||||
|
0x28000: 0x80400040,
|
||||||
|
0x38000: 0x80001000,
|
||||||
|
0x48000: 0x401000,
|
||||||
|
0x58000: 0x80401040,
|
||||||
|
0x68000: 0x0,
|
||||||
|
0x78000: 0x80400000,
|
||||||
|
0x88000: 0x1000,
|
||||||
|
0x98000: 0x80401000,
|
||||||
|
0xa8000: 0x400000,
|
||||||
|
0xb8000: 0x1040,
|
||||||
|
0xc8000: 0x80000000,
|
||||||
|
0xd8000: 0x400040,
|
||||||
|
0xe8000: 0x401040,
|
||||||
|
0xf8000: 0x80000040,
|
||||||
|
0x100000: 0x400040,
|
||||||
|
0x110000: 0x401000,
|
||||||
|
0x120000: 0x80000040,
|
||||||
|
0x130000: 0x0,
|
||||||
|
0x140000: 0x1040,
|
||||||
|
0x150000: 0x80400040,
|
||||||
|
0x160000: 0x80401000,
|
||||||
|
0x170000: 0x80001040,
|
||||||
|
0x180000: 0x80401040,
|
||||||
|
0x190000: 0x80000000,
|
||||||
|
0x1a0000: 0x80400000,
|
||||||
|
0x1b0000: 0x401040,
|
||||||
|
0x1c0000: 0x80001000,
|
||||||
|
0x1d0000: 0x400000,
|
||||||
|
0x1e0000: 0x40,
|
||||||
|
0x1f0000: 0x1000,
|
||||||
|
0x108000: 0x80400000,
|
||||||
|
0x118000: 0x80401040,
|
||||||
|
0x128000: 0x0,
|
||||||
|
0x138000: 0x401000,
|
||||||
|
0x148000: 0x400040,
|
||||||
|
0x158000: 0x80000000,
|
||||||
|
0x168000: 0x80001040,
|
||||||
|
0x178000: 0x40,
|
||||||
|
0x188000: 0x80000040,
|
||||||
|
0x198000: 0x1000,
|
||||||
|
0x1a8000: 0x80001000,
|
||||||
|
0x1b8000: 0x80400040,
|
||||||
|
0x1c8000: 0x1040,
|
||||||
|
0x1d8000: 0x80401000,
|
||||||
|
0x1e8000: 0x400000,
|
||||||
|
0x1f8000: 0x401040
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x0: 0x80,
|
||||||
|
0x1000: 0x1040000,
|
||||||
|
0x2000: 0x40000,
|
||||||
|
0x3000: 0x20000000,
|
||||||
|
0x4000: 0x20040080,
|
||||||
|
0x5000: 0x1000080,
|
||||||
|
0x6000: 0x21000080,
|
||||||
|
0x7000: 0x40080,
|
||||||
|
0x8000: 0x1000000,
|
||||||
|
0x9000: 0x20040000,
|
||||||
|
0xa000: 0x20000080,
|
||||||
|
0xb000: 0x21040080,
|
||||||
|
0xc000: 0x21040000,
|
||||||
|
0xd000: 0x0,
|
||||||
|
0xe000: 0x1040080,
|
||||||
|
0xf000: 0x21000000,
|
||||||
|
0x800: 0x1040080,
|
||||||
|
0x1800: 0x21000080,
|
||||||
|
0x2800: 0x80,
|
||||||
|
0x3800: 0x1040000,
|
||||||
|
0x4800: 0x40000,
|
||||||
|
0x5800: 0x20040080,
|
||||||
|
0x6800: 0x21040000,
|
||||||
|
0x7800: 0x20000000,
|
||||||
|
0x8800: 0x20040000,
|
||||||
|
0x9800: 0x0,
|
||||||
|
0xa800: 0x21040080,
|
||||||
|
0xb800: 0x1000080,
|
||||||
|
0xc800: 0x20000080,
|
||||||
|
0xd800: 0x21000000,
|
||||||
|
0xe800: 0x1000000,
|
||||||
|
0xf800: 0x40080,
|
||||||
|
0x10000: 0x40000,
|
||||||
|
0x11000: 0x80,
|
||||||
|
0x12000: 0x20000000,
|
||||||
|
0x13000: 0x21000080,
|
||||||
|
0x14000: 0x1000080,
|
||||||
|
0x15000: 0x21040000,
|
||||||
|
0x16000: 0x20040080,
|
||||||
|
0x17000: 0x1000000,
|
||||||
|
0x18000: 0x21040080,
|
||||||
|
0x19000: 0x21000000,
|
||||||
|
0x1a000: 0x1040000,
|
||||||
|
0x1b000: 0x20040000,
|
||||||
|
0x1c000: 0x40080,
|
||||||
|
0x1d000: 0x20000080,
|
||||||
|
0x1e000: 0x0,
|
||||||
|
0x1f000: 0x1040080,
|
||||||
|
0x10800: 0x21000080,
|
||||||
|
0x11800: 0x1000000,
|
||||||
|
0x12800: 0x1040000,
|
||||||
|
0x13800: 0x20040080,
|
||||||
|
0x14800: 0x20000000,
|
||||||
|
0x15800: 0x1040080,
|
||||||
|
0x16800: 0x80,
|
||||||
|
0x17800: 0x21040000,
|
||||||
|
0x18800: 0x40080,
|
||||||
|
0x19800: 0x21040080,
|
||||||
|
0x1a800: 0x0,
|
||||||
|
0x1b800: 0x21000000,
|
||||||
|
0x1c800: 0x1000080,
|
||||||
|
0x1d800: 0x40000,
|
||||||
|
0x1e800: 0x20040000,
|
||||||
|
0x1f800: 0x20000080
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x0: 0x10000008,
|
||||||
|
0x100: 0x2000,
|
||||||
|
0x200: 0x10200000,
|
||||||
|
0x300: 0x10202008,
|
||||||
|
0x400: 0x10002000,
|
||||||
|
0x500: 0x200000,
|
||||||
|
0x600: 0x200008,
|
||||||
|
0x700: 0x10000000,
|
||||||
|
0x800: 0x0,
|
||||||
|
0x900: 0x10002008,
|
||||||
|
0xa00: 0x202000,
|
||||||
|
0xb00: 0x8,
|
||||||
|
0xc00: 0x10200008,
|
||||||
|
0xd00: 0x202008,
|
||||||
|
0xe00: 0x2008,
|
||||||
|
0xf00: 0x10202000,
|
||||||
|
0x80: 0x10200000,
|
||||||
|
0x180: 0x10202008,
|
||||||
|
0x280: 0x8,
|
||||||
|
0x380: 0x200000,
|
||||||
|
0x480: 0x202008,
|
||||||
|
0x580: 0x10000008,
|
||||||
|
0x680: 0x10002000,
|
||||||
|
0x780: 0x2008,
|
||||||
|
0x880: 0x200008,
|
||||||
|
0x980: 0x2000,
|
||||||
|
0xa80: 0x10002008,
|
||||||
|
0xb80: 0x10200008,
|
||||||
|
0xc80: 0x0,
|
||||||
|
0xd80: 0x10202000,
|
||||||
|
0xe80: 0x202000,
|
||||||
|
0xf80: 0x10000000,
|
||||||
|
0x1000: 0x10002000,
|
||||||
|
0x1100: 0x10200008,
|
||||||
|
0x1200: 0x10202008,
|
||||||
|
0x1300: 0x2008,
|
||||||
|
0x1400: 0x200000,
|
||||||
|
0x1500: 0x10000000,
|
||||||
|
0x1600: 0x10000008,
|
||||||
|
0x1700: 0x202000,
|
||||||
|
0x1800: 0x202008,
|
||||||
|
0x1900: 0x0,
|
||||||
|
0x1a00: 0x8,
|
||||||
|
0x1b00: 0x10200000,
|
||||||
|
0x1c00: 0x2000,
|
||||||
|
0x1d00: 0x10002008,
|
||||||
|
0x1e00: 0x10202000,
|
||||||
|
0x1f00: 0x200008,
|
||||||
|
0x1080: 0x8,
|
||||||
|
0x1180: 0x202000,
|
||||||
|
0x1280: 0x200000,
|
||||||
|
0x1380: 0x10000008,
|
||||||
|
0x1480: 0x10002000,
|
||||||
|
0x1580: 0x2008,
|
||||||
|
0x1680: 0x10202008,
|
||||||
|
0x1780: 0x10200000,
|
||||||
|
0x1880: 0x10202000,
|
||||||
|
0x1980: 0x10200008,
|
||||||
|
0x1a80: 0x2000,
|
||||||
|
0x1b80: 0x202008,
|
||||||
|
0x1c80: 0x200008,
|
||||||
|
0x1d80: 0x0,
|
||||||
|
0x1e80: 0x10000000,
|
||||||
|
0x1f80: 0x10002008
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x0: 0x100000,
|
||||||
|
0x10: 0x2000401,
|
||||||
|
0x20: 0x400,
|
||||||
|
0x30: 0x100401,
|
||||||
|
0x40: 0x2100401,
|
||||||
|
0x50: 0x0,
|
||||||
|
0x60: 0x1,
|
||||||
|
0x70: 0x2100001,
|
||||||
|
0x80: 0x2000400,
|
||||||
|
0x90: 0x100001,
|
||||||
|
0xa0: 0x2000001,
|
||||||
|
0xb0: 0x2100400,
|
||||||
|
0xc0: 0x2100000,
|
||||||
|
0xd0: 0x401,
|
||||||
|
0xe0: 0x100400,
|
||||||
|
0xf0: 0x2000000,
|
||||||
|
0x8: 0x2100001,
|
||||||
|
0x18: 0x0,
|
||||||
|
0x28: 0x2000401,
|
||||||
|
0x38: 0x2100400,
|
||||||
|
0x48: 0x100000,
|
||||||
|
0x58: 0x2000001,
|
||||||
|
0x68: 0x2000000,
|
||||||
|
0x78: 0x401,
|
||||||
|
0x88: 0x100401,
|
||||||
|
0x98: 0x2000400,
|
||||||
|
0xa8: 0x2100000,
|
||||||
|
0xb8: 0x100001,
|
||||||
|
0xc8: 0x400,
|
||||||
|
0xd8: 0x2100401,
|
||||||
|
0xe8: 0x1,
|
||||||
|
0xf8: 0x100400,
|
||||||
|
0x100: 0x2000000,
|
||||||
|
0x110: 0x100000,
|
||||||
|
0x120: 0x2000401,
|
||||||
|
0x130: 0x2100001,
|
||||||
|
0x140: 0x100001,
|
||||||
|
0x150: 0x2000400,
|
||||||
|
0x160: 0x2100400,
|
||||||
|
0x170: 0x100401,
|
||||||
|
0x180: 0x401,
|
||||||
|
0x190: 0x2100401,
|
||||||
|
0x1a0: 0x100400,
|
||||||
|
0x1b0: 0x1,
|
||||||
|
0x1c0: 0x0,
|
||||||
|
0x1d0: 0x2100000,
|
||||||
|
0x1e0: 0x2000001,
|
||||||
|
0x1f0: 0x400,
|
||||||
|
0x108: 0x100400,
|
||||||
|
0x118: 0x2000401,
|
||||||
|
0x128: 0x2100001,
|
||||||
|
0x138: 0x1,
|
||||||
|
0x148: 0x2000000,
|
||||||
|
0x158: 0x100000,
|
||||||
|
0x168: 0x401,
|
||||||
|
0x178: 0x2100400,
|
||||||
|
0x188: 0x2000001,
|
||||||
|
0x198: 0x2100000,
|
||||||
|
0x1a8: 0x0,
|
||||||
|
0x1b8: 0x2100401,
|
||||||
|
0x1c8: 0x100401,
|
||||||
|
0x1d8: 0x400,
|
||||||
|
0x1e8: 0x2000400,
|
||||||
|
0x1f8: 0x100001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x0: 0x8000820,
|
||||||
|
0x1: 0x20000,
|
||||||
|
0x2: 0x8000000,
|
||||||
|
0x3: 0x20,
|
||||||
|
0x4: 0x20020,
|
||||||
|
0x5: 0x8020820,
|
||||||
|
0x6: 0x8020800,
|
||||||
|
0x7: 0x800,
|
||||||
|
0x8: 0x8020000,
|
||||||
|
0x9: 0x8000800,
|
||||||
|
0xa: 0x20800,
|
||||||
|
0xb: 0x8020020,
|
||||||
|
0xc: 0x820,
|
||||||
|
0xd: 0x0,
|
||||||
|
0xe: 0x8000020,
|
||||||
|
0xf: 0x20820,
|
||||||
|
0x80000000: 0x800,
|
||||||
|
0x80000001: 0x8020820,
|
||||||
|
0x80000002: 0x8000820,
|
||||||
|
0x80000003: 0x8000000,
|
||||||
|
0x80000004: 0x8020000,
|
||||||
|
0x80000005: 0x20800,
|
||||||
|
0x80000006: 0x20820,
|
||||||
|
0x80000007: 0x20,
|
||||||
|
0x80000008: 0x8000020,
|
||||||
|
0x80000009: 0x820,
|
||||||
|
0x8000000a: 0x20020,
|
||||||
|
0x8000000b: 0x8020800,
|
||||||
|
0x8000000c: 0x0,
|
||||||
|
0x8000000d: 0x8020020,
|
||||||
|
0x8000000e: 0x8000800,
|
||||||
|
0x8000000f: 0x20000,
|
||||||
|
0x10: 0x20820,
|
||||||
|
0x11: 0x8020800,
|
||||||
|
0x12: 0x20,
|
||||||
|
0x13: 0x800,
|
||||||
|
0x14: 0x8000800,
|
||||||
|
0x15: 0x8000020,
|
||||||
|
0x16: 0x8020020,
|
||||||
|
0x17: 0x20000,
|
||||||
|
0x18: 0x0,
|
||||||
|
0x19: 0x20020,
|
||||||
|
0x1a: 0x8020000,
|
||||||
|
0x1b: 0x8000820,
|
||||||
|
0x1c: 0x8020820,
|
||||||
|
0x1d: 0x20800,
|
||||||
|
0x1e: 0x820,
|
||||||
|
0x1f: 0x8000000,
|
||||||
|
0x80000010: 0x20000,
|
||||||
|
0x80000011: 0x800,
|
||||||
|
0x80000012: 0x8020020,
|
||||||
|
0x80000013: 0x20820,
|
||||||
|
0x80000014: 0x20,
|
||||||
|
0x80000015: 0x8020000,
|
||||||
|
0x80000016: 0x8000000,
|
||||||
|
0x80000017: 0x8000820,
|
||||||
|
0x80000018: 0x8020820,
|
||||||
|
0x80000019: 0x8000020,
|
||||||
|
0x8000001a: 0x8000800,
|
||||||
|
0x8000001b: 0x0,
|
||||||
|
0x8000001c: 0x20800,
|
||||||
|
0x8000001d: 0x820,
|
||||||
|
0x8000001e: 0x20020,
|
||||||
|
0x8000001f: 0x8020800
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Masks that select the SBOX input
|
||||||
|
var SBOX_MASK = [
|
||||||
|
0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,
|
||||||
|
0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DES block cipher algorithm.
|
||||||
|
*/
|
||||||
|
var DES = C_algo.DES = BlockCipher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var key = this._key;
|
||||||
|
var keyWords = key.words;
|
||||||
|
|
||||||
|
// Select 56 bits according to PC1
|
||||||
|
var keyBits = [];
|
||||||
|
for (var i = 0; i < 56; i++) {
|
||||||
|
var keyBitPos = PC1[i] - 1;
|
||||||
|
keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assemble 16 subkeys
|
||||||
|
var subKeys = this._subKeys = [];
|
||||||
|
for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
|
||||||
|
// Create subkey
|
||||||
|
var subKey = subKeys[nSubKey] = [];
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
|
var bitShift = BIT_SHIFTS[nSubKey];
|
||||||
|
|
||||||
|
// Select 48 bits according to PC2
|
||||||
|
for (var i = 0; i < 24; i++) {
|
||||||
|
// Select from the left 28 key bits
|
||||||
|
subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);
|
||||||
|
|
||||||
|
// Select from the right 28 key bits
|
||||||
|
subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Since each subkey is applied to an expanded 32-bit input,
|
||||||
|
// the subkey can be broken into 8 values scaled to 32-bits,
|
||||||
|
// which allows the key to be used without expansion
|
||||||
|
subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);
|
||||||
|
for (var i = 1; i < 7; i++) {
|
||||||
|
subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);
|
||||||
|
}
|
||||||
|
subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute inverse subkeys
|
||||||
|
var invSubKeys = this._invSubKeys = [];
|
||||||
|
for (var i = 0; i < 16; i++) {
|
||||||
|
invSubKeys[i] = subKeys[15 - i];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
encryptBlock: function (M, offset) {
|
||||||
|
this._doCryptBlock(M, offset, this._subKeys);
|
||||||
|
},
|
||||||
|
|
||||||
|
decryptBlock: function (M, offset) {
|
||||||
|
this._doCryptBlock(M, offset, this._invSubKeys);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doCryptBlock: function (M, offset, subKeys) {
|
||||||
|
// Get input
|
||||||
|
this._lBlock = M[offset];
|
||||||
|
this._rBlock = M[offset + 1];
|
||||||
|
|
||||||
|
// Initial permutation
|
||||||
|
exchangeLR.call(this, 4, 0x0f0f0f0f);
|
||||||
|
exchangeLR.call(this, 16, 0x0000ffff);
|
||||||
|
exchangeRL.call(this, 2, 0x33333333);
|
||||||
|
exchangeRL.call(this, 8, 0x00ff00ff);
|
||||||
|
exchangeLR.call(this, 1, 0x55555555);
|
||||||
|
|
||||||
|
// Rounds
|
||||||
|
for (var round = 0; round < 16; round++) {
|
||||||
|
// Shortcuts
|
||||||
|
var subKey = subKeys[round];
|
||||||
|
var lBlock = this._lBlock;
|
||||||
|
var rBlock = this._rBlock;
|
||||||
|
|
||||||
|
// Feistel function
|
||||||
|
var f = 0;
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];
|
||||||
|
}
|
||||||
|
this._lBlock = rBlock;
|
||||||
|
this._rBlock = lBlock ^ f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Undo swap from last round
|
||||||
|
var t = this._lBlock;
|
||||||
|
this._lBlock = this._rBlock;
|
||||||
|
this._rBlock = t;
|
||||||
|
|
||||||
|
// Final permutation
|
||||||
|
exchangeLR.call(this, 1, 0x55555555);
|
||||||
|
exchangeRL.call(this, 8, 0x00ff00ff);
|
||||||
|
exchangeRL.call(this, 2, 0x33333333);
|
||||||
|
exchangeLR.call(this, 16, 0x0000ffff);
|
||||||
|
exchangeLR.call(this, 4, 0x0f0f0f0f);
|
||||||
|
|
||||||
|
// Set output
|
||||||
|
M[offset] = this._lBlock;
|
||||||
|
M[offset + 1] = this._rBlock;
|
||||||
|
},
|
||||||
|
|
||||||
|
keySize: 64/32,
|
||||||
|
|
||||||
|
ivSize: 64/32,
|
||||||
|
|
||||||
|
blockSize: 64/32
|
||||||
|
});
|
||||||
|
|
||||||
|
// Swap bits across the left and right words
|
||||||
|
function exchangeLR(offset, mask) {
|
||||||
|
var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;
|
||||||
|
this._rBlock ^= t;
|
||||||
|
this._lBlock ^= t << offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
function exchangeRL(offset, mask) {
|
||||||
|
var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;
|
||||||
|
this._lBlock ^= t;
|
||||||
|
this._rBlock ^= t << offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut functions to the cipher's object interface.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);
|
||||||
|
* var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);
|
||||||
|
*/
|
||||||
|
C.DES = BlockCipher._createHelper(DES);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Triple-DES block cipher algorithm.
|
||||||
|
*/
|
||||||
|
var TripleDES = C_algo.TripleDES = BlockCipher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var key = this._key;
|
||||||
|
var keyWords = key.words;
|
||||||
|
// Make sure the key length is valid (64, 128 or >= 192 bit)
|
||||||
|
if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {
|
||||||
|
throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extend the key according to the keying options defined in 3DES standard
|
||||||
|
var key1 = keyWords.slice(0, 2);
|
||||||
|
var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);
|
||||||
|
var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);
|
||||||
|
|
||||||
|
// Create DES instances
|
||||||
|
this._des1 = DES.createEncryptor(WordArray.create(key1));
|
||||||
|
this._des2 = DES.createEncryptor(WordArray.create(key2));
|
||||||
|
this._des3 = DES.createEncryptor(WordArray.create(key3));
|
||||||
|
},
|
||||||
|
|
||||||
|
encryptBlock: function (M, offset) {
|
||||||
|
this._des1.encryptBlock(M, offset);
|
||||||
|
this._des2.decryptBlock(M, offset);
|
||||||
|
this._des3.encryptBlock(M, offset);
|
||||||
|
},
|
||||||
|
|
||||||
|
decryptBlock: function (M, offset) {
|
||||||
|
this._des3.decryptBlock(M, offset);
|
||||||
|
this._des2.encryptBlock(M, offset);
|
||||||
|
this._des1.decryptBlock(M, offset);
|
||||||
|
},
|
||||||
|
|
||||||
|
keySize: 192/32,
|
||||||
|
|
||||||
|
ivSize: 64/32,
|
||||||
|
|
||||||
|
blockSize: 64/32
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut functions to the cipher's object interface.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);
|
||||||
|
* var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);
|
||||||
|
*/
|
||||||
|
C.TripleDES = BlockCipher._createHelper(TripleDES);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var StreamCipher = C_lib.StreamCipher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RC4 stream cipher algorithm.
|
||||||
|
*/
|
||||||
|
var RC4 = C_algo.RC4 = StreamCipher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var key = this._key;
|
||||||
|
var keyWords = key.words;
|
||||||
|
var keySigBytes = key.sigBytes;
|
||||||
|
|
||||||
|
// Init sbox
|
||||||
|
var S = this._S = [];
|
||||||
|
for (var i = 0; i < 256; i++) {
|
||||||
|
S[i] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Key setup
|
||||||
|
for (var i = 0, j = 0; i < 256; i++) {
|
||||||
|
var keyByteIndex = i % keySigBytes;
|
||||||
|
var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;
|
||||||
|
|
||||||
|
j = (j + S[i] + keyByte) % 256;
|
||||||
|
|
||||||
|
// Swap
|
||||||
|
var t = S[i];
|
||||||
|
S[i] = S[j];
|
||||||
|
S[j] = t;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Counters
|
||||||
|
this._i = this._j = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
M[offset] ^= generateKeystreamWord.call(this);
|
||||||
|
},
|
||||||
|
|
||||||
|
keySize: 256/32,
|
||||||
|
|
||||||
|
ivSize: 0
|
||||||
|
});
|
||||||
|
|
||||||
|
function generateKeystreamWord() {
|
||||||
|
// Shortcuts
|
||||||
|
var S = this._S;
|
||||||
|
var i = this._i;
|
||||||
|
var j = this._j;
|
||||||
|
|
||||||
|
// Generate keystream word
|
||||||
|
var keystreamWord = 0;
|
||||||
|
for (var n = 0; n < 4; n++) {
|
||||||
|
i = (i + 1) % 256;
|
||||||
|
j = (j + S[i]) % 256;
|
||||||
|
|
||||||
|
// Swap
|
||||||
|
var t = S[i];
|
||||||
|
S[i] = S[j];
|
||||||
|
S[j] = t;
|
||||||
|
|
||||||
|
keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update counters
|
||||||
|
this._i = i;
|
||||||
|
this._j = j;
|
||||||
|
|
||||||
|
return keystreamWord;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut functions to the cipher's object interface.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
|
||||||
|
* var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
|
||||||
|
*/
|
||||||
|
C.RC4 = StreamCipher._createHelper(RC4);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modified RC4 stream cipher algorithm.
|
||||||
|
*/
|
||||||
|
var RC4Drop = C_algo.RC4Drop = RC4.extend({
|
||||||
|
/**
|
||||||
|
* Configuration options.
|
||||||
|
*
|
||||||
|
* @property {number} drop The number of keystream words to drop. Default 192
|
||||||
|
*/
|
||||||
|
cfg: RC4.cfg.extend({
|
||||||
|
drop: 192
|
||||||
|
}),
|
||||||
|
|
||||||
|
_doReset: function () {
|
||||||
|
RC4._doReset.call(this);
|
||||||
|
|
||||||
|
// Drop
|
||||||
|
for (var i = this.cfg.drop; i > 0; i--) {
|
||||||
|
generateKeystreamWord.call(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut functions to the cipher's object interface.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
|
||||||
|
* var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
|
||||||
|
*/
|
||||||
|
C.RC4Drop = StreamCipher._createHelper(RC4Drop);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var StreamCipher = C_lib.StreamCipher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Reusable objects
|
||||||
|
var S = [];
|
||||||
|
var C_ = [];
|
||||||
|
var G = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rabbit stream cipher algorithm
|
||||||
|
*/
|
||||||
|
var Rabbit = C_algo.Rabbit = StreamCipher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var K = this._key.words;
|
||||||
|
var iv = this.cfg.iv;
|
||||||
|
|
||||||
|
// Swap endian
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate initial state values
|
||||||
|
var X = this._X = [
|
||||||
|
K[0], (K[3] << 16) | (K[2] >>> 16),
|
||||||
|
K[1], (K[0] << 16) | (K[3] >>> 16),
|
||||||
|
K[2], (K[1] << 16) | (K[0] >>> 16),
|
||||||
|
K[3], (K[2] << 16) | (K[1] >>> 16)
|
||||||
|
];
|
||||||
|
|
||||||
|
// Generate initial counter values
|
||||||
|
var C = this._C = [
|
||||||
|
(K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
|
||||||
|
(K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
|
||||||
|
(K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
|
||||||
|
(K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
|
||||||
|
];
|
||||||
|
|
||||||
|
// Carry bit
|
||||||
|
this._b = 0;
|
||||||
|
|
||||||
|
// Iterate the system four times
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
nextState.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modify the counters
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
C[i] ^= X[(i + 4) & 7];
|
||||||
|
}
|
||||||
|
|
||||||
|
// IV setup
|
||||||
|
if (iv) {
|
||||||
|
// Shortcuts
|
||||||
|
var IV = iv.words;
|
||||||
|
var IV_0 = IV[0];
|
||||||
|
var IV_1 = IV[1];
|
||||||
|
|
||||||
|
// Generate four subvectors
|
||||||
|
var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
|
||||||
|
var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
|
||||||
|
var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
|
||||||
|
var i3 = (i2 << 16) | (i0 & 0x0000ffff);
|
||||||
|
|
||||||
|
// Modify counter values
|
||||||
|
C[0] ^= i0;
|
||||||
|
C[1] ^= i1;
|
||||||
|
C[2] ^= i2;
|
||||||
|
C[3] ^= i3;
|
||||||
|
C[4] ^= i0;
|
||||||
|
C[5] ^= i1;
|
||||||
|
C[6] ^= i2;
|
||||||
|
C[7] ^= i3;
|
||||||
|
|
||||||
|
// Iterate the system four times
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
nextState.call(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
// Shortcut
|
||||||
|
var X = this._X;
|
||||||
|
|
||||||
|
// Iterate the system
|
||||||
|
nextState.call(this);
|
||||||
|
|
||||||
|
// Generate four keystream words
|
||||||
|
S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
|
||||||
|
S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
|
||||||
|
S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
|
||||||
|
S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
|
||||||
|
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
// Swap endian
|
||||||
|
S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
M[offset + i] ^= S[i];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
blockSize: 128/32,
|
||||||
|
|
||||||
|
ivSize: 64/32
|
||||||
|
});
|
||||||
|
|
||||||
|
function nextState() {
|
||||||
|
// Shortcuts
|
||||||
|
var X = this._X;
|
||||||
|
var C = this._C;
|
||||||
|
|
||||||
|
// Save old counter values
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
C_[i] = C[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate new counter values
|
||||||
|
C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
|
||||||
|
C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
|
||||||
|
|
||||||
|
// Calculate the g-values
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
var gx = X[i] + C[i];
|
||||||
|
|
||||||
|
// Construct high and low argument for squaring
|
||||||
|
var ga = gx & 0xffff;
|
||||||
|
var gb = gx >>> 16;
|
||||||
|
|
||||||
|
// Calculate high and low result of squaring
|
||||||
|
var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
|
||||||
|
var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
|
||||||
|
|
||||||
|
// High XOR low
|
||||||
|
G[i] = gh ^ gl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate new state values
|
||||||
|
X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
|
||||||
|
X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
|
||||||
|
X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
|
||||||
|
X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
|
||||||
|
X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
|
||||||
|
X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
|
||||||
|
X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
|
||||||
|
X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut functions to the cipher's object interface.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);
|
||||||
|
* var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);
|
||||||
|
*/
|
||||||
|
C.Rabbit = StreamCipher._createHelper(Rabbit);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// Shortcuts
|
||||||
|
var C = CryptoJS;
|
||||||
|
var C_lib = C.lib;
|
||||||
|
var StreamCipher = C_lib.StreamCipher;
|
||||||
|
var C_algo = C.algo;
|
||||||
|
|
||||||
|
// Reusable objects
|
||||||
|
var S = [];
|
||||||
|
var C_ = [];
|
||||||
|
var G = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rabbit stream cipher algorithm.
|
||||||
|
*
|
||||||
|
* This is a legacy version that neglected to convert the key to little-endian.
|
||||||
|
* This error doesn't affect the cipher's security,
|
||||||
|
* but it does affect its compatibility with other implementations.
|
||||||
|
*/
|
||||||
|
var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
|
||||||
|
_doReset: function () {
|
||||||
|
// Shortcuts
|
||||||
|
var K = this._key.words;
|
||||||
|
var iv = this.cfg.iv;
|
||||||
|
|
||||||
|
// Generate initial state values
|
||||||
|
var X = this._X = [
|
||||||
|
K[0], (K[3] << 16) | (K[2] >>> 16),
|
||||||
|
K[1], (K[0] << 16) | (K[3] >>> 16),
|
||||||
|
K[2], (K[1] << 16) | (K[0] >>> 16),
|
||||||
|
K[3], (K[2] << 16) | (K[1] >>> 16)
|
||||||
|
];
|
||||||
|
|
||||||
|
// Generate initial counter values
|
||||||
|
var C = this._C = [
|
||||||
|
(K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
|
||||||
|
(K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
|
||||||
|
(K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
|
||||||
|
(K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
|
||||||
|
];
|
||||||
|
|
||||||
|
// Carry bit
|
||||||
|
this._b = 0;
|
||||||
|
|
||||||
|
// Iterate the system four times
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
nextState.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modify the counters
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
C[i] ^= X[(i + 4) & 7];
|
||||||
|
}
|
||||||
|
|
||||||
|
// IV setup
|
||||||
|
if (iv) {
|
||||||
|
// Shortcuts
|
||||||
|
var IV = iv.words;
|
||||||
|
var IV_0 = IV[0];
|
||||||
|
var IV_1 = IV[1];
|
||||||
|
|
||||||
|
// Generate four subvectors
|
||||||
|
var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
|
||||||
|
var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
|
||||||
|
var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
|
||||||
|
var i3 = (i2 << 16) | (i0 & 0x0000ffff);
|
||||||
|
|
||||||
|
// Modify counter values
|
||||||
|
C[0] ^= i0;
|
||||||
|
C[1] ^= i1;
|
||||||
|
C[2] ^= i2;
|
||||||
|
C[3] ^= i3;
|
||||||
|
C[4] ^= i0;
|
||||||
|
C[5] ^= i1;
|
||||||
|
C[6] ^= i2;
|
||||||
|
C[7] ^= i3;
|
||||||
|
|
||||||
|
// Iterate the system four times
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
nextState.call(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_doProcessBlock: function (M, offset) {
|
||||||
|
// Shortcut
|
||||||
|
var X = this._X;
|
||||||
|
|
||||||
|
// Iterate the system
|
||||||
|
nextState.call(this);
|
||||||
|
|
||||||
|
// Generate four keystream words
|
||||||
|
S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
|
||||||
|
S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
|
||||||
|
S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
|
||||||
|
S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
|
||||||
|
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
// Swap endian
|
||||||
|
S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
|
||||||
|
(((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
M[offset + i] ^= S[i];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
blockSize: 128/32,
|
||||||
|
|
||||||
|
ivSize: 64/32
|
||||||
|
});
|
||||||
|
|
||||||
|
function nextState() {
|
||||||
|
// Shortcuts
|
||||||
|
var X = this._X;
|
||||||
|
var C = this._C;
|
||||||
|
|
||||||
|
// Save old counter values
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
C_[i] = C[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate new counter values
|
||||||
|
C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
|
||||||
|
C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
|
||||||
|
this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
|
||||||
|
|
||||||
|
// Calculate the g-values
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
var gx = X[i] + C[i];
|
||||||
|
|
||||||
|
// Construct high and low argument for squaring
|
||||||
|
var ga = gx & 0xffff;
|
||||||
|
var gb = gx >>> 16;
|
||||||
|
|
||||||
|
// Calculate high and low result of squaring
|
||||||
|
var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
|
||||||
|
var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
|
||||||
|
|
||||||
|
// High XOR low
|
||||||
|
G[i] = gh ^ gl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate new state values
|
||||||
|
X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
|
||||||
|
X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
|
||||||
|
X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
|
||||||
|
X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
|
||||||
|
X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
|
||||||
|
X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
|
||||||
|
X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
|
||||||
|
X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut functions to the cipher's object interface.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
|
||||||
|
* var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
|
||||||
|
*/
|
||||||
|
C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
return CryptoJS;
|
||||||
|
|
||||||
|
}));
|
||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
import cheerio from"./cheerio.min.js";import"./crypto-js.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.47beta15 20230728";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){var target=arguments[0];for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target}}if(!String.prototype.includes){String.prototype.includes=function(search,start){if(typeof start!=="number"){start=0}if(start+search.length>this.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k<len){if(o[k]===searchElement){return true}k++}return false}})}if(typeof String.prototype.startsWith!="function"){String.prototype.startsWith=function(prefix){return this.slice(0,prefix.length)===prefix}}if(typeof String.prototype.endsWith!="function"){String.prototype.endsWith=function(suffix){return this.indexOf(suffix,this.length-suffix.length)!==-1}}Object.prototype.myValues=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res};if(typeof Object.prototype.values!="function"){Object.prototype.values=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res}}if(typeof Array.prototype.join!="function"){Array.prototype.join=function(emoji){emoji=emoji||"";let self=this;let str="";let i=0;if(!Array.isArray(self)){throw String(self)+"is not Array"}if(self.length===0){return""}if(self.length===1){return String(self[0])}i=1;str=this[0];for(;i<self.length;i++){str+=String(emoji)+String(self[i])}return str}}String.prototype.rstrip=function(chars){let regex=new RegExp(chars+"$");return this.replace(regex,"")};Array.prototype.append=Array.prototype.push;String.prototype.strip=String.prototype.trim;function 是否正版(vipUrl){let flag=new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv");return flag.test(vipUrl)}function urlDeal(vipUrl){if(!vipUrl){return""}if(!是否正版(vipUrl)){return vipUrl}if(!/miguvideo/.test(vipUrl)){vipUrl=vipUrl.split("#")[0].split("?")[0]}return vipUrl}function setResult(d){if(!Array.isArray(d)){return[]}VODS=[];d.forEach(function(it){let obj={vod_id:it.url||"",vod_name:it.title||"",vod_remarks:it.desc||"",vod_content:it.content||"",vod_pic:it.pic_url||it.img||""};let keys=Object.keys(it);if(keys.includes("tname")){obj.type_name=it.tname||""}if(keys.includes("tid")){obj.type_id=it.tid||""}if(keys.includes("year")){obj.vod_year=it.year||""}if(keys.includes("actor")){obj.vod_actor=it.actor||""}if(keys.includes("director")){obj.vod_director=it.director||""}if(keys.includes("area")){obj.vod_area=it.area||""}VODS.push(obj)});return VODS}function setResult2(res){VODS=res.list||[];return VODS}function setHomeResult(res){if(!res||typeof res!=="object"){return[]}return setResult(res.list)}function rc(js){if(js==="maomi_aes.js"){var a=CryptoJS.enc.Utf8.parse("625222f9149e961d");var t=CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");return{De:function(word){word=CryptoJS.enc.Hex.parse(word);return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word),a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)},En:function(word){var Encrypted=CryptoJS.AES.encrypt(word,a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});return Encrypted.ciphertext.toString()}}}return{}}function maoss(jxurl,ref,key){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));eval(getCryptoJS());try{var getVideoInfo=function(text){return CryptoJS.AES.decrypt(text,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)};var token_key=key==undefined?"dvyYRQlnPRCMdQSe":key;if(ref){var html=request(jxurl,{headers:{Referer:ref}})}else{var html=request(jxurl)}if(html.indexOf("&btwaf=")!=-1){html=request(jxurl+"&btwaf"+html.match(/&btwaf(.*?)"/)[1],{headers:{Referer:ref}})}var token_iv=html.split('_token = "')[1].split('"')[0];var key=CryptoJS.enc.Utf8.parse(token_key);var iv=CryptoJS.enc.Utf8.parse(token_iv);eval(html.match(/var config = {[\s\S]*?}/)[0]+"");if(!config.url.startsWith("http")){config.url=CryptoJS.AES.decrypt(config.url,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)}return config.url}catch(e){return""}}function urlencode(str){str=(str+"").toString();return encodeURIComponent(str).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")}function base64Encode(text){return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text))}function base64Decode(text){return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))}function md5(text){return CryptoJS.MD5(text).toString()}function encodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.encode(input)}return input}function decodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.decode(input)}return input}function getCryptoJS(){return'console.log("CryptoJS已装载");'}function getProxyUrl(){if(typeof getProxy==="function"){return getProxy(true)}else{return"http://127.0.0.1:9978/proxy?do=js"}}function forceOrder(lists,key,option){let start=Math.floor(lists.length/2);let end=Math.min(lists.length-1,start+1);if(start>=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html=request(OCR_API,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cnt<OCR_RETRY){try{let yzm_url=`${host}/index.php/verify/index.html`;console.log(`验证码链接:${yzm_url}`);let hhtml=request(yzm_url,{withHeaders:true,toBase64:true},true);let json=JSON.parse(hhtml);if(!cookie){let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie,"User-Agent":MOBILE_UA},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function require(url){eval(request(url))}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj.method="POST";return request(url,obj)}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i<cnt;i++){classes.push({type_id:urls[i],type_name:names[i]})}}if(homeObj.class_parse){let p=homeObj.class_parse.split(";");let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;MY_URL=rule.url;if(p.length>=3){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p[0]);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表双层定位处理发生错误:"+e.message)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表单层定位处理发生错误:"+e.message)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print("合并不同分类对应的默认筛选出错:"+e.message)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");let url=searchObj.searchUrl.replaceAll("**",searchObj.wd).replaceAll("fypage",searchObj.pg);MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print("搜索发生错误:"+e.message);return"{}"}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print("格式化LISTS发生错误:"+e.message)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print("js执行lists: 发生错误:"+e.message)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i<playFrom.length;i++){let tab_name=playFrom[i];let tab_ext=p.tabs.split(";").length>1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL)}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i<vodList.length;i++){let it=vodList[i];new_vod_list.push(_pdfh(it,list_text).trim()+"$"+_pd(it,list_url,MY_URL))}}if(new_vod_list.length>0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);return JSON.stringify({list:[vod]})}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;let common_play={parse:1,url:input,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.replace("js:","").trim();print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:1,jx:tellIsJx(input),url:input}}catch(e){print("js免嗅错误:"+e.message);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length===3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log("执行嗅探规则发生错误:"+e.message);return false}}}function init(ext){console.log("init");try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")){let js=request(ext,{method:"GET"});if(js){eval(js.replace("var rule","rule"))}}else{eval(ext.replace("var rule","rule"))}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:`+e.message)}}rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl;rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:`+e.message)}}}}}catch(e){console.log("处理headers发生错误:"+e.message)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log("init_test发生错误:"+e.message)}}let homeHtmlCache=undefined;function home(filter){console.log("home");let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:rule.class_parse||"",cate_exclude:rule.cate_exclude};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith(":js")){rule.proxy_rule=rule.proxy_rule.replace(":js","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("准备执行辅助嗅探代理规则:\n"+rule.isVideo)}return enable_sniffer}function isVideo(url){let t=0;if(rule.isVideo&&rule.isVideo.trim()){rule.isVideo=rule.isVideo.trim()}if(rule.isVideo.startsWith(":js")){rule.isVideo=rule.isVideo.replace(":js","");t=1}let isVideoObj={url:url,isVideo:rule.isVideo,t:t};return isVideoParse(isVideoObj)}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,DRPY:DRPY};
|
||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
import cheerio from"./cheerio.min.js";import"./cheerio.min.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.41beta1 20230328";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|APP|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(typeof MY_URL==="undefined"){var MY_URL}var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url)$/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){var target=arguments[0];for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target}}if(!String.prototype.includes){String.prototype.includes=function(search,start){if(typeof start!=="number"){start=0}if(start+search.length>this.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k<len){if(o[k]===searchElement){return true}k++}return false}})}if(typeof String.prototype.startsWith!="function"){String.prototype.startsWith=function(prefix){return this.slice(0,prefix.length)===prefix}}if(typeof String.prototype.endsWith!="function"){String.prototype.endsWith=function(suffix){return this.indexOf(suffix,this.length-suffix.length)!==-1}}Object.prototype.myValues=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res};if(typeof Object.prototype.values!="function"){Object.prototype.values=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res}}if(typeof Array.prototype.join!="function"){Array.prototype.join=function(emoji){emoji=emoji||"";let self=this;let str="";let i=0;if(!Array.isArray(self)){throw String(self)+"is not Array"}if(self.length===0){return""}if(self.length===1){return String(self[0])}i=1;str=this[0];for(;i<self.length;i++){str+=String(emoji)+String(self[i])}return str}}String.prototype.rstrip=function(chars){let regex=new RegExp(chars+"$");return this.replace(regex,"")};Array.prototype.append=Array.prototype.push;String.prototype.strip=String.prototype.trim;function 是否正版(vipUrl){let flag=new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv");return flag.test(vipUrl)}function urlDeal(vipUrl){if(!vipUrl){return""}if(!是否正版(vipUrl)){return vipUrl}if(!/miguvideo/.test(vipUrl)){vipUrl=vipUrl.split("#")[0].split("?")[0]}return vipUrl}function setResult(d){if(!Array.isArray(d)){return[]}VODS=[];d.forEach(function(it){let obj={vod_id:it.url||"",vod_name:it.title||"",vod_remarks:it.desc||"",vod_content:it.content||"",vod_pic:it.pic_url||it.img||""};let keys=Object.keys(it);if(keys.includes("tname")){obj.type_name=it.tname||""}if(keys.includes("tid")){obj.type_id=it.tid||""}if(keys.includes("year")){obj.vod_year=it.year||""}if(keys.includes("actor")){obj.vod_actor=it.actor||""}if(keys.includes("director")){obj.vod_director=it.director||""}if(keys.includes("area")){obj.vod_area=it.area||""}VODS.push(obj)});return VODS}function setResult2(res){VODS=res.list||[];return VODS}function setHomeResult(res){if(!res||typeof res!=="object"){return[]}return setResult(res.list)}function rc(js){if(js==="maomi_aes.js"){var a=CryptoJS.enc.Utf8.parse("625222f9149e961d");var t=CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");return{De:function(word){word=CryptoJS.enc.Hex.parse(word);return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word),a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)},En:function(word){var Encrypted=CryptoJS.AES.encrypt(word,a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});return Encrypted.ciphertext.toString()}}}return{}}function maoss(jxurl,ref,key){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));eval(getCryptoJS());try{var getVideoInfo=function(text){return CryptoJS.AES.decrypt(text,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)};var token_key=key==undefined?"dvyYRQlnPRCMdQSe":key;if(ref){var html=request(jxurl,{headers:{Referer:ref}})}else{var html=request(jxurl)}if(html.indexOf("&btwaf=")!=-1){html=request(jxurl+"&btwaf"+html.match(/&btwaf(.*?)"/)[1],{headers:{Referer:ref}})}var token_iv=html.split('_token = "')[1].split('"')[0];var key=CryptoJS.enc.Utf8.parse(token_key);var iv=CryptoJS.enc.Utf8.parse(token_iv);eval(html.match(/var config = {[\s\S]*?}/)[0]+"");if(!config.url.startsWith("http")){config.url=CryptoJS.AES.decrypt(config.url,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)}return config.url}catch(e){return""}}function urlencode(str){str=(str+"").toString();return encodeURIComponent(str).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")}function base64Encode(text){return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text))}function base64Decode(text){return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))}function md5(text){return CryptoJS.MD5(text).toString()}function encodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.encode(input)}return input}function decodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.decode(input)}return input}function getCryptoJS(){return'console.log("CryptoJS已装载");'}function forceOrder(lists,key,option){let start=Math.floor(lists.length/2);let end=Math.min(lists.length-1,start+1);if(start>=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1]}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html=request(OCR_API,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cnt<OCR_RETRY){try{let yzm_url=`${host}/index.php/verify/index.html`;console.log(`验证码链接:${yzm_url}`);let hhtml=request(yzm_url,{withHeaders:true,toBase64:true},true);let json=JSON.parse(hhtml);if(!cookie){let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie,"User-Agent":MOBILE_UA},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function require(url){eval(request(url))}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj.method="POST";return request(url,obj)}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i<cnt;i++){classes.push({type_id:urls[i],type_name:names[i]})}}if(homeObj.class_parse){let p=homeObj.class_parse.split(";");let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;MY_URL=rule.url;if(p.length>=3){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p[0]);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;const HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表双层定位处理发生错误:"+e.message)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表单层定位处理发生错误:"+e.message)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print("合并不同分类对应的默认筛选出错:"+e.message)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.com/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");let url=searchObj.searchUrl.replaceAll("**",searchObj.wd).replaceAll("fypage",searchObj.pg);MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print("搜索发生错误:"+e.message);return"{}"}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print("格式化LISTS发生错误:"+e.message)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print("js执行lists: 发生错误:"+e.message)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i<playFrom.length;i++){let tab_name=playFrom[i];let tab_ext=p.tabs.split(";").length>1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL)}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i<vodList.length;i++){let it=vodList[i];new_vod_list.push(_pdfh(it,list_text).trim()+"$"+_pd(it,list_url,MY_URL))}}if(new_vod_list.length>0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);return JSON.stringify({list:[vod]})}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;let common_play={parse:1,url:input,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.replace("js:","").trim();print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:1,jx:tellIsJx(input),url:input}}catch(e){print("js免嗅错误:"+e.message);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function init(ext){console.log("init");try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")){let js=request(ext,{method:"GET"});if(js){eval(js.replace("var rule","rule"))}}else{eval(ext.replace("var rule","rule"))}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.host=(rule.host||"").rstrip("/");rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl;rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}}}catch(e){console.log("处理headers发生错误:"+e.message)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log("init_test发生错误:"+e.message)}}let homeHtmlCache=undefined;function home(filter){console.log("home");let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:rule.class_parse||"",cate_exclude:rule.cate_exclude};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:1,quick:quick};return searchParse(searchObj)}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,DRPY:DRPY};
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -0,0 +1,39 @@
|
|||||||
|
// 原"幻听网听书"网站 已更名为 "58动漫"
|
||||||
|
|
||||||
|
// muban.首图2.二级.title = 'h1--span&&title;.data--span:eq(0)&&Text';
|
||||||
|
// muban.首图2.二级.desc = '.data--span:eq(3)&&Text;;;.data--span:eq(1)&&Text;.data--span:eq(2)&&Text';
|
||||||
|
// muban.首图2.二级.content = '.detail-content&&Text';
|
||||||
|
// muban.首图2.二级.tabs = '.stui-pannel__head.bottom-line&&h3';
|
||||||
|
muban.vfed.二级.title = 'h1&&Text;.fed-col-md3:eq(0)&&Text';
|
||||||
|
muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6--span:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text';
|
||||||
|
muban.vfed.二级.tabs = '.nav-tabs&&li';
|
||||||
|
muban.vfed.二级.lists = '.myui-content__list:eq(#id)&&li';
|
||||||
|
var rule = {
|
||||||
|
// title:'幻听网听书',
|
||||||
|
title:'58动漫',
|
||||||
|
// 模板:'首图2',
|
||||||
|
模板:'vfed',
|
||||||
|
host:'http://www.ting38.com',
|
||||||
|
// url:'/ting/fyclass-fypage.html',
|
||||||
|
url:'/search.php?page=fypage&searchtype=5&tid=fyclassfyfilter',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'&order={{fl.by}}&area={{fl.area}}&year={{fl.year}}',
|
||||||
|
filter:{
|
||||||
|
"1":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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":"more","v":"more"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hit"},{"n":"推荐","v":"commend"}]}],
|
||||||
|
"2":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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":"more","v":"more"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hit"},{"n":"推荐","v":"commend"}]}],
|
||||||
|
"3":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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":"more","v":"more"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hit"},{"n":"推荐","v":"commend"}]}],
|
||||||
|
"4":[{"key":"area","name":"地区","value":[{"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":"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":"more","v":"more"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hit"},{"n":"推荐","v":"commend"}]}]
|
||||||
|
},
|
||||||
|
filter_def:{
|
||||||
|
1:{cateId:'1'},
|
||||||
|
2:{cateId:'2'},
|
||||||
|
3:{cateId:'3'},
|
||||||
|
4:{cateId:'4'}
|
||||||
|
},
|
||||||
|
searchUrl:'/search.php?page=fypage&searchword=**&searchtype=',
|
||||||
|
// class_parse: '.stui-header__menu li:gt(0);a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
// class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
// cate_exclude:'导航',
|
||||||
|
// 搜索:'.stui-vodlist__media:eq(0) li;a&&title;.lazyload&&data-original;p:eq(0)&&Text;a&&href;.pic-text&&Text',
|
||||||
|
搜索: '.fed-list-item;a&&title;a&&data-original;.fed-list-remarks&&Text;a&&href',
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
// https://m.agemys.org/#/
|
||||||
|
|
||||||
|
var rule = {
|
||||||
|
title:'AGE动漫',
|
||||||
|
host:'https://api.agemys.org',
|
||||||
|
homeUrl:'/v2/update?page=1&size=30',
|
||||||
|
url:'/v2/catalog?genre=fyclass&fyfilter&page=fypage&size=10',
|
||||||
|
searchUrl:'/v2/search?query=**&page=fypage',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:1,
|
||||||
|
filter:{
|
||||||
|
"all":[{"key":"area","name":"地区","value":[{"n":"全部","v":"all"},{"n":"日本","v":"日本"},{"n":"中国","v":"中国"},{"n":"欧美","v":"欧美"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":"all"},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"all"},{"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"}]},{"key":"class","name":"类型","value":[{"n":"全部","v":"all"},{"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":"by","name":"排序","value":[{"n":"更新时间","v":"time"},{"n":"名称","v":"name"},{"n":"点击量","v":"hits"}]}],
|
||||||
|
"TV":[{"key":"area","name":"地区","value":[{"n":"全部","v":"all"},{"n":"日本","v":"日本"},{"n":"中国","v":"中国"},{"n":"欧美","v":"欧美"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":"all"},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"all"},{"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"}]},{"key":"class","name":"类型","value":[{"n":"全部","v":"all"},{"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":"by","name":"排序","value":[{"n":"更新时间","v":"更新时间"},{"n":"名称","v":"名称"},{"n":"点击量","v":"点击量"}]}],
|
||||||
|
"剧场版":[{"key":"area","name":"地区","value":[{"n":"全部","v":"all"},{"n":"日本","v":"日本"},{"n":"中国","v":"中国"},{"n":"欧美","v":"欧美"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":"all"},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"all"},{"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"}]},{"key":"class","name":"类型","value":[{"n":"全部","v":"all"},{"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":"by","name":"排序","value":[{"n":"更新时间","v":"更新时间"},{"n":"名称","v":"名称"},{"n":"点击量","v":"点击量"}]}],
|
||||||
|
"OVA":[{"key":"area","name":"地区","value":[{"n":"全部","v":"all"},{"n":"日本","v":"日本"},{"n":"中国","v":"中国"},{"n":"欧美","v":"欧美"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":"all"},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"all"},{"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"}]},{"key":"class","name":"类型","value":[{"n":"全部","v":"all"},{"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":"by","name":"排序","value":[{"n":"更新时间","v":"更新时间"},{"n":"名称","v":"名称"},{"n":"点击量","v":"点击量"}]}]
|
||||||
|
},
|
||||||
|
filter_url:'label={{fl.class or "all"}}&letter={{fl.letter or "all"}}&order={{fl.by or "time"}}®ion={{fl.area or "all"}}&resource=all&season=all&status=all&year={{fl.year or "all"}}',
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA',
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
class_name:'TV&剧场版&OVA',
|
||||||
|
class_url:'TV&剧场版&OVA',
|
||||||
|
play_parse:true,
|
||||||
|
lazy:`js:
|
||||||
|
let purl = input.split("|")[0];
|
||||||
|
let from = input.split("|")[1];
|
||||||
|
let referer = 'https://m.agemys.org/';
|
||||||
|
if(/99m3u8|tkm3u8|hnm3u8|lzm3u8|wolong|wjm3u8|sdm3u8|kbm3u8|bjm3u8|xkm3u8|tpm3u8/.test(from)){
|
||||||
|
let purl2 = request('https://zj.sp-flv.com:8443/?url=' + purl, {
|
||||||
|
headers: {
|
||||||
|
"Referer": referer
|
||||||
|
}
|
||||||
|
}).match(/r video_url.*= \'(.*?)\'/)[1];
|
||||||
|
input = {
|
||||||
|
jx: 0,
|
||||||
|
url: purl2,
|
||||||
|
parse: 0,
|
||||||
|
header: JSON.stringify({
|
||||||
|
'referer': referer
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
input = {
|
||||||
|
jx: 0,
|
||||||
|
url: 'https://vip.sp-flv.com:8443/?url=' + purl,
|
||||||
|
parse: 1,
|
||||||
|
header: JSON.stringify({
|
||||||
|
'referer': referer
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
limit:6,
|
||||||
|
推荐:'json:videos;Title;PicSmall;NewTitle;AID',
|
||||||
|
一级:'json:videos;name;cover;uptodate;id',
|
||||||
|
二级:`js:
|
||||||
|
try {
|
||||||
|
let html = JSON.parse(request(input));
|
||||||
|
let node = html.video;
|
||||||
|
let episodes = node.playlists;
|
||||||
|
VOD = {
|
||||||
|
vod_id: node["id"],
|
||||||
|
vod_name: node["name"],
|
||||||
|
vod_pic: node["cover"],
|
||||||
|
type_name: node["tags"],
|
||||||
|
vod_year: node["year"],
|
||||||
|
vod_area: node["area"],
|
||||||
|
vod_remarks: node["uptodate"],
|
||||||
|
vod_actor: node["company"],
|
||||||
|
vod_director: node["writer"],
|
||||||
|
vod_content: node["intro_clean"],
|
||||||
|
};
|
||||||
|
if (typeof play_url === "undefined") {
|
||||||
|
var play_url = "";
|
||||||
|
}
|
||||||
|
let playFrom = [];
|
||||||
|
let playList = [];
|
||||||
|
let kplayList = [];
|
||||||
|
Object.keys(episodes).forEach(function(key) {
|
||||||
|
playFrom.append(key);
|
||||||
|
kplayList = episodes[key].map(function(it) {
|
||||||
|
return it[0] + "$" + play_url + urlencode(it[1] + "|" + key)
|
||||||
|
}).join("#")
|
||||||
|
playList.append(kplayList);
|
||||||
|
});
|
||||||
|
let vod_play_from = playFrom.join("$$$");
|
||||||
|
let vod_play_url = playList.join("$$$");
|
||||||
|
VOD["vod_play_from"] = vod_play_from;
|
||||||
|
VOD["vod_play_url"] = vod_play_url;
|
||||||
|
log(VOD);
|
||||||
|
} catch (e) {
|
||||||
|
log("获取二级详情页发生错误:" + e.message);
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
detailUrl:'/v2/detail/fyid',
|
||||||
|
搜索:'json:data.videos;name;cover;uptodate;id;intro',
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
// http://www.ntdm.tv
|
||||||
|
var rule={
|
||||||
|
title:'NT动漫',
|
||||||
|
host:'http://www.ntdm8.com',
|
||||||
|
homeUrl:'/type/riben.html',
|
||||||
|
// url:'/show/fyclass--------fypage---.html',
|
||||||
|
url:'/show/fyclassfyfilter.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'--{{fl.by}}-{{fl.class}}--{{fl.letter}}---fypage---{{fl.year}}',
|
||||||
|
filter:{
|
||||||
|
"riben":[{"key":"year","name":"年份:","value":[{"n":"全部","v":""},{"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以前"}]},{"key":"class","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":"神魔"},{"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":"letter","name":"字母:","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0~9","v":"0~9"}]},{"key":"by","name":"排序:","value":[{"n":"更新时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"zhongguo":[{"key":"year","name":"年份:","value":[{"n":"全部","v":""},{"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以前"}]},{"key":"class","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":"神魔"},{"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":"letter","name":"字母:","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0~9","v":"0~9"}]},{"key":"by","name":"排序:","value":[{"n":"更新时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"omei":[{"key":"year","name":"年份:","value":[{"n":"全部","v":""},{"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以前"}]},{"key":"class","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":"神魔"},{"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":"letter","name":"字母:","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0~9","v":"0~9"}]},{"key":"by","name":"排序:","value":[{"n":"更新时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
},
|
||||||
|
searchUrl:'/search/**----------fypage---.html',
|
||||||
|
searchable:2,//是否启用全局搜索,
|
||||||
|
quickSearch:1,//是否启用快速搜索,
|
||||||
|
headers:{//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent':'MOBILE_UA',
|
||||||
|
},
|
||||||
|
class_parse: '.search-tag li;a&&Text;a&&href;.*/(\\w+).html',
|
||||||
|
play_parse:true,
|
||||||
|
detailUrl:'',
|
||||||
|
lazy:"",
|
||||||
|
limit:6,
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.blockcontent1&&.blockdif2;img&&alt;img&&src;.newname&&Text;a&&href',
|
||||||
|
二级访问前:'',
|
||||||
|
二级:{
|
||||||
|
"title":"h4&&Text;.detail_imform_value:eq(6)&&Text",
|
||||||
|
"img":".poster&&src",
|
||||||
|
"desc":".detail_imform_kv:eq(0)&&Text;.detail_imform_value:eq(5)&&Text;.detail_imform_value:eq(2)&&Text;.detail_imform_kv:eq(0)&&Text;.detail_imform_kv:eq(3)&&Text",
|
||||||
|
"content":".detail_imform_desc_pre&&Text",
|
||||||
|
"tabs":"#menu0&&li",
|
||||||
|
"lists":".movurl:eq(#id)&&li"},
|
||||||
|
搜索:'*',
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
muban.mxpro.二级.desc = '.module-info-item:eq(4)&&Text;;;.module-info-item-content:eq(1)&&Text;.module-info-item-content:eq(0)&&Text';
|
||||||
|
muban.mxpro.二级.tabs = '#y-playList&&.module-tab-item';
|
||||||
|
var rule = {
|
||||||
|
title:'NyaFun',
|
||||||
|
模板:'mxpro',
|
||||||
|
host:'https://www.nyafun.net',
|
||||||
|
// url:'/show/fyclass/page/fypage.html',
|
||||||
|
url:'/show/fyclassfyfilter.html',
|
||||||
|
searchUrl: '/search/wd/**/page/fypage.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'{{fl.area}}{{fl.by}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}',
|
||||||
|
filter: {
|
||||||
|
"2":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"奇幻","v":"/class/奇幻"},{"n":"战斗","v":"/class/战斗"},{"n":"冒险","v":"/class/冒险"},{"n":"热血","v":"/class/热血"},{"n":"日常","v":"/class/日常"},{"n":"搞笑","v":"/class/搞笑"},{"n":"后宫","v":"/class/后宫"},{"n":"异世界","v":"/class/异世界"},{"n":"穿越","v":"/class/穿越"},{"n":"治愈","v":"/class/治愈"},{"n":"爱情","v":"/class/爱情"},{"n":"狗粮","v":"/class/狗粮"},{"n":"小说改","v":"/class/小说改"},{"n":"漫画改","v":"/class/漫画改"},{"n":"游戏改","v":"/class/游戏改"},{"n":"偶像","v":"/class/偶像"},{"n":"校园","v":"/class/校园"},{"n":"催泪","v":"/class/催泪"},{"n":"青春","v":"/class/青春"},{"n":"恋爱","v":"/class/恋爱"},{"n":"机战","v":"/class/机战"},{"n":"科幻","v":"/class/科幻"},{"n":"百合","v":"/class/百合"},{"n":"音乐","v":"/class/音乐"},{"n":"悬疑","v":"/class/悬疑"},{"n":"恐怖","v":"/class/恐怖"},{"n":"运动","v":"/class/运动"},{"n":"性转","v":"/class/性转"},{"n":"党争","v":"/class/党争"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"/area/日本"},{"n":"美国","v":"/area/美国"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"日语","v":"/lang/日语"},{"n":"英语","v":"/lang/英语"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"1":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"奇幻","v":"/class/奇幻"},{"n":"战斗","v":"/class/战斗"},{"n":"冒险","v":"/class/冒险"},{"n":"热血","v":"/class/热血"},{"n":"日常","v":"/class/日常"},{"n":"搞笑","v":"/class/搞笑"},{"n":"后宫","v":"/class/后宫"},{"n":"异世界","v":"/class/异世界"},{"n":"穿越","v":"/class/穿越"},{"n":"治愈","v":"/class/治愈"},{"n":"爱情","v":"/class/爱情"},{"n":"狗粮","v":"/class/狗粮"},{"n":"小说改","v":"/class/小说改"},{"n":"漫画改","v":"/class/漫画改"},{"n":"游戏改","v":"/class/游戏改"},{"n":"偶像","v":"/class/偶像"},{"n":"校园","v":"/class/校园"},{"n":"催泪","v":"/class/催泪"},{"n":"青春","v":"/class/青春"},{"n":"恋爱","v":"/class/恋爱"},{"n":"机战","v":"/class/机战"},{"n":"科幻","v":"/class/科幻"},{"n":"百合","v":"/class/百合"},{"n":"音乐","v":"/class/音乐"},{"n":"悬疑","v":"/class/悬疑"},{"n":"恐怖","v":"/class/恐怖"},{"n":"运动","v":"/class/运动"},{"n":"性转","v":"/class/性转"},{"n":"党争","v":"/class/党争"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"107":[{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
},
|
||||||
|
class_parse: '.navbar-items&&li;a&&title;a&&href;/(\\d+).html',
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
muban.海螺3.二级.title = '.hl-dc-title&&Text;.hl-col-xs-12.hl-col-sm-4--em:eq(2)&&Text';
|
||||||
|
muban.海螺3.二级.desc = '.hl-col-xs-12:eq(2)&&Text;.hl-col-xs-12.hl-col-sm-4:(0)&&Text;.hl-col-xs-12.hl-col-sm-4:(1)&&Text;.hl-col-xs-12:eq(3)&&Text;.hl-col-xs-12:eq(4)&&Text';
|
||||||
|
var rule = {
|
||||||
|
title:'AnFuns动漫',
|
||||||
|
模板:'海螺3',
|
||||||
|
host:'https://www.anfuns.cc',
|
||||||
|
cate_exclude: '最新|排行',
|
||||||
|
// url:'/type/fyclass-fypage.html',
|
||||||
|
url:'/show/fyclassfyfilter.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'---{{fl.year}}{{fl.by}}/page/fypage',
|
||||||
|
filter: {
|
||||||
|
"1":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"/by/time"},{"n":"最热","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"2":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"/by/time"},{"n":"最热","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"3":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"/by/time"},{"n":"最热","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"4":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"/by/time"},{"n":"最热","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
},
|
||||||
|
searchUrl:'/search/page/fypage/wd/**.html',
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
// http://www.ntdm.tv
|
||||||
|
var rule={
|
||||||
|
title:'NT动漫',
|
||||||
|
host:'http://www.ntdm8.com',
|
||||||
|
homeUrl:'/type/riben.html',
|
||||||
|
// url:'/show/fyclass--------fypage---.html',
|
||||||
|
url:'/show/fyclassfyfilter.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'--{{fl.by}}-{{fl.class}}--{{fl.letter}}---fypage---{{fl.year}}',
|
||||||
|
filter:{
|
||||||
|
"riben":[{"key":"year","name":"年份:","value":[{"n":"全部","v":""},{"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以前"}]},{"key":"class","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":"神魔"},{"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":"letter","name":"字母:","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0~9","v":"0~9"}]},{"key":"by","name":"排序:","value":[{"n":"更新时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"zhongguo":[{"key":"year","name":"年份:","value":[{"n":"全部","v":""},{"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以前"}]},{"key":"class","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":"神魔"},{"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":"letter","name":"字母:","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0~9","v":"0~9"}]},{"key":"by","name":"排序:","value":[{"n":"更新时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"omei":[{"key":"year","name":"年份:","value":[{"n":"全部","v":""},{"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以前"}]},{"key":"class","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":"神魔"},{"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":"letter","name":"字母:","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"},{"n":"0~9","v":"0~9"}]},{"key":"by","name":"排序:","value":[{"n":"更新时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
},
|
||||||
|
searchUrl:'/search/**----------fypage---.html',
|
||||||
|
searchable:2,//是否启用全局搜索,
|
||||||
|
quickSearch:0,//是否启用快速搜索,
|
||||||
|
headers:{//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent':'MOBILE_UA',
|
||||||
|
},
|
||||||
|
class_parse: '.search-tag li;a&&Text;a&&href;.*/(\\w+).html',
|
||||||
|
play_parse:true,
|
||||||
|
detailUrl:'',
|
||||||
|
lazy:"",
|
||||||
|
limit:6,
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.blockcontent1&&.blockdif2;img&&alt;img&&src;.newname&&Text;a&&href',
|
||||||
|
二级访问前:'',
|
||||||
|
二级:{
|
||||||
|
"title":"h4&&Text;.detail_imform_value:eq(6)&&Text",
|
||||||
|
"img":".poster&&src",
|
||||||
|
"desc":".detail_imform_kv:eq(0)&&Text;.detail_imform_value:eq(5)&&Text;.detail_imform_value:eq(2)&&Text;.detail_imform_kv:eq(0)&&Text;.detail_imform_kv:eq(3)&&Text",
|
||||||
|
"content":".detail_imform_desc_pre&&Text",
|
||||||
|
"tabs":"#menu0&&li",
|
||||||
|
"lists":".movurl:eq(#id)&&li"},
|
||||||
|
搜索:'*',
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'动漫岛',
|
||||||
|
host:'http://www.dmd85.com',
|
||||||
|
// url:'/vod-list-id-fyclass-pg-fypage-order--by-{by}-class-{class}-year-{year}-letter--area--lang-.html',
|
||||||
|
url:'/vod-list-id-fyclass-pg-fypage-order-fyfilter-area--lang-.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'-by-{{fl.by}}-class-{{fl.class}}-year-{{fl.year}}-letter-{{fl.letter}}',
|
||||||
|
filter: {"1":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"1"},{"n":"热血","v":"2"},{"n":"奇幻","v":"3"},{"n":"恋爱","v":"4"},{"n":"校园","v":"5"},{"n":"后宫","v":"6"},{"n":"搞笑","v":"7"},{"n":"青春","v":"8"},{"n":"百合","v":"9"},{"n":"科幻","v":"14"},{"n":"推理","v":"13"},{"n":"魔法","v":"12"},{"n":"神魔","v":"11"},{"n":"治愈","v":"10"},{"n":"竞技","v":"59"},{"n":"悬疑","v":"60"},{"n":"战争","v":"62"},{"n":"萝莉","v":"63"},{"n":"魔幻","v":"64"},{"n":"战斗","v":"65"},{"n":"歌舞","v":"98"},{"n":"历史","v":"99"},{"n":"励志","v":"108"},{"n":"偶像","v":"118"},{"n":"职场","v":"121"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"time"},{"n":"得分","v":"score"},{"n":"总排行","v":"hits"}]}],"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"36"},{"n":"热血","v":"37"},{"n":"奇幻","v":"38"},{"n":"恋爱","v":"39"},{"n":"恋爱","v":"40"},{"n":"恋爱","v":"40"},{"n":"搞笑","v":"42"},{"n":"治愈","v":"43"},{"n":"神魔","v":"44"},{"n":"魔法","v":"45"},{"n":"百合","v":"46"},{"n":"推理","v":"47"},{"n":"科幻","v":"48"},{"n":"竞技","v":"49"},{"n":"悬疑","v":"66"},{"n":"战争","v":"68"},{"n":"萝莉","v":"69"},{"n":"魔幻","v":"70"},{"n":"战斗","v":"71"},{"n":"青春","v":"72"},{"n":"历史","v":"100"},{"n":"歌舞","v":"101"},{"n":"恐怖","v":"104"},{"n":"职场","v":"107"},{"n":"励志","v":"109"},{"n":"偶像","v":"119"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"time"},{"n":"得分","v":"score"},{"n":"总排行","v":"hits"}]}],"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"50"},{"n":"热血","v":"51"},{"n":"武侠","v":"52"},{"n":"奇幻","v":"53"},{"n":"玄幻","v":"54"},{"n":"竞技","v":"55"},{"n":"魔幻","v":"56"},{"n":"科幻","v":"57"},{"n":"恋爱","v":"58"},{"n":"历史","v":"73"},{"n":"战斗","v":"74"},{"n":"搞笑","v":"75"},{"n":"神魔","v":"76"},{"n":"战争","v":"97"},{"n":"古风","v":"111"},{"n":"少女","v":"112"},{"n":"萝莉","v":"113"},{"n":"治愈","v":"114"},{"n":"日常","v":"115"},{"n":"歌舞","v":"116"},{"n":"偶像","v":"120"},{"n":"职场","v":"123"},{"n":"仙侠","v":"125"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"time"},{"n":"得分","v":"score"},{"n":"总排行","v":"hits"}]}],"16":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"77"},{"n":"热血","v":"78"},{"n":"奇幻","v":"79"},{"n":"恋爱","v":"80"},{"n":"校园","v":"81"},{"n":"后宫","v":"82"},{"n":"搞笑","v":"83"},{"n":"青春","v":"84"},{"n":"百合","v":"85"},{"n":"治愈","v":"86"},{"n":"神魔","v":"87"},{"n":"魔法","v":"88"},{"n":"推理","v":"89"},{"n":"科幻","v":"90"},{"n":"竞技","v":"91"},{"n":"悬疑","v":"92"},{"n":"战争","v":"93"},{"n":"萝莉","v":"94"},{"n":"魔幻","v":"95"},{"n":"战斗","v":"96"},{"n":"历史","v":"102"},{"n":"歌舞","v":"103"},{"n":"恐怖","v":"105"},{"n":"职场","v":"106"},{"n":"励志","v":"110"},{"n":"偶像","v":"117"},{"n":"职场","v":"124"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"time"},{"n":"得分","v":"score"},{"n":"总排行","v":"hits"}]}]},
|
||||||
|
searchUrl:'/search-pg-fypage-wd-**.html',
|
||||||
|
searchable:2,//是否启用全局搜索,
|
||||||
|
quickSearch:0,//是否启用快速搜索,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'PC_UA',
|
||||||
|
},
|
||||||
|
class_parse:'.secNacUl li;a&&Text;a&&href;.*/(\\d+)-1.html',
|
||||||
|
play_parse:true,
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
推荐:'.c1_l_wap_contact li;*;img&&src;.time:eq(0)&&Text;*',
|
||||||
|
一级:'.list3_cn_box .cn_box2;a&&title;.list_pic&&src;.list_20 li:eq(1) span&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title":"h1&&Text;.o_r_contact&&li:eq(0)&&Text",
|
||||||
|
"img":".o_big_img_bg_b img&&src",
|
||||||
|
"desc":".o_r_contact&&li:eq(6)&&Text;.o_r_contact&&li:eq(5)&&Text;.o_r_contact&&li:eq(3)&&Text;.o_r_contact&&li:eq(2)&&Text;.o_r_contact&&li:eq(1)&&Text",
|
||||||
|
"content":".des_box&&Text",
|
||||||
|
"tabs":".from-tabs&&label",
|
||||||
|
"lists":".mn_list_li_movie:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索:'*',
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
muban.vfed.二级.title = 'h1&&Text;.fed-col-md3--span:eq(0)&&Text';
|
||||||
|
muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text';
|
||||||
|
var rule = {
|
||||||
|
title: '去看吧',
|
||||||
|
模板:'vfed',
|
||||||
|
host: 'https://www.k9dm.com',
|
||||||
|
// url: '/index.php/vod/show/id/fyclass/page/fypage.html',
|
||||||
|
url: '/index.php/vod/show/id/fyclassfyfilter.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'{{fl.area}}{{fl.by}}{{fl.class}}/page/fypage{{fl.year}}',
|
||||||
|
filter:{
|
||||||
|
"33":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"21":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"50":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"24":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"22":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"/area/日本"},{"n":"欧美","v":"/area/欧美"},{"n":"其他","v":"/area/其他"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
},
|
||||||
|
class_parse: '.fed-pops-list:eq(0)&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
var rule={
|
||||||
|
title:'奇米动漫',
|
||||||
|
host:'http://www.qimiqimi.net',
|
||||||
|
url:'/show/fyclassfyfilter.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'{{fl.area}}{{fl.by}}{{fl.class}}{{fl.letter}}/page/fypage{{fl.year}}',
|
||||||
|
filter: {
|
||||||
|
"xinfan":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"冒险","v":"/class/冒险"},{"n":"热血","v":"/class/热血"},{"n":"奇幻","v":"/class/奇幻"},{"n":"恋爱","v":"/class/恋爱"},{"n":"校园","v":"/class/校园"},{"n":"后宫","v":"/class/后宫"},{"n":"搞笑","v":"/class/搞笑"},{"n":"治愈","v":"/class/治愈"},{"n":"神魔","v":"/class/神魔"},{"n":"魔法","v":"/class/魔法"},{"n":"百合","v":"/class/百合"},{"n":"推理","v":"/class/推理"},{"n":"科幻","v":"/class/科幻"},{"n":"竞技","v":"/class/竞技"},{"n":"悬疑","v":"/class/悬疑"},{"n":"青春","v":"/class/青春"},{"n":"战争","v":"/class/战争"},{"n":"萝莉","v":"/class/萝莉"},{"n":"魔幻","v":"/class/魔幻"},{"n":"战斗","v":"/class/战斗"},{"n":"日常","v":"/class/日常"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"/area/日本/"},{"n":"大陆","v":"/area/中国/"},{"n":"欧美","v":"/area/欧美/"},{"n":"韩国","v":"/area/韩国/"},{"n":"港台","v":"/area/港台/"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"riman":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"冒险","v":"/class/冒险"},{"n":"热血","v":"/class/热血"},{"n":"奇幻","v":"/class/奇幻"},{"n":"恋爱","v":"/class/恋爱"},{"n":"校园","v":"/class/校园"},{"n":"后宫","v":"/class/后宫"},{"n":"搞笑","v":"/class/搞笑"},{"n":"治愈","v":"/class/治愈"},{"n":"神魔","v":"/class/神魔"},{"n":"魔法","v":"/class/魔法"},{"n":"百合","v":"/class/百合"},{"n":"推理","v":"/class/推理"},{"n":"科幻","v":"/class/科幻"},{"n":"竞技","v":"/class/竞技"},{"n":"悬疑","v":"/class/悬疑"},{"n":"青春","v":"/class/青春"},{"n":"战争","v":"/class/战争"},{"n":"萝莉","v":"/class/萝莉"},{"n":"魔幻","v":"/class/魔幻"},{"n":"战斗","v":"/class/战斗"},{"n":"日常","v":"/class/日常"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"/area/日本/"},{"n":"大陆","v":"/area/中国/"},{"n":"欧美","v":"/area/欧美/"},{"n":"韩国","v":"/area/韩国/"},{"n":"港台","v":"/area/港台/"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"guoman":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"冒险","v":"/class/冒险"},{"n":"热血","v":"/class/热血"},{"n":"奇幻","v":"/class/奇幻"},{"n":"恋爱","v":"/class/恋爱"},{"n":"校园","v":"/class/校园"},{"n":"后宫","v":"/class/后宫"},{"n":"搞笑","v":"/class/搞笑"},{"n":"治愈","v":"/class/治愈"},{"n":"神魔","v":"/class/神魔"},{"n":"魔法","v":"/class/魔法"},{"n":"百合","v":"/class/百合"},{"n":"推理","v":"/class/推理"},{"n":"科幻","v":"/class/科幻"},{"n":"竞技","v":"/class/竞技"},{"n":"悬疑","v":"/class/悬疑"},{"n":"青春","v":"/class/青春"},{"n":"战争","v":"/class/战争"},{"n":"萝莉","v":"/class/萝莉"},{"n":"魔幻","v":"/class/魔幻"},{"n":"战斗","v":"/class/战斗"},{"n":"日常","v":"/class/日常"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"/area/日本/"},{"n":"大陆","v":"/area/中国/"},{"n":"欧美","v":"/area/欧美/"},{"n":"韩国","v":"/area/韩国/"},{"n":"港台","v":"/area/港台/"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"jcdm":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"冒险","v":"/class/冒险"},{"n":"热血","v":"/class/热血"},{"n":"奇幻","v":"/class/奇幻"},{"n":"恋爱","v":"/class/恋爱"},{"n":"校园","v":"/class/校园"},{"n":"后宫","v":"/class/后宫"},{"n":"搞笑","v":"/class/搞笑"},{"n":"治愈","v":"/class/治愈"},{"n":"神魔","v":"/class/神魔"},{"n":"魔法","v":"/class/魔法"},{"n":"百合","v":"/class/百合"},{"n":"推理","v":"/class/推理"},{"n":"科幻","v":"/class/科幻"},{"n":"竞技","v":"/class/竞技"},{"n":"悬疑","v":"/class/悬疑"},{"n":"青春","v":"/class/青春"},{"n":"战争","v":"/class/战争"},{"n":"萝莉","v":"/class/萝莉"},{"n":"魔幻","v":"/class/魔幻"},{"n":"战斗","v":"/class/战斗"},{"n":"日常","v":"/class/日常"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"/area/日本/"},{"n":"大陆","v":"/area/中国/"},{"n":"欧美","v":"/area/欧美/"},{"n":"韩国","v":"/area/韩国/"},{"n":"港台","v":"/area/港台/"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
},
|
||||||
|
searchable:2,//是否启用全局搜索,
|
||||||
|
headers:{//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'PC_UA',
|
||||||
|
},
|
||||||
|
class_parse: '#nav li;a&&Text;a&&href;.*/(\\w+).html',
|
||||||
|
cate_exclude:'番组专题|最近更新',
|
||||||
|
play_parse: true,
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
推荐:'*;*;*;.text&&Text;*',
|
||||||
|
一级:'.img-list li;a&&title;img&&src;i&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title":"h1&&Text;dl.fn-left:eq(3)&&Text",
|
||||||
|
"img":".detail-pic&&img&&src",
|
||||||
|
"desc":"dl.fn-left:eq(2)&&Text;;;.nyzhuy--dt&&Text;.fn-right:eq(0)--dt&&Text",
|
||||||
|
"content":".tjuqing&&Text",
|
||||||
|
"tabs":".down-title h2",
|
||||||
|
"lists":".video_list:eq(#id) a"
|
||||||
|
},
|
||||||
|
searchUrl:'/index.php/ajax/suggest?mid=1&wd=**',
|
||||||
|
detailUrl:'/detail/fyid.html', //非必填,二级详情拼接链接
|
||||||
|
搜索:'json:list;name;pic;;id',
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
var rule={
|
||||||
|
title:'妮可动漫',
|
||||||
|
host:'http://www.nicotv.vip',
|
||||||
|
url:'/video/fyclass/fyfilter.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'{{fl.class}}-{{fl.area}}-{{fl.year}}----{{fl.by}}-fypage',
|
||||||
|
filter: {"type3":[{"key":"class","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":"萝莉"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"大陆","v":"大陆"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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":"2010-2000","v":"20002010"},{"n":"90年代","v":"19901999"},{"n":"更早","v":"18001989"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"addtime"},{"n":"热播","v":"hits"},{"n":"评分","v":"gold"}]}]},
|
||||||
|
filter_def:{
|
||||||
|
type3:{by:'addtime'}
|
||||||
|
},
|
||||||
|
searchUrl:'/vod-search-wd-**-p-fypage.html',
|
||||||
|
searchable:2,//是否启用全局搜索,
|
||||||
|
headers:{//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
},
|
||||||
|
class_name:'全部',
|
||||||
|
class_url:'type3',
|
||||||
|
play_parse: true,
|
||||||
|
lazy:'js:let src=jsp.pd(request(input),"#cms_player&&script&&src");let cms_player=JSON.parse(request(src).match(/cms_player = (.*?);document/)[1]);/360lifan/.test(cms_player.name)?input={jx:0,url:cms_player.url+"&time="+cms_player.time+"&auth_key="+cms_player.auth_key,parse:1,header:JSON.stringify({"user-agent":"Mozilla/5.0"})}:/url=/.test(cms_player.url)?input=cms_player.url.split("url=")[1]:input={jx:0,url:cms_player.jiexi+cms_player.url+"&time="+cms_player.time+"&auth_key="+cms_player.auth_key,parse:1,header:JSON.stringify({"user-agent":"Mozilla/5.0"})}',
|
||||||
|
limit:6,
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.list-unstyled li;h2&&Text;img&&data-original;.continu&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title":".media-body a&&Text;.ff-text-right:eq(2)&&Text",
|
||||||
|
"img":".media-left&&img&&data-original",
|
||||||
|
"desc":".ff-score&&Text;.ff-text-right:eq(4)&&Text;.ff-text-right:eq(3)&&Text;.ff-text-right:eq(0)&&Text;.ff-text-right:eq(1)&&Text",
|
||||||
|
"content":".vod-content&&Text",
|
||||||
|
"tabs":".nav.nav-tabs li",
|
||||||
|
"lists":".tab-pane:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索:'*',
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
var rule={
|
||||||
|
title:'异世界动漫',
|
||||||
|
host:'http://www.ysjdm.net',
|
||||||
|
homeUrl:'/index.php/vod/show/id/22.html',
|
||||||
|
// url:'/index.php/vod/show/class/fyclass/id/20/page/fypage.html',
|
||||||
|
url:'/index.php/vod/show/fyclassfyfilter.html',
|
||||||
|
filterable:1,
|
||||||
|
filter_url:'{{fl.type}}/id/20/page/fypage{{fl.year}}',
|
||||||
|
filter: {
|
||||||
|
"area/日本":[{"key":"type","name":"类型","value":[{"n":"全部","v":""},{"n":"OVA","v":"/class/OVA"},{"n":"剧场版","v":"/class/剧场版"},{"n":"无修","v":"/class/BD无修"},{"n":"萝莉","v":"/class/萝莉"},{"n":"学園","v":"/class/学園"},{"n":"后宫","v":"/class/后宫"},{"n":"恋爱","v":"/class/恋爱"},{"n":"热血","v":"/class/热血"},{"n":"神魔","v":"/class/神魔"},{"n":"奇幻","v":"/class/奇幻"},{"n":"治愈","v":"/class/治愈"},{"n":"搞笑","v":"/class/搞笑"},{"n":"百合","v":"/class/百合"},{"n":"冒险","v":"/class/冒险"},{"n":"魔法","v":"/class/魔法"},{"n":"机战","v":"/class/机战"},{"n":"战争","v":"/class/战争"},{"n":"犯罪","v":"/class/犯罪"},{"n":"悬疑","v":"/class/悬疑"},{"n":"推理","v":"/class/推理"},{"n":"科幻","v":"/class/科幻"},{"n":"竞技","v":"/class/竞技"},{"n":"运动","v":"/class/运动"},{"n":"耽美","v":"/class/耽美"},{"n":"其他","v":"/class/其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"}]}],
|
||||||
|
"area/中國":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"}]}]
|
||||||
|
},
|
||||||
|
searchUrl:'/index.php/vod/search/page/fypage/wd/**.html',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,//网站的全局请求超时,默认是3000毫秒
|
||||||
|
class_name:'日漫&国漫',
|
||||||
|
class_url:'area/日本&area/中國',
|
||||||
|
play_parse:true,
|
||||||
|
lazy:`js:
|
||||||
|
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
|
||||||
|
var url = html.url;
|
||||||
|
var from = html.from;
|
||||||
|
if (html.encrypt == '1') {
|
||||||
|
url = unescape(url)
|
||||||
|
} else if (html.encrypt == '2') {
|
||||||
|
url = unescape(base64Decode(url))
|
||||||
|
}
|
||||||
|
if (/m3u8|mp4/.test(url)) {
|
||||||
|
input = url
|
||||||
|
} else {
|
||||||
|
var MacPlayerConfig={};
|
||||||
|
eval(fetch(HOST + "/static/js/playerconfig.js").replace('var Mac','Mac'));
|
||||||
|
var jx = MacPlayerConfig.player_list[from].parse;
|
||||||
|
if (jx == '') {
|
||||||
|
jx = MacPlayerConfig.parse
|
||||||
|
};
|
||||||
|
if (jx.startsWith("/")) {
|
||||||
|
jx = "https:" + jx;
|
||||||
|
}
|
||||||
|
input={jx:0,url:jx+url,parse:1,
|
||||||
|
header: JSON.stringify({
|
||||||
|
'referer': 'https://ysjdm.net/'
|
||||||
|
})}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
limit:6,
|
||||||
|
图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.vodlist_wi&&li;.lazyload&&title;.lazyload&&data-original;.pic_text&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title": "h2&&Text;li.data--span:eq(0)&&Text",
|
||||||
|
"img": ".lazyload&&data-original",
|
||||||
|
"desc": "li.data--span:eq(1)&&Text;;;li.data--span:eq(2)&&Text;li.data--span:eq(3)&&Text",
|
||||||
|
"content": ".full_text&&span&&Text",
|
||||||
|
"tabs": ".play_source_tab",
|
||||||
|
"tab_text": "a--i&&Text",
|
||||||
|
"lists": ".content_playlist:eq(#id)&&a"
|
||||||
|
},
|
||||||
|
搜索:'li.searchlist_item;*;*;*;*',
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
var rule={
|
||||||
|
title:'怡萱动漫',
|
||||||
|
host:'https://www.yxdmlove.com',
|
||||||
|
// url:'/category.html?channel=17&zhonglei=fyclass&orderby=pubdate&totalresult=2999&pageno=fypage',
|
||||||
|
url:'/category.html?channel=17&zhonglei=fyclassfyfilter&pageno=fypage',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'&{{fl.by}}&{{fl.year}}&{{fl.area}}&{{fl.sta}}&{{fl.class}}',
|
||||||
|
filter: {"TV":[{"key":"sta","name":"进度","value":[{"n":"全部","v":""},{"n":"连载中","v":"status=连载中"},{"n":"已完结","v":"status=已完结"},{"n":"未播放","v":"status=未播放"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"area=日本"},{"n":"中国","v":"area=中国"},{"n":"欧美","v":"area=欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"year=2023"},{"n":"2022","v":"year=2022"},{"n":"2021","v":"year=2021"},{"n":"2020","v":"year=2020"},{"n":"2019","v":"year=2019"},{"n":"2018","v":"year=2018"},{"n":"2017","v":"year=2017"},{"n":"2016","v":"year=2016"},{"n":"2015","v":"year=2015"},{"n":"2014","v":"year=2014"},{"n":"2013","v":"year=2013"},{"n":"2012","v":"year=2012"},{"n":"2011","v":"year=2011"},{"n":"2010","v":"year=2010"},{"n":"更早","v":"year=2010前"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"jqlx=冒险"},{"n":"热血","v":"jqlx=热血"},{"n":"爱情","v":"jqlx=爱情"},{"n":"搞笑","v":"jqlx=搞笑"},{"n":"后宫","v":"jqlx=后宫"},{"n":"校园","v":"jqlx=校园"},{"n":"机战","v":"jqlx=机战"},{"n":"幻想","v":"jqlx=幻想"},{"n":"科幻","v":"jqlx=科幻"},{"n":"竞技","v":"jqlx=竞技"},{"n":"百合","v":"jqlx=百合"},{"n":"耽美","v":"jqlx=耽美"},{"n":"悬疑","v":"jqlx=悬疑"},{"n":"剧情","v":"jqlx=剧情"},{"n":"战争","v":"jqlx=战争"},{"n":"恐怖","v":"jqlx=恐怖"},{"n":"运动","v":"jqlx=运动"},{"n":"动作","v":"jqlx=动作"},{"n":"童话","v":"jqlx=童话"},{"n":"历史","v":"jqlx=历史"},{"n":"真人","v":"jqlx=真人"},{"n":"女性向","v":"jqlx=女性向"},{"n":"泡面番","v":"jqlx=泡面番"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"orderby=pubdate"},{"n":"热度","v":"orderby=click"}]}],"剧场版":[{"key":"sta","name":"进度","value":[{"n":"全部","v":""},{"n":"连载中","v":"status=连载中"},{"n":"已完结","v":"status=已完结"},{"n":"未播放","v":"status=未播放"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"area=日本"},{"n":"中国","v":"area=中国"},{"n":"欧美","v":"area=欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"year=2023"},{"n":"2022","v":"year=2022"},{"n":"2021","v":"year=2021"},{"n":"2020","v":"year=2020"},{"n":"2019","v":"year=2019"},{"n":"2018","v":"year=2018"},{"n":"2017","v":"year=2017"},{"n":"2016","v":"year=2016"},{"n":"2015","v":"year=2015"},{"n":"2014","v":"year=2014"},{"n":"2013","v":"year=2013"},{"n":"2012","v":"year=2012"},{"n":"2011","v":"year=2011"},{"n":"2010","v":"year=2010"},{"n":"更早","v":"year=2010前"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"jqlx=冒险"},{"n":"热血","v":"jqlx=热血"},{"n":"爱情","v":"jqlx=爱情"},{"n":"搞笑","v":"jqlx=搞笑"},{"n":"后宫","v":"jqlx=后宫"},{"n":"校园","v":"jqlx=校园"},{"n":"机战","v":"jqlx=机战"},{"n":"幻想","v":"jqlx=幻想"},{"n":"科幻","v":"jqlx=科幻"},{"n":"竞技","v":"jqlx=竞技"},{"n":"百合","v":"jqlx=百合"},{"n":"耽美","v":"jqlx=耽美"},{"n":"悬疑","v":"jqlx=悬疑"},{"n":"剧情","v":"jqlx=剧情"},{"n":"战争","v":"jqlx=战争"},{"n":"恐怖","v":"jqlx=恐怖"},{"n":"运动","v":"jqlx=运动"},{"n":"动作","v":"jqlx=动作"},{"n":"童话","v":"jqlx=童话"},{"n":"历史","v":"jqlx=历史"},{"n":"真人","v":"jqlx=真人"},{"n":"女性向","v":"jqlx=女性向"},{"n":"泡面番","v":"jqlx=泡面番"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"orderby=pubdate"},{"n":"热度","v":"orderby=click"}]}],"OVA":[{"key":"sta","name":"进度","value":[{"n":"全部","v":""},{"n":"连载中","v":"status=连载中"},{"n":"已完结","v":"status=已完结"},{"n":"未播放","v":"status=未播放"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"area=日本"},{"n":"中国","v":"area=中国"},{"n":"欧美","v":"area=欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"year=2023"},{"n":"2022","v":"year=2022"},{"n":"2021","v":"year=2021"},{"n":"2020","v":"year=2020"},{"n":"2019","v":"year=2019"},{"n":"2018","v":"year=2018"},{"n":"2017","v":"year=2017"},{"n":"2016","v":"year=2016"},{"n":"2015","v":"year=2015"},{"n":"2014","v":"year=2014"},{"n":"2013","v":"year=2013"},{"n":"2012","v":"year=2012"},{"n":"2011","v":"year=2011"},{"n":"2010","v":"year=2010"},{"n":"更早","v":"year=2010前"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"jqlx=冒险"},{"n":"热血","v":"jqlx=热血"},{"n":"爱情","v":"jqlx=爱情"},{"n":"搞笑","v":"jqlx=搞笑"},{"n":"后宫","v":"jqlx=后宫"},{"n":"校园","v":"jqlx=校园"},{"n":"机战","v":"jqlx=机战"},{"n":"幻想","v":"jqlx=幻想"},{"n":"科幻","v":"jqlx=科幻"},{"n":"竞技","v":"jqlx=竞技"},{"n":"百合","v":"jqlx=百合"},{"n":"耽美","v":"jqlx=耽美"},{"n":"悬疑","v":"jqlx=悬疑"},{"n":"剧情","v":"jqlx=剧情"},{"n":"战争","v":"jqlx=战争"},{"n":"恐怖","v":"jqlx=恐怖"},{"n":"运动","v":"jqlx=运动"},{"n":"动作","v":"jqlx=动作"},{"n":"童话","v":"jqlx=童话"},{"n":"历史","v":"jqlx=历史"},{"n":"真人","v":"jqlx=真人"},{"n":"女性向","v":"jqlx=女性向"},{"n":"泡面番","v":"jqlx=泡面番"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"orderby=pubdate"},{"n":"热度","v":"orderby=click"}]}],"其他":[{"key":"sta","name":"进度","value":[{"n":"全部","v":""},{"n":"连载中","v":"status=连载中"},{"n":"已完结","v":"status=已完结"},{"n":"未播放","v":"status=未播放"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"area=日本"},{"n":"中国","v":"area=中国"},{"n":"欧美","v":"area=欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"year=2023"},{"n":"2022","v":"year=2022"},{"n":"2021","v":"year=2021"},{"n":"2020","v":"year=2020"},{"n":"2019","v":"year=2019"},{"n":"2018","v":"year=2018"},{"n":"2017","v":"year=2017"},{"n":"2016","v":"year=2016"},{"n":"2015","v":"year=2015"},{"n":"2014","v":"year=2014"},{"n":"2013","v":"year=2013"},{"n":"2012","v":"year=2012"},{"n":"2011","v":"year=2011"},{"n":"2010","v":"year=2010"},{"n":"更早","v":"year=2010前"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"冒险","v":"jqlx=冒险"},{"n":"热血","v":"jqlx=热血"},{"n":"爱情","v":"jqlx=爱情"},{"n":"搞笑","v":"jqlx=搞笑"},{"n":"后宫","v":"jqlx=后宫"},{"n":"校园","v":"jqlx=校园"},{"n":"机战","v":"jqlx=机战"},{"n":"幻想","v":"jqlx=幻想"},{"n":"科幻","v":"jqlx=科幻"},{"n":"竞技","v":"jqlx=竞技"},{"n":"百合","v":"jqlx=百合"},{"n":"耽美","v":"jqlx=耽美"},{"n":"悬疑","v":"jqlx=悬疑"},{"n":"剧情","v":"jqlx=剧情"},{"n":"战争","v":"jqlx=战争"},{"n":"恐怖","v":"jqlx=恐怖"},{"n":"运动","v":"jqlx=运动"},{"n":"动作","v":"jqlx=动作"},{"n":"童话","v":"jqlx=童话"},{"n":"历史","v":"jqlx=历史"},{"n":"真人","v":"jqlx=真人"},{"n":"女性向","v":"jqlx=女性向"},{"n":"泡面番","v":"jqlx=泡面番"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"orderby=pubdate"},{"n":"热度","v":"orderby=click"}]}]},
|
||||||
|
filter_def:{
|
||||||
|
TV:{by:'orderby=pubdate'},
|
||||||
|
剧场版:{by:'orderby=pubdate'},
|
||||||
|
OVA:{by:'orderby=pubdate'},
|
||||||
|
其他:{by:'orderby=pubdate'}
|
||||||
|
},
|
||||||
|
searchUrl:'/search.html?keyword=**&PageNo=fypage',
|
||||||
|
searchable:2,//是否启用全局搜索,
|
||||||
|
headers:{//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'PC_UA',
|
||||||
|
},
|
||||||
|
class_name:'TV&剧场版&OVA&其他',
|
||||||
|
class_url:'TV&剧场版&OVA&其他',
|
||||||
|
play_parse: true,
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
推荐:'.dhnew.adj li;*;*;*;*',
|
||||||
|
一级:'.dhnew li;a&&title;img&&src;p:eq(-1)&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title":"h1&&Text;.dhxx p:eq(4)&&Text",
|
||||||
|
"img":".anime-img&&img&&src",
|
||||||
|
"desc":".info1-left li:eq(1)&&Text;.dhxx p:eq(3)&&Text;.dhxx p:eq(2)&&Text;.info1-left li:eq(0)&&Text;.info1-left li:eq(2)&&Text",
|
||||||
|
"content":".info2--strong&&Text",
|
||||||
|
"tabs":".ol-select li",
|
||||||
|
"lists":".ol-content:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索:'*;*;*;p:eq(3)&&Text;*',
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
var rule={
|
||||||
|
title:'曲奇动漫',
|
||||||
|
// host:'https://www.quqidm.net',
|
||||||
|
host:'https://www.quqim.net',
|
||||||
|
// url:'/list/?genre=fyclass&pagesize=24&pageindex=fypage',
|
||||||
|
url:'/list/?genre=fyclassfyfilter',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'&pagesize=24&pageindex=(fypage-1)®ion={{fl.area}}&order={{fl.by}}&label={{fl.class}}&letter={{fl.letter}}&year={{fl.year}}',
|
||||||
|
filter:{
|
||||||
|
"TV":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"中国","v":"中国"},{"n":"欧美","v":"欧美"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"class","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":"游戏"},{"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":"by","name":"排序","value":[{"n":"时间","v":""},{"n":"名称","v":"名称"},{"n":"点击量","v":"点击量"}]}],
|
||||||
|
"剧场版":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"中国","v":"中国"},{"n":"欧美","v":"欧美"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"class","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":"游戏"},{"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":"by","name":"排序","value":[{"n":"时间","v":""},{"n":"名称","v":"名称"},{"n":"点击量","v":"点击量"}]}],
|
||||||
|
"OVA":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"中国","v":"中国"},{"n":"欧美","v":"欧美"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"class","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":"游戏"},{"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":"by","name":"排序","value":[{"n":"时间","v":""},{"n":"名称","v":"名称"},{"n":"点击量","v":"点击量"}]}]
|
||||||
|
},
|
||||||
|
searchUrl:'/s_all?ex=fypage&kw=**',
|
||||||
|
searchable:2,//是否启用全局搜索,
|
||||||
|
quickSearch:0,//是否启用快速搜索,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA',
|
||||||
|
},
|
||||||
|
class_name:'TV&剧场版&OVA',
|
||||||
|
class_url:'TV&剧场版&OVA',
|
||||||
|
play_parse:true,
|
||||||
|
detailUrl:'',
|
||||||
|
lazy:"",
|
||||||
|
limit:6,
|
||||||
|
推荐:'.img&&ul;li;*;*;p:eq(1)&&Text;*',
|
||||||
|
double:true, // 推荐内容是否双层定位
|
||||||
|
一级:'.lpic&&li;img&&alt;img&&src;.red&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title":"h1&&Text;.sinfo&&span--label:eq(2)&&Text",
|
||||||
|
"img":".thumb&&img&&src",
|
||||||
|
"desc":".score&&Text;.sinfo&&span--label:eq(0)&&Text;.sinfo&&span--label:eq(1)&&Text;.sinfo&&p:eq(0)&&Text;.sinfo&&p:eq(1)&&Text",
|
||||||
|
"content":".info&&Text",
|
||||||
|
"tabs":"#menu0&&li",
|
||||||
|
"lists":".movurl:eq(#id)&&li"
|
||||||
|
},
|
||||||
|
搜索:'*',
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
// muban.短视2.二级.title = 'h2&&Text;.hl-ma0&&Text';
|
||||||
|
muban.短视2.二级.img = '.detail-pic&&img&&data-src';
|
||||||
|
// muban.短视2.二级.desc = 'p:eq(1)&&Text;;;p:eq(2)&&Text;p:eq(1)&&Text';
|
||||||
|
// muban.短视2.二级.content = '.card-text&&Text';
|
||||||
|
var rule = {
|
||||||
|
title: '爱弹幕',
|
||||||
|
模板:'短视2',
|
||||||
|
host: 'https://anime.girigirilove.com',
|
||||||
|
homeUrl:'/vodshow/2-----------/',
|
||||||
|
// url:'/vodshow/fyclass--------fypage---/'
|
||||||
|
url: '/vodshow/fyclassfyfilter/',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'-{{fl.area}}-{{fl.by}}-{{fl.class}}-{{fl.lang}}-{{fl.letter}}---fypage---{{fl.year}}',
|
||||||
|
filter: {
|
||||||
|
"2":[{"key":"class","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":"爱抖露"},{"n":"音乐","v":"音乐"},{"n":"萌","v":"萌"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"一月","v":"一月"},{"n":"四月","v":"四月"},{"n":"七月","v":"七月"},{"n":"十月","v":"十月"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"日语","v":"日语"},{"n":"国语","v":"国语"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"3":[{"key":"class","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":"运动"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"21":[{"key":"class","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":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"日语","v":"日语"},{"n":"中文","v":"中文"},{"n":"英语","v":"英语"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"20":[{"key":"class","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":"烧脑"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"泰国","v":"泰国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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.2003","v":"2004.2003"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"日语","v":"日语"},{"n":"英语","v":"英语"},{"n":"泰语","v":"泰语"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"24":[{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"26":[{"key":"by","name":"排序","value":[{"n":"最新","v":"time"},{"n":"最热","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
},
|
||||||
|
// detailUrl:'/vodplay/fyid-1-1/',
|
||||||
|
detailUrl:'/voddetail/fyid/',
|
||||||
|
class_name:'',
|
||||||
|
class_url:'',
|
||||||
|
class_parse:'.swiper-wrapper:eq(2) li;a&&Text;a&&href;.*/(\\d+)',
|
||||||
|
// 图片来源:'@Referer=https://anime.girigirilove.com/',
|
||||||
|
lazy:"",
|
||||||
|
推荐: '*',
|
||||||
|
// 一级:'.list-vod .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
|
||||||
|
一级:'.border-box .public-list-box;a&&title;.lazy&&data-src;.public-list-prb&&Text;a&&href',
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'路漫漫',
|
||||||
|
// host:'https://www.96ba.com',
|
||||||
|
host:'https://www.wzwt369.com',
|
||||||
|
// url:'/vod/show/id/fyclass/page/fypage.html',
|
||||||
|
url:'/vod/show/id/fyclassfyfilter.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'{{fl.by}}/page/fypage{{fl.year}}',
|
||||||
|
filter:{
|
||||||
|
"ribendongman":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
|
||||||
|
"guochandongman":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
|
||||||
|
"oumeidongman":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
|
||||||
|
"ribendonghuadianying":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
|
||||||
|
"guochandonghuadianying":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}],
|
||||||
|
"oumeidonghuadianying":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"更早","v":"/year/2013-1980"}]},{"key":"by","name":"排序","value":[{"n":"更新","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"},{"n":"点赞","v":"/by/up"}]}]
|
||||||
|
},
|
||||||
|
searchUrl:'/vod/search/page/fypage/wd/**.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
},
|
||||||
|
class_parse:'.container&&.tag.text-light;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy:'js:var html=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=html.url;var from=html.from;if(/m3u8/.test(url)){input=url.split("&")[0]}else{input}',
|
||||||
|
limit: 6,
|
||||||
|
推荐:'.owl-theme-jable .item;*;*;*;*',
|
||||||
|
一级:'#mdym .col-6;h6&&Text;.lazyload&&data-src;.label&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title":"h1&&Text;.video-info-aux&&Text",
|
||||||
|
"img":".url_img&&src",
|
||||||
|
"desc":".video-info-items--span:eq(3)&&Text;;;.video-info-actor:eq(1)&&Text;.video-info-actor:eq(0)&&Text",
|
||||||
|
"content":".content-text&&Text",
|
||||||
|
"tabs":".module-tab-content .tab-item",
|
||||||
|
"lists":".scroll-content:eq(#id) a"
|
||||||
|
},
|
||||||
|
搜索:'*',
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
muban.海螺3.二级.title = 'h2&&Text;li.hl-col-xs-12--em:eq(6)&&Text';
|
||||||
|
muban.海螺3.二级.desc = 'li.hl-col-xs-12:eq(1)&&Text;;;li.hl-col-xs-12--em:eq(2)&&Text;li.hl-col-xs-12--em:eq(3)&&Text';
|
||||||
|
muban.海螺3.二级.tabs = '.hl-from-list&&li';
|
||||||
|
var rule={
|
||||||
|
title:'风车动漫', // 原 omofun动漫 http://www.omofun.top
|
||||||
|
模板:'海螺3',
|
||||||
|
host:'https://www.fcdm.me',
|
||||||
|
url:'/index.php/vod/show/id/fyclassfyfilter.html',
|
||||||
|
// homeUrl:'/index.php/label/rankweek.html',
|
||||||
|
homeUrl:'/index.php/label/rankmonth.html',
|
||||||
|
searchUrl:'/index.php/vod/search/page/fypage/wd/**.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'{{fl.area}}{{fl.by or "/by/time"}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}',
|
||||||
|
filter: {
|
||||||
|
"20":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"23":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"22":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
},
|
||||||
|
class_parse: '.hl-type-child&&.hl-bg-subs;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
lazy:`js:
|
||||||
|
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
|
||||||
|
var url = html.url;
|
||||||
|
if (html.encrypt == "1") {
|
||||||
|
url = unescape(url)
|
||||||
|
} else if (html.encrypt == "2") {
|
||||||
|
url = unescape(base64Decode(url))
|
||||||
|
}
|
||||||
|
if (/m3u8|mp4/.test(url)) {
|
||||||
|
input = url
|
||||||
|
} else {
|
||||||
|
input
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
推荐: '.hl-rank-page&&li;a&&title;a&&data-original;.hl-item-hits&&Text;a&&href',
|
||||||
|
double:false, // 推荐内容是否双层定位
|
||||||
|
}
|
||||||
@@ -0,0 +1,159 @@
|
|||||||
|
{
|
||||||
|
"作者": "运输车",
|
||||||
|
"站名": "动漫巴士",
|
||||||
|
"主页url": "https://dm84.tv",
|
||||||
|
|
||||||
|
"分类": "国产动漫&日本动漫&欧美动漫&电影",
|
||||||
|
"分类值": "1&2&3&4",
|
||||||
|
|
||||||
|
"分类url": "https://dm84.tv/show-{cateId}--{by}-{class}--{year}-{catePg}.html",
|
||||||
|
|
||||||
|
"数组": "<div class=\"item\">&&</div>",
|
||||||
|
"图片": "data-bg=\"&&\"",
|
||||||
|
"标题": "title=\"&&\"[替换:在线观看>>空]",
|
||||||
|
"副标题": "desc\">&&</span>",
|
||||||
|
|
||||||
|
"搜索模式": "1",
|
||||||
|
"搜索url": "/s----------.html?wd={wd}",
|
||||||
|
"搜索数组": "item\">&&</li>",
|
||||||
|
"搜索图片": "data-bg=\"&&\"",
|
||||||
|
"搜索标题": "title=\"&&\"",
|
||||||
|
"搜索链接": "href=\"&&\"",
|
||||||
|
"搜索副标题": "desc\">&&</span>",
|
||||||
|
|
||||||
|
"导演": "导演:&&</p>",
|
||||||
|
"主演": "主演:&&</p>",
|
||||||
|
"简介": "剧情:&&</p>",
|
||||||
|
|
||||||
|
"线路二次截取": "play_from\">&&</ul>",
|
||||||
|
"线路数组": "<li&&/li>[替换:线路>>播放列表]",
|
||||||
|
"线路标题": ">&&<",
|
||||||
|
|
||||||
|
"播放数组": "<ul class=\"play_list&&</ul>",
|
||||||
|
|
||||||
|
"筛选":{
|
||||||
|
"1":[
|
||||||
|
{"key":"class","name":"剧情","value":[
|
||||||
|
{"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":"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"}]},
|
||||||
|
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}],
|
||||||
|
|
||||||
|
"2":[
|
||||||
|
{"key":"class","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":"推理"}]},
|
||||||
|
|
||||||
|
{"key":"year","name":"年份","value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"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"}]},
|
||||||
|
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}],
|
||||||
|
|
||||||
|
"3":[
|
||||||
|
{"key":"class","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":"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"}]},
|
||||||
|
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}],
|
||||||
|
|
||||||
|
"4":[
|
||||||
|
{"key":"class","name":"剧情","value":[
|
||||||
|
{"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":"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"}]},
|
||||||
|
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}]}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"ua": "",
|
||||||
|
"homeUrl": "https://dm84.tv",
|
||||||
|
"cateNode": "//ul[contains(@class,'nav_row')]/li/a[contains(@href, '.html')]",
|
||||||
|
"cateName": "/text()",
|
||||||
|
"cateId": "/@href",
|
||||||
|
"cateIdR": "/list-(\\d+).html",
|
||||||
|
"cateManual": {},
|
||||||
|
"homeVodNode": "//ul[@class='v_list']/li/div[@class='item']",
|
||||||
|
"homeVodName": "/a[@class='title']/@title",
|
||||||
|
"homeVodId": "/a[@class='title']/@href",
|
||||||
|
"homeVodIdR": "/v/(\\w+).html",
|
||||||
|
"homeVodImg": "/a/@data-bg",
|
||||||
|
"homeVodMark": "/span[@class='desc']/text()",
|
||||||
|
"cateUrl": "https://dm84.tv/list-{cateId}-{catePg}.html",
|
||||||
|
"cateVodNode": "//ul[@class='v_list']/li/div[@class='item']",
|
||||||
|
"cateVodName": "/a[@class='title']/@title",
|
||||||
|
"cateVodId": "/a[@class='title']/@href",
|
||||||
|
"cateVodIdR": "/v/(\\w+).html",
|
||||||
|
"cateVodImg": "/a/@data-bg",
|
||||||
|
"cateVodMark": "/span[@class='desc']/text()",
|
||||||
|
"dtUrl": "https://dm84.tv/v/{vid}.html",
|
||||||
|
"dtNode": "//div[contains(@class,'v_content')]",
|
||||||
|
"dtName": "/parent::*/h1[@class='v_title']/a/text()",
|
||||||
|
"dtImg": "/div[@class='cover']/img/@src",
|
||||||
|
"dtFromNode": "//ul[contains(@class,'play_from')]/li",
|
||||||
|
"dtFromName": "/text()",
|
||||||
|
"dtUrlNode": "//ul[contains(@class,'play_list')]",
|
||||||
|
"dtUrlSubNode": "/li/a",
|
||||||
|
"dtUrlId": "@href",
|
||||||
|
"dtUrlIdR": "/p/(\\S+).html",
|
||||||
|
"dtUrlName": "/text()",
|
||||||
|
"playUrl": "https://dm84.tv/p/{playUrl}.html",
|
||||||
|
"searchUrl": "https://dm84.tv/s----------.html?wd={wd}",
|
||||||
|
"scVodNode": "//ul[@class='v_list']/li/div[@class='item']",
|
||||||
|
"scVodName": "/a[@class='title']/@title",
|
||||||
|
"scVodId": "/a[@class='title']/@href",
|
||||||
|
"scVodIdR": "/v/(\\w+).html",
|
||||||
|
"scVodImg": "/a/@data-bg",
|
||||||
|
"scVodMark": "/span[@class='desc']/text()"
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"author":"",
|
||||||
|
"name": "去看吧",
|
||||||
|
"url": "https://qkan8.com", //填网站链接
|
||||||
|
"tihuan": "cnzz.com", //这个不用动,是个别网站嗅探时过滤地址用的
|
||||||
|
"User": "空", //这个不用动,是个别网站播放需要请求头时才用到
|
||||||
|
"shouye": "1",
|
||||||
|
|
||||||
|
"fenlei": "高清原碟$/index.php/vod/show/id/33/page/#日漫$/index.php/vod/show/id/21/page/#女頻$/index.php/vod/show/id/50/page/#劇場$/index.php/vod/show/id/24/page/#国漫$/index.php/vod/show/id/51/page/#美漫$/index.php/vod/show/id/22/page/", //网站列表的分类
|
||||||
|
"houzhui": ".html", //网站翻页链接的后缀
|
||||||
|
|
||||||
|
"shifouercijiequ": "0", //截取的列表数组是否需要二次截取,0不需要,1需要
|
||||||
|
"jiequqian": "空", //不需要二次截取就填空
|
||||||
|
"jiequhou": "空", //不需要二次截取就填空
|
||||||
|
"jiequshuzuqian": "class=\"fed-list-pics", //截取的列表数组的前关键词,截取的关键词有 " 的用 \ 进行转义
|
||||||
|
"jiequshuzuhou": "</li>", //截取的列表数组的后关键词,截取的关键词有 " 的用 \ 进行转义
|
||||||
|
"tupianqian": "data-original=\"", //列表中资源的图片前关键词,截取的关键词有 " 的用 \ 进行转义
|
||||||
|
"tupianhou": "\"", //列表中资源的图片后关键词,截取的关键词有 " 的用 \ 进行转义
|
||||||
|
"biaotiqian": ".html\">", //列表中资源的标题前关键词,截取的关键词有 " 的用 \ 进行转义
|
||||||
|
"biaotihou": "</a>", //列表中资源的标题后关键词,截取的关键词有 " 的用 \ 进行转义
|
||||||
|
"lianjieqian": "href=\"", //列表中资源的详情页跳转链接前关键词,截取的关键词有 " 的用 \ 进行转义
|
||||||
|
"lianjiehou": "\"", //列表中资源的详情页跳转链接后关键词,截取的关键词有 " 的用 \ 进行转义
|
||||||
|
|
||||||
|
//搜索部分基本不用动,现在网站基本都是苹果CMS,所有搜索是固定的。
|
||||||
|
"sousuoqian": "/ajax/suggest?mid=1&wd=",
|
||||||
|
"sousuohou": "&limit=500",
|
||||||
|
"sousuohouzhui": "/voddetail/", //搜索页影片跳转详情页的中间标识链接部分
|
||||||
|
"ssmoshi": "0",
|
||||||
|
"sousuoshifouercijiequ": "0",
|
||||||
|
"jspic": "pic",
|
||||||
|
"jsname": "name",
|
||||||
|
"jsid": "id",
|
||||||
|
"ssjiequqian": "空",
|
||||||
|
"ssjiequhou": "空",
|
||||||
|
"ssjiequshuzuqian": "空",
|
||||||
|
"ssjiequshuzuhou": "空",
|
||||||
|
"sstupianqian": "空",
|
||||||
|
"sstupianhou": "空",
|
||||||
|
"ssbiaotiqian": "空",
|
||||||
|
"ssbiaotihou": "空",
|
||||||
|
"sslianjieqian": "空",
|
||||||
|
"sslianjiehou": "空",
|
||||||
|
|
||||||
|
"bfshifouercijiequ": "0",
|
||||||
|
"bfjiequqian": "空",
|
||||||
|
"bfjiequhou": "空",
|
||||||
|
"bfjiequshuzuqian": "class=\"fed-play-item", //播放截取的列表数组的前关键词
|
||||||
|
"bfjiequshuzuhou": "</div>", //播放截取的列表数组的后关键词
|
||||||
|
|
||||||
|
"zhuangtaiqian": "fed-text-center\">", //状态前关键词
|
||||||
|
"zhuangtaihou": "</span></a></dt>", //状态后关键词
|
||||||
|
"daoyanqian": "导演:</span>", //导演前关键词
|
||||||
|
"daoyanhou": "</li>", //导演态后关键词
|
||||||
|
"zhuyanqian": "声优:</span>", //主演前关键词
|
||||||
|
"zhuyanhou": "</li>", //主演后关键词
|
||||||
|
"juqingqian": "简介:</span>", //剧情前关键词
|
||||||
|
"juqinghou": "</div>", //剧情后关键词
|
||||||
|
|
||||||
|
"bfyshifouercijiequ": "1", //截取的播放列表数组是否需要二次截取,0不需要,1需要
|
||||||
|
"bfyjiequqian": "class=\"fed-part-rows\">", //不需要二次截取就填空
|
||||||
|
"bfyjiequhou": "</ul>", //不需要二次截取就填空
|
||||||
|
"bfyjiequshuzuqian": "<a", //播放剧集数组前关键词
|
||||||
|
"bfyjiequshuzuhou": "/a>", //播放剧集数组后关键词
|
||||||
|
"bfbiaotiqian": ">", //播放剧集标题前关键词
|
||||||
|
"bfbiaotihou": "<", //状播放剧集标题后关键词
|
||||||
|
"bflianjieqian": "href=\"", //播放剧集链接前关键词
|
||||||
|
"bflianjiehou": "\""
|
||||||
|
} //播放剧集链接后关键词
|
||||||
@@ -0,0 +1,273 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"站名":"维奇动漫",
|
||||||
|
|
||||||
|
"数组":"<li class=\"col-xs-3\">&&</span>",
|
||||||
|
|
||||||
|
"图片":"data-echo=\"&&\"",
|
||||||
|
|
||||||
|
"分类url":"https://www.uiviki.com/anime-select-{cateId}-{area}--{class}-{lang}----{catePg}---{year}.html",
|
||||||
|
|
||||||
|
"分类":"连载动漫$lianzai#日本动漫$riman#国产动漫$guoman",
|
||||||
|
|
||||||
|
"筛选":{
|
||||||
|
"lianzai":[
|
||||||
|
{"key":"class","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":"异界"},
|
||||||
|
{"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":"美国"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"key":"lang","name":"语言","value":[
|
||||||
|
{"n":"日语","v":"日语"},
|
||||||
|
{"n":"英语","v":"英语"},
|
||||||
|
{"n":"国语","v":"国语"},
|
||||||
|
{"n":"台语","v":"台语"},
|
||||||
|
{"n":"粤语","v":"粤语"},
|
||||||
|
{"n":"韩语","v":"韩语"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"key":"yera","name":"时间","value":[
|
||||||
|
{"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"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"riman":[
|
||||||
|
{"key":"class","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":"异界"},
|
||||||
|
{"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":"美国"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"key":"lang","name":"语言","value":[
|
||||||
|
{"n":"日语","v":"日语"},
|
||||||
|
{"n":"英语","v":"英语"},
|
||||||
|
{"n":"国语","v":"国语"},
|
||||||
|
{"n":"台语","v":"台语"},
|
||||||
|
{"n":"粤语","v":"粤语"},
|
||||||
|
{"n":"韩语","v":"韩语"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"key":"yera","name":"时间","value":[
|
||||||
|
{"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"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"guoman":[
|
||||||
|
{"key":"class","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":"异界"},
|
||||||
|
{"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":"美国"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"key":"lang","name":"语言","value":[
|
||||||
|
{"n":"日语","v":"日语"},
|
||||||
|
{"n":"英语","v":"英语"},
|
||||||
|
{"n":"国语","v":"国语"},
|
||||||
|
{"n":"台语","v":"台语"},
|
||||||
|
{"n":"粤语","v":"粤语"},
|
||||||
|
{"n":"韩语","v":"韩语"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"key":"yera","name":"时间","value":[
|
||||||
|
{"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"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -0,0 +1,301 @@
|
|||||||
|
if (typeof Object.assign != 'function') {
|
||||||
|
Object.assign = function () {
|
||||||
|
var target = arguments[0];
|
||||||
|
for (var i = 1; i < arguments.length; i++) {
|
||||||
|
var source = arguments[i];
|
||||||
|
for (var key in source) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
||||||
|
target[key] = source[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return target;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function getMubans() {
|
||||||
|
var mubanDict = { // 模板字典
|
||||||
|
mxpro: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
// homeUrl:'/',
|
||||||
|
url: '/vodshow/fyclass--------fypage---.html',
|
||||||
|
searchUrl: '/vodsearch/**----------fypage---.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
// "Cookie": "searchneed=ok"
|
||||||
|
},
|
||||||
|
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1&&Text;.module-info-tag&&Text",
|
||||||
|
"img": ".lazyload&&data-original",
|
||||||
|
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
|
||||||
|
"content": ".module-info-introduction&&Text",
|
||||||
|
"tabs": ".module-tab-item",
|
||||||
|
"lists": ".module-play-list:eq(#id) a"
|
||||||
|
},
|
||||||
|
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
|
||||||
|
},
|
||||||
|
mxone5: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/show/fyclass--------fypage---.html',
|
||||||
|
searchUrl: '/search/**----------fypage---.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1&&Text;.tag-link&&Text",
|
||||||
|
"img": ".module-item-pic&&img&&data-src",
|
||||||
|
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
|
||||||
|
"content": ".vod_content&&Text",
|
||||||
|
"tabs": ".module-tab-item",
|
||||||
|
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
|
||||||
|
},
|
||||||
|
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
|
||||||
|
},
|
||||||
|
首图: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/vodshow/fyclass--------fypage---/',
|
||||||
|
searchUrl: '/vodsearch/**----------fypage---.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
// "Cookie": "searchneed=ok"
|
||||||
|
},
|
||||||
|
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
|
||||||
|
"img": ".myui-content__thumb .lazyload&&data-original",
|
||||||
|
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
|
||||||
|
"content": ".content&&Text",
|
||||||
|
"tabs": ".nav-tabs:eq(0) li",
|
||||||
|
"lists": ".myui-content__list:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||||
|
},
|
||||||
|
首图2: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/list/fyclass-fypage.html',
|
||||||
|
searchUrl: '/vodsearch/**----------fypage---.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'UC_UA',
|
||||||
|
// "Cookie": ""
|
||||||
|
},
|
||||||
|
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
|
||||||
|
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
|
||||||
|
"img": ".stui-content__thumb .lazyload&&data-original",
|
||||||
|
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
|
||||||
|
"content": ".detail&&Text",
|
||||||
|
"tabs": ".stui-vodlist__head h3",
|
||||||
|
"lists": ".stui-content__playlist:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||||
|
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||||
|
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||||
|
},
|
||||||
|
默认: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/vodshow/fyclass--------fypage---.html',
|
||||||
|
searchUrl: '/vodsearch/-------------.html?wd=**',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
},
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
},
|
||||||
|
vfed: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
|
||||||
|
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'UC_UA',
|
||||||
|
},
|
||||||
|
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
|
||||||
|
"img": ".fed-list-info&&a&&data-original",
|
||||||
|
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
|
||||||
|
"content": ".fed-part-esan&&Text",
|
||||||
|
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
|
||||||
|
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
|
||||||
|
},
|
||||||
|
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
|
||||||
|
},
|
||||||
|
海螺3: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
searchUrl: '/v_search/**----------fypage---.html',
|
||||||
|
url: '/vod_____show/fyclass--------fypage---.html',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout: 5000,
|
||||||
|
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
cate_exclude: '明星|专题|最新|排行',
|
||||||
|
limit: 40,
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
|
||||||
|
double: true,
|
||||||
|
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
|
||||||
|
"img": ".hl-lazy&&data-original",
|
||||||
|
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
|
||||||
|
"content": ".hl-content-text&&Text",
|
||||||
|
"tabs": ".hl-tabs&&a",
|
||||||
|
"lists": ".hl-plays-list:eq(#id)&&li"
|
||||||
|
},
|
||||||
|
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
},
|
||||||
|
海螺2: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
|
||||||
|
url: '/index.php/vod/show/id/fyclass/page/fypage/',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout: 5000,
|
||||||
|
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
|
||||||
|
limit: 40,
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
|
||||||
|
double: true,
|
||||||
|
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h2&&Text;.deployment&&Text",
|
||||||
|
"img": ".lazy&&data-original",
|
||||||
|
"desc": ".deployment&&Text",
|
||||||
|
"content": ".ec-show&&Text",
|
||||||
|
"tabs": "#tag&&a",
|
||||||
|
"lists": ".play_list_box:eq(#id)&&li"
|
||||||
|
},
|
||||||
|
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
},
|
||||||
|
短视: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
// homeUrl:'/',
|
||||||
|
url: '/channel/fyclass-fypage.html',
|
||||||
|
searchUrl: '/search.html?wd=**',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
// "Cookie": "searchneed=ok"
|
||||||
|
},
|
||||||
|
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
cate_exclude: '解析|动态',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
|
||||||
|
"img": ".img&&img&&data-src",
|
||||||
|
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
|
||||||
|
"content": ".zkjj_a&&Text",
|
||||||
|
"tabs": ".py-tabs&&option",
|
||||||
|
"lists": ".player:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
|
||||||
|
},
|
||||||
|
短视2:{
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
class_name:'电影&电视剧&综艺&动漫',
|
||||||
|
class_url:'1&2&3&4',
|
||||||
|
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**',
|
||||||
|
searchable: 2,
|
||||||
|
quickSearch: 0,
|
||||||
|
headers:{'User-Agent':'MOBILE_UA'},
|
||||||
|
url: '/index.php/api/vod#type=fyclass&page=fypage',
|
||||||
|
filterable:0,//是否启用分类筛选,
|
||||||
|
filter_url:'',
|
||||||
|
filter: {},
|
||||||
|
filter_def:{},
|
||||||
|
detailUrl:'/index.php/vod/detail/id/fyid.html',
|
||||||
|
推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
|
||||||
|
一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
|
||||||
|
二级:{
|
||||||
|
"title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
|
||||||
|
"img":".detail-pic&&data-original",
|
||||||
|
"desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
|
||||||
|
"content":"#height_limit&&Text",
|
||||||
|
"tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
|
||||||
|
"tab_text":".swiper-slide&&Text",
|
||||||
|
"lists":".anthology-list-box:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索:'json:list;name;pic;;id',
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return JSON.parse(JSON.stringify(mubanDict));
|
||||||
|
}
|
||||||
|
var mubanDict = getMubans();
|
||||||
|
var muban = getMubans();
|
||||||
|
export default {muban,getMubans};
|
||||||
+8
-91
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
@@ -98,26 +98,6 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1
|
"filterable": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "酷酷",
|
|
||||||
"name": "🚀酷酷",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_AppYsV2",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "http://cms.realdou.cn:35264/api.php/app/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "彩虹",
|
|
||||||
"name": "🌈彩虹",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_AppYsV2",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"ext": "http://jh.dytt996.com:996/api.php/app/"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "爱迪",
|
"key": "爱迪",
|
||||||
"name": "🍟爱迪",
|
"name": "🍟爱迪",
|
||||||
@@ -149,15 +129,14 @@
|
|||||||
"ext": "http://www.miniku.cc/xgapp.php/v1/"
|
"ext": "http://www.miniku.cc/xgapp.php/v1/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "新视觉",
|
"key": "csp_Xinsj",
|
||||||
"name": "✨新视觉",
|
"name": "✨新视觉",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_Xinsj",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"changeable": 1,
|
"ext": "https://www.6080yy3.com/"
|
||||||
"ext": "./json/新视觉影院.json"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_YQKAPP",
|
"key": "csp_YQKAPP",
|
||||||
@@ -187,7 +166,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "https://www.libvio.fun/"
|
"ext": "https://www.libvio.pro/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_AppMr",
|
"key": "csp_AppMr",
|
||||||
@@ -262,17 +241,6 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1
|
"filterable": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "Alist",
|
|
||||||
"name": "🅰Alist",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_AList",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"changeable": 0,
|
|
||||||
"ext": "./json/Alist.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "csp_WoGG",
|
"key": "csp_WoGG",
|
||||||
"name": "👽玩偶哥哥",
|
"name": "👽玩偶哥哥",
|
||||||
@@ -282,7 +250,7 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"changeable": 0,
|
"changeable": 0,
|
||||||
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt+4k|auto|fhd+4k|auto|fhd$$$http://tvfan.xxooo.cf/"
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt+4k|auto|fhd+4k|auto|fhd$$$https://www.wogg.xyz/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "YiSo",
|
"key": "YiSo",
|
||||||
@@ -378,16 +346,6 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1
|
"filterable": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "云云",
|
|
||||||
"name": "💢云云",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/云云.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "dr_荐片",
|
"key": "dr_荐片",
|
||||||
"name": "🧲荐片",
|
"name": "🧲荐片",
|
||||||
@@ -399,33 +357,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./js/荐片.js"
|
"ext": "./js/荐片.js"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "北川",
|
|
||||||
"name": "💢北川",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": {
|
|
||||||
"请求头": "手机#Referer$http://bczhuiju.com/",
|
|
||||||
"主页url": "http://bczhuiju.com",
|
|
||||||
"副标题": "<div class=\"module-item-note\">&&</div>",
|
|
||||||
"线路数组": "data-dropdown-value=&&</div>[不包含:LZ在线#备用线路]",
|
|
||||||
"线路标题": "<span>&&</span>",
|
|
||||||
"嗅探词": ".m3u8#aliyundrive.net#auth_key=#mp4",
|
|
||||||
"播放数组": "<div class=\"module-play-list-content&&</div>",
|
|
||||||
"影片类型": "<div class=\"module-info-tag\">&&立即播放",
|
|
||||||
"导演": "导演:</span>&&</div>",
|
|
||||||
"主演": "主演:</span>&&</div>",
|
|
||||||
"简介": "style=\"line-height: 20px;\"&&</p>",
|
|
||||||
"播放列表": "<a&&</a>",
|
|
||||||
"播放标题": "<span>&&</span>",
|
|
||||||
"播放链接": "href=\"&&\"",
|
|
||||||
"分类": "电影$1#电视剧$2#综艺$3#动漫$4",
|
|
||||||
"分类url": "http://bczhuiju.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}/;;mu0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "奇优",
|
"key": "奇优",
|
||||||
"name": "️💢奇优",
|
"name": "️💢奇优",
|
||||||
@@ -466,16 +397,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./json/臭蛋蛋.json"
|
"ext": "./json/臭蛋蛋.json"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "零零七",
|
|
||||||
"name": "💢零零七",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/零零七影视.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "有声小说吧",
|
"key": "有声小说吧",
|
||||||
"name": "💢有声小说吧",
|
"name": "💢有声小说吧",
|
||||||
@@ -670,11 +591,6 @@
|
|||||||
"type": 3,
|
"type": 3,
|
||||||
"url": "Web"
|
"url": "Web"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "小新",
|
|
||||||
"type": 1,
|
|
||||||
"url": "http://xiaoxin.1080p.fun/home/api?type=ys&uid=13270&key=cehklprBCEPUVWY234&url="
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "哥哥们",
|
"name": "哥哥们",
|
||||||
"type": 1,
|
"type": 1,
|
||||||
@@ -877,7 +793,8 @@
|
|||||||
"name": "lz",
|
"name": "lz",
|
||||||
"hosts": [
|
"hosts": [
|
||||||
"vip.lz",
|
"vip.lz",
|
||||||
"hd.lz"
|
"hd.lz",
|
||||||
|
"v.cdnlz"
|
||||||
],
|
],
|
||||||
"regex": [
|
"regex": [
|
||||||
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.433333,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.433333,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||||
|
|||||||
@@ -41,8 +41,6 @@ CCTV-5,http://222.71.90.218:8888/newlive/live/hls/6/live.m3u8
|
|||||||
CCTV-6,http://222.71.90.218:8888/newlive/live/hls/7/live.m3u8
|
CCTV-6,http://222.71.90.218:8888/newlive/live/hls/7/live.m3u8
|
||||||
CCTV-10,http://222.71.90.218:8888/newlive/live/hls/11/live.m3u8
|
CCTV-10,http://222.71.90.218:8888/newlive/live/hls/11/live.m3u8
|
||||||
CCTV-14,http://222.71.90.218:8888/newlive/live/hls/15/live.m3u8
|
CCTV-14,http://222.71.90.218:8888/newlive/live/hls/15/live.m3u8
|
||||||
CCTV-4,http://jycb.f3322.net:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV-5+,http://jycb.f3322.net:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CETV-1,http://txycsbl.centv.cn/zb/0628cetv1.m3u8
|
CETV-1,http://txycsbl.centv.cn/zb/0628cetv1.m3u8
|
||||||
CETV-2,http://txycsbl.centv.cn/zb/0822cetv2.m3u8
|
CETV-2,http://txycsbl.centv.cn/zb/0822cetv2.m3u8
|
||||||
CETV-3,http://txycsbl.centv.cn/zb/0822cetv3.m3u8
|
CETV-3,http://txycsbl.centv.cn/zb/0822cetv3.m3u8
|
||||||
@@ -67,23 +65,6 @@ CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390
|
|||||||
CCTV16,https://live.goodiptv.club/api/bestv.php?id=cctv16hd8m/8000000
|
CCTV16,https://live.goodiptv.club/api/bestv.php?id=cctv16hd8m/8000000
|
||||||
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
||||||
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
||||||
CCTV1,http://cyz32.livehbindex.hbcatv.cn/live/50000020935c4d59965a1cbf159c9be9.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV2,http://cyz32.livehbindex.hbcatv.cn/live/50000020d7ae404dbd55b5d0ba6fe735.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV3,http://cyz32.livehbindex.hbcatv.cn/live/50000020425540c3b4e7c41ca3eabb76.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV4,http://cyz32.livehbindex.hbcatv.cn/live/5b0dff5235e94ba8bff8731427145289.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV5,http://cyz32.livehbindex.hbcatv.cn/live/500000206cd748d58f41b13aa2754139.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV5+,http://cyz32.livehbindex.hbcatv.cn/live/50000020484943edba96ac9f93f858ce.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV6,http://cyz32.livehbindex.hbcatv.cn/live/50000020da6d4c40a2ca3b1bdc786016.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV7,http://cyz32.livehbindex.hbcatv.cn/live/500000204daa45af99b5800a528fac21.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV8,http://cyz32.livehbindex.hbcatv.cn/live/500000202d8c4f56ba03e623caa09f1b.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV9,http://cyz32.livehbindex.hbcatv.cn/live/50000020edf54f6c92778d0ccdfcca30.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV10,http://cyz32.livehbindex.hbcatv.cn/live/a66832f3323643189c3a0e91f9fad3e3.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV11,http://cyz32.livehbindex.hbcatv.cn/live/5000002086444f0886ad7032ad8f756b.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV12,http://cyz32.livehbindex.hbcatv.cn/live/fbe7688bc539461da71ff649e4ba1d75.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV13,http://cyz32.livehbindex.hbcatv.cn/live/5000002081f5478882f00a0f9be4b01f.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV14,http://cyz32.livehbindex.hbcatv.cn/live/8a22035194884b1eb5515aac434c313c.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV15,http://cyz32.livehbindex.hbcatv.cn/live/50000020f44f4f4b8aa33925dba216df.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV17,http://cyz32.livehbindex.hbcatv.cn/live/500000208b8d41c4b436ef32428c229d.m3u8?bitrate=2300&pt=5
|
|
||||||
|
|
||||||
|
|
||||||
卫视频道,#genre#
|
卫视频道,#genre#
|
||||||
@@ -699,7 +680,6 @@ CHC家庭影院,http://111.20.40.170/PLTV/88888893/224/3221226462/index.m3u8
|
|||||||
浙江影视,https://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8
|
浙江影视,https://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8
|
||||||
吉林影视,http://stream1.jlntv.cn/yspd/sd/live.m3u8?_upt=f6b685651648171016
|
吉林影视,http://stream1.jlntv.cn/yspd/sd/live.m3u8?_upt=f6b685651648171016
|
||||||
隆化影视,http://hblh.chinashadt.com:2036/live/stream:lh2.stream/HasBahCa.m3u8
|
隆化影视,http://hblh.chinashadt.com:2036/live/stream:lh2.stream/HasBahCa.m3u8
|
||||||
石河子影视,http://202.107.188.141:5002/shiheziyinshiwenti_hdgq.m3u8?token=guoziyun
|
|
||||||
烟台影视,http://live.yantaitv.cn/live/e9f1d9045d474c31884d13fa4ffbbd16/a4a9b3704d854756907845107cc56129-1.m3u8
|
烟台影视,http://live.yantaitv.cn/live/e9f1d9045d474c31884d13fa4ffbbd16/a4a9b3704d854756907845107cc56129-1.m3u8
|
||||||
影视频道,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8
|
影视频道,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8
|
||||||
美丽中国说,http://hls.cntv.myhwcdn.cn/asp/hls/4000/0303000a/3/default/8cdd688b04e4495ba1635e218419d6f9/4000.m3u8
|
美丽中国说,http://hls.cntv.myhwcdn.cn/asp/hls/4000/0303000a/3/default/8cdd688b04e4495ba1635e218419d6f9/4000.m3u8
|
||||||
@@ -998,7 +978,6 @@ CCTV5-高清,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/32
|
|||||||
宜兴新闻频道,http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_xw.m3u8?zjiangsd
|
宜兴新闻频道,http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_xw.m3u8?zjiangsd
|
||||||
宜兴紫砂频道,http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_zs.m3u8?zjiangsd
|
宜兴紫砂频道,http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_zs.m3u8?zjiangsd
|
||||||
淮阴综合频道,http://huaiyin-tv-hls.cm.jstv.com/huaiyin-tv/huaiyinf.m3u8?zjiangsd
|
淮阴综合频道,http://huaiyin-tv-hls.cm.jstv.com/huaiyin-tv/huaiyinf.m3u8?zjiangsd
|
||||||
淮阴影院频道,http://huaiyin-tv-hls.cm.jstv.com/huaiyin-tv/hyys.m3u8?zjiangsd
|
|
||||||
金湖新闻综合,http://jinhu-tv-hls.cm.jstv.com/jinhu-tv/jinhuzh.m3u8?zjiangsd
|
金湖新闻综合,http://jinhu-tv-hls.cm.jstv.com/jinhu-tv/jinhuzh.m3u8?zjiangsd
|
||||||
金坛新闻频道,http://jintan-tv-ori-hls.jstv.com/jintan-tv-ori/jintan_xw.m3u8?zjiangsd
|
金坛新闻频道,http://jintan-tv-ori-hls.jstv.com/jintan-tv-ori/jintan_xw.m3u8?zjiangsd
|
||||||
海安新闻综合,http://haian-tv-hls.cm.jstv.com/haian-tv/haaxwzh.m3u8?zjiangsd
|
海安新闻综合,http://haian-tv-hls.cm.jstv.com/haian-tv/haaxwzh.m3u8?zjiangsd
|
||||||
@@ -1041,12 +1020,10 @@ CCTV5-高清,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/32
|
|||||||
|
|
||||||
|
|
||||||
四川综合,#genre#
|
四川综合,#genre#
|
||||||
广元综合,http://tv.dzsm.com:8100/chan/ch1.flv?zsicd
|
|
||||||
广元综合,https://m3u8.channel.dzsm.com/cms/videos/nmip-media/channellive/channel1/playlist.m3u8?zsicd
|
广元综合,https://m3u8.channel.dzsm.com/cms/videos/nmip-media/channellive/channel1/playlist.m3u8?zsicd
|
||||||
广元公共,https://m3u8.channel.dzsm.com/cms/videos/nmip-media/channellive/channel2/playlist.m3u8?zsicd
|
广元公共,https://m3u8.channel.dzsm.com/cms/videos/nmip-media/channellive/channel2/playlist.m3u8?zsicd
|
||||||
凉山新闻综合,http://file.yizu.tv/nmip-media/channellive/channel106606/playlist.m3u8?zsicd
|
凉山新闻综合,http://file.yizu.tv/nmip-media/channellive/channel106606/playlist.m3u8?zsicd
|
||||||
凉山语,http://file.yizu.tv/nmip-media/channellive/channel107323/playlist.m3u8?zsicd
|
凉山语,http://file.yizu.tv/nmip-media/channellive/channel107323/playlist.m3u8?zsicd
|
||||||
自贡综合,http://110.189.153.160:1001/zhpd.flv?zsicd
|
|
||||||
德阳新闻综合,http://scdytv.cn:1935/live/m_xwpd_livevideo/playlist.m3u8?zsicd
|
德阳新闻综合,http://scdytv.cn:1935/live/m_xwpd_livevideo/playlist.m3u8?zsicd
|
||||||
攀枝花新闻综合,http://zb.pzhgd.com:9095/live/xwzh.m3u8?zsicd
|
攀枝花新闻综合,http://zb.pzhgd.com:9095/live/xwzh.m3u8?zsicd
|
||||||
攀枝花公共,http://zb.pzhgd.com:9095/live/ggpd.m3u8?zsicd
|
攀枝花公共,http://zb.pzhgd.com:9095/live/ggpd.m3u8?zsicd
|
||||||
@@ -1135,7 +1112,6 @@ CCTV5-高清,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/32
|
|||||||
孝感生活,http://xiaogan-live21.cjyun.org/10139/s10139-shpd.m3u8?auth_key=1704038399-0-0-38258db7eb010303cb33988874a75a9f
|
孝感生活,http://xiaogan-live21.cjyun.org/10139/s10139-shpd.m3u8?auth_key=1704038399-0-0-38258db7eb010303cb33988874a75a9f
|
||||||
孝昌新闻党建,http://xiaochang-live21.cjyun.org/10128/s10128-xcxw.m3u8?auth_key=1704038399-0-0-66730340ff88177724aa0e28999d1aab
|
孝昌新闻党建,http://xiaochang-live21.cjyun.org/10128/s10128-xcxw.m3u8?auth_key=1704038399-0-0-66730340ff88177724aa0e28999d1aab
|
||||||
应城新闻党建,https://yingcheng-live21.cjyun.org/10135/s10135-YCZH.m3u8?auth_key=1704038399-0-0-183e4f22e93e62e3d5853726af611aed
|
应城新闻党建,https://yingcheng-live21.cjyun.org/10135/s10135-YCZH.m3u8?auth_key=1704038399-0-0-183e4f22e93e62e3d5853726af611aed
|
||||||
应城生活,https://yingcheng-live21.cjyun.org/10135/s10135-YCDJ.m3u8?auth_key=1704038399-0-0-f5dd91c5873e2e3a99f0ce5a4714f709
|
|
||||||
荆州新闻,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv01.m3u8?auth_key=1704038399-0-0-9b2442b7b11f661edfe71bc7a3a3a5a2
|
荆州新闻,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv01.m3u8?auth_key=1704038399-0-0-9b2442b7b11f661edfe71bc7a3a3a5a2
|
||||||
荆州垄上,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv03.m3u8?auth_key=1704038399-0-0-a0b56187fea04cf4f776c0b23cf5f547
|
荆州垄上,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv03.m3u8?auth_key=1704038399-0-0-a0b56187fea04cf4f776c0b23cf5f547
|
||||||
荆州公共,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv02.m3u8?auth_key=1704038399-0-0-35f354ebd7cf85af1104fa76d623c1c6
|
荆州公共,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv02.m3u8?auth_key=1704038399-0-0-35f354ebd7cf85af1104fa76d623c1c6
|
||||||
@@ -1667,9 +1643,6 @@ Soda东南亚之旅,https://vdse.bdstatic.com//b6295e9776c2cd347716fc2447e27fac.
|
|||||||
文山州新闻综合,http://tvdrs.wsrtv.com.cn:8100/channellive/ch1.flv?zyund
|
文山州新闻综合,http://tvdrs.wsrtv.com.cn:8100/channellive/ch1.flv?zyund
|
||||||
文山州新闻综合,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8?zyund
|
文山州新闻综合,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8?zyund
|
||||||
文山州公共,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel8/playlist.m3u8?zyund
|
文山州公共,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel8/playlist.m3u8?zyund
|
||||||
普洱新闻综合,http://file.pebtv.cn:8101/cms/videos/nmip-media/channellive/channel12/playlist.m3u8?zyund
|
|
||||||
普洱公共频道,http://file.pebtv.cn:8101/cms/videos/nmip-media/channellive/channel27/playlist.m3u8?zyund
|
|
||||||
普洱科教频道,http://file.pebtv.cn:8101/cms/videos/nmip-media/channellive/channel28/playlist.m3u8?zyund
|
|
||||||
西双版纳综合,http://file.xsbnrtv.cn/vms/videos/nmip-media/channellive/channel1/playlist.m3u8?zyund
|
西双版纳综合,http://file.xsbnrtv.cn/vms/videos/nmip-media/channellive/channel1/playlist.m3u8?zyund
|
||||||
西双版纳公共,http://file.xsbnrtv.cn/vms/videos/nmip-media/channellive/channel3/playlist.m3u8?zyund
|
西双版纳公共,http://file.xsbnrtv.cn/vms/videos/nmip-media/channellive/channel3/playlist.m3u8?zyund
|
||||||
怒江新闻综合,http://livebroadcast.ccwb.cn/live/w1620805130988936.m3u8?zyund
|
怒江新闻综合,http://livebroadcast.ccwb.cn/live/w1620805130988936.m3u8?zyund
|
||||||
@@ -1855,7 +1828,6 @@ Soda东南亚之旅,https://vdse.bdstatic.com//b6295e9776c2cd347716fc2447e27fac.
|
|||||||
鸣沙山山门,http://gcksc.v.kcdnvip.com/gc/dhyyqyyq_1/index.m3u8
|
鸣沙山山门,http://gcksc.v.kcdnvip.com/gc/dhyyqyyq_1/index.m3u8
|
||||||
月牙泉,http://gcksc.v.kcdnvip.com/gc/dhyyqsm_1/index.m3u8
|
月牙泉,http://gcksc.v.kcdnvip.com/gc/dhyyqsm_1/index.m3u8
|
||||||
五彩池,http://gcksc.v.kcdnvip.com/gc/hlwcc_1/index.m3u8
|
五彩池,http://gcksc.v.kcdnvip.com/gc/hlwcc_1/index.m3u8
|
||||||
五彩池,http://gccncc.v.wscdns.com/gc/hlwcc_1/index.m3u8
|
|
||||||
黄龙,http://gcksc.v.kcdnvip.com/gc/hlzycc_1/index.m3u8
|
黄龙,http://gcksc.v.kcdnvip.com/gc/hlzycc_1/index.m3u8
|
||||||
望乡台,http://gcksc.v.kcdnvip.com/gc/hlwxt_1/index.m3u8
|
望乡台,http://gcksc.v.kcdnvip.com/gc/hlwxt_1/index.m3u8
|
||||||
洗身洞,http://gcksc.v.kcdnvip.com/gc/hlxsd_1/index.m3u8
|
洗身洞,http://gcksc.v.kcdnvip.com/gc/hlxsd_1/index.m3u8
|
||||||
|
|||||||
Binary file not shown.
+43
-44
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"sites": [
|
"sites": [
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
"key": "js豆瓣",
|
"key": "js豆瓣",
|
||||||
"name": "🍥┃豆瓣┃软件接口免费,禁止贩卖,公众号:『应用边界』提供🍥",
|
"name": "🍥┃豆瓣┃软件接口免费,禁止贩卖,公众号:『应用边界』提供🍥",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
"key": "js_ikanbot2",
|
"key": "js_ikanbot2",
|
||||||
"name": "🤖┃爱看┃机器",
|
"name": "🤖┃爱看┃机器",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
"key": "js_baby",
|
"key": "js_baby",
|
||||||
"name": "👶┃宝宝┃合集",
|
"name": "👶┃宝宝┃合集",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
"key": "js_童趣",
|
"key": "js_童趣",
|
||||||
"name": "🧗┃童趣┃搜视",
|
"name": "🧗┃童趣┃搜视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
"key": "js_悠米",
|
"key": "js_悠米",
|
||||||
"name": "🎉┃悠米┃搜视",
|
"name": "🎉┃悠米┃搜视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -138,7 +138,7 @@
|
|||||||
"name": "🐜┃蚂蚁┃影视",
|
"name": "🐜┃蚂蚁┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"playerType": 2,
|
"playerType": 2,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"ext": "./js/mayi.js"
|
"ext": "./js/mayi.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -248,7 +248,7 @@
|
|||||||
"key": "js_磁力熊",
|
"key": "js_磁力熊",
|
||||||
"name": "🐻┃贝尔┃磁力",
|
"name": "🐻┃贝尔┃磁力",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -268,7 +268,7 @@
|
|||||||
"name": "⚡️┃秒看┃影视",
|
"name": "⚡️┃秒看┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"playerType": 2,
|
"playerType": 2,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -278,7 +278,7 @@
|
|||||||
"key": "js_荐片",
|
"key": "js_荐片",
|
||||||
"name": "⏳┃荐片┃影视",
|
"name": "⏳┃荐片┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"ext": "./js/荐片.js",
|
"ext": "./js/荐片.js",
|
||||||
"playerType": 1,
|
"playerType": 1,
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
@@ -289,7 +289,7 @@
|
|||||||
"key": "js_在线之家",
|
"key": "js_在线之家",
|
||||||
"name": "🏞︎┃超前┃影视",
|
"name": "🏞︎┃超前┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -472,7 +472,7 @@
|
|||||||
"key": "js_农民",
|
"key": "js_农民",
|
||||||
"name": "👨🌾┃农民┃影视",
|
"name": "👨🌾┃农民┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -482,7 +482,7 @@
|
|||||||
"key": "js_酷客",
|
"key": "js_酷客",
|
||||||
"name": "😎┃酷客┃影院",
|
"name": "😎┃酷客┃影院",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -492,7 +492,7 @@
|
|||||||
"key": "js_bzys",
|
"key": "js_bzys",
|
||||||
"name": "🌋┃B站┃影视",
|
"name": "🌋┃B站┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -519,21 +519,20 @@
|
|||||||
"ext": "./json/shiliu.json"
|
"ext": "./json/shiliu.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_Czsapp",
|
"key": "js_czsapp",
|
||||||
"name": "🏭️┃厂长┃资源",
|
"name": "🏭️┃厂长┃资源",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Czsapp",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"playerType": 2,
|
"ext": "./js/czspp.js"
|
||||||
"ext": "https://cz01.me/"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "js_Lib",
|
"key": "js_Lib",
|
||||||
"name": "🍲┃利奥┃影视",
|
"name": "🍲┃利奥┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -553,7 +552,7 @@
|
|||||||
"key": "js_ddys",
|
"key": "js_ddys",
|
||||||
"name": "🐞┃低端┃影视",
|
"name": "🐞┃低端┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -563,7 +562,7 @@
|
|||||||
"key": "js_稀饭",
|
"key": "js_稀饭",
|
||||||
"name": "🍚┃稀饭┃影视",
|
"name": "🍚┃稀饭┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -600,7 +599,7 @@
|
|||||||
"key": "js_大师兄",
|
"key": "js_大师兄",
|
||||||
"name": "🐵┃师兄┃影视",
|
"name": "🐵┃师兄┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -610,7 +609,7 @@
|
|||||||
"key": "js_电影先生",
|
"key": "js_电影先生",
|
||||||
"name": "🤵┃电影┃先生",
|
"name": "🤵┃电影┃先生",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -620,7 +619,7 @@
|
|||||||
"key": "drpy_js_乐猪",
|
"key": "drpy_js_乐猪",
|
||||||
"name": "🐷┃乐猪┃影视",
|
"name": "🐷┃乐猪┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -640,7 +639,7 @@
|
|||||||
"key": "js_小狗影院",
|
"key": "js_小狗影院",
|
||||||
"name": "🐶┃小狗┃影院",
|
"name": "🐶┃小狗┃影院",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
@@ -669,7 +668,7 @@
|
|||||||
"key": "drpy_js_创艺",
|
"key": "drpy_js_创艺",
|
||||||
"name": "🍸️┃创艺┃影视",
|
"name": "🍸️┃创艺┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -688,7 +687,7 @@
|
|||||||
"key": "js_酷云",
|
"key": "js_酷云",
|
||||||
"name": "🍁┃七七┃影视",
|
"name": "🍁┃七七┃影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -698,7 +697,7 @@
|
|||||||
"key": "js_企鹅",
|
"key": "js_企鹅",
|
||||||
"name": "🐧┃企鹅┃基地",
|
"name": "🐧┃企鹅┃基地",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -708,7 +707,7 @@
|
|||||||
"key": "js_奇异",
|
"key": "js_奇异",
|
||||||
"name": "🥝┃奇异┃大厂",
|
"name": "🥝┃奇异┃大厂",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -718,7 +717,7 @@
|
|||||||
"key": "js_芒果",
|
"key": "js_芒果",
|
||||||
"name": "🥭┃芒芒┃大厂",
|
"name": "🥭┃芒芒┃大厂",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -728,7 +727,7 @@
|
|||||||
"key": "js_优酷",
|
"key": "js_优酷",
|
||||||
"name": "👑┃油库┃大厂",
|
"name": "👑┃油库┃大厂",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -738,7 +737,7 @@
|
|||||||
"key": "js_菜狗",
|
"key": "js_菜狗",
|
||||||
"name": "🐕️┃菜狗┃大厂",
|
"name": "🐕️┃菜狗┃大厂",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -810,7 +809,7 @@
|
|||||||
"key": "js_Xinsj",
|
"key": "js_Xinsj",
|
||||||
"name": "🐠┃视觉┃影院",
|
"name": "🐠┃视觉┃影院",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -877,7 +876,7 @@
|
|||||||
"key": "js_酷狗MV",
|
"key": "js_酷狗MV",
|
||||||
"name": "🎻┃酷狗┃音乐",
|
"name": "🎻┃酷狗┃音乐",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -887,7 +886,7 @@
|
|||||||
"key": "js_a8音乐",
|
"key": "js_a8音乐",
|
||||||
"name": "🎸┃奥迪┃音乐",
|
"name": "🎸┃奥迪┃音乐",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -916,7 +915,7 @@
|
|||||||
"key": "js路漫漫",
|
"key": "js路漫漫",
|
||||||
"name": "👩🎨┃漫漫┃动漫",
|
"name": "👩🎨┃漫漫┃动漫",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -996,7 +995,7 @@
|
|||||||
"key": "js_310直播",
|
"key": "js_310直播",
|
||||||
"name": "🥎┃三一┃直播",
|
"name": "🥎┃三一┃直播",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
@@ -1006,7 +1005,7 @@
|
|||||||
"key": "js_88看球",
|
"key": "js_88看球",
|
||||||
"name": "🏀┃八八┃看球",
|
"name": "🏀┃八八┃看球",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
@@ -1016,7 +1015,7 @@
|
|||||||
"key": "js_JRS直播",
|
"key": "js_JRS直播",
|
||||||
"name": "⚽┃JRS┃直播",
|
"name": "⚽┃JRS┃直播",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
@@ -1026,7 +1025,7 @@
|
|||||||
"key": "js_JRKAN直播",
|
"key": "js_JRKAN直播",
|
||||||
"name": "🥎┃JRK┃看球",
|
"name": "🥎┃JRK┃看球",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
@@ -1036,7 +1035,7 @@
|
|||||||
"key": "js_直播",
|
"key": "js_直播",
|
||||||
"name": "🏀┃JRK┃直播",
|
"name": "🏀┃JRK┃直播",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
@@ -1077,7 +1076,7 @@
|
|||||||
"key": "js_B站精简",
|
"key": "js_B站精简",
|
||||||
"name": "🅱️┃哔哩┃精简",
|
"name": "🅱️┃哔哩┃精简",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -1237,7 +1236,7 @@
|
|||||||
"key": "js_哔哩直播",
|
"key": "js_哔哩直播",
|
||||||
"name": "🅱️┃哔哩┃直播",
|
"name": "🅱️┃哔哩┃直播",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
@@ -1286,7 +1285,7 @@
|
|||||||
"key": "js_斗鱼直播",
|
"key": "js_斗鱼直播",
|
||||||
"name": "🦈┃斗鱼┃直播",
|
"name": "🦈┃斗鱼┃直播",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpymin2.js",
|
"api": "./drpy2.js",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
import cheerio from"./cheerio.min.js";import"./crypto-js.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.46beta12 20230709";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url)$/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){var target=arguments[0];for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target}}if(!String.prototype.includes){String.prototype.includes=function(search,start){if(typeof start!=="number"){start=0}if(start+search.length>this.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k<len){if(o[k]===searchElement){return true}k++}return false}})}if(typeof String.prototype.startsWith!="function"){String.prototype.startsWith=function(prefix){return this.slice(0,prefix.length)===prefix}}if(typeof String.prototype.endsWith!="function"){String.prototype.endsWith=function(suffix){return this.indexOf(suffix,this.length-suffix.length)!==-1}}Object.prototype.myValues=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res};if(typeof Object.prototype.values!="function"){Object.prototype.values=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res}}if(typeof Array.prototype.join!="function"){Array.prototype.join=function(emoji){emoji=emoji||"";let self=this;let str="";let i=0;if(!Array.isArray(self)){throw String(self)+"is not Array"}if(self.length===0){return""}if(self.length===1){return String(self[0])}i=1;str=this[0];for(;i<self.length;i++){str+=String(emoji)+String(self[i])}return str}}String.prototype.rstrip=function(chars){let regex=new RegExp(chars+"$");return this.replace(regex,"")};Array.prototype.append=Array.prototype.push;String.prototype.strip=String.prototype.trim;function 是否正版(vipUrl){let flag=new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv");return flag.test(vipUrl)}function urlDeal(vipUrl){if(!vipUrl){return""}if(!是否正版(vipUrl)){return vipUrl}if(!/miguvideo/.test(vipUrl)){vipUrl=vipUrl.split("#")[0].split("?")[0]}return vipUrl}function setResult(d){if(!Array.isArray(d)){return[]}VODS=[];d.forEach(function(it){let obj={vod_id:it.url||"",vod_name:it.title||"",vod_remarks:it.desc||"",vod_content:it.content||"",vod_pic:it.pic_url||it.img||""};let keys=Object.keys(it);if(keys.includes("tname")){obj.type_name=it.tname||""}if(keys.includes("tid")){obj.type_id=it.tid||""}if(keys.includes("year")){obj.vod_year=it.year||""}if(keys.includes("actor")){obj.vod_actor=it.actor||""}if(keys.includes("director")){obj.vod_director=it.director||""}if(keys.includes("area")){obj.vod_area=it.area||""}VODS.push(obj)});return VODS}function setResult2(res){VODS=res.list||[];return VODS}function setHomeResult(res){if(!res||typeof res!=="object"){return[]}return setResult(res.list)}function rc(js){if(js==="maomi_aes.js"){var a=CryptoJS.enc.Utf8.parse("625222f9149e961d");var t=CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");return{De:function(word){word=CryptoJS.enc.Hex.parse(word);return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word),a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)},En:function(word){var Encrypted=CryptoJS.AES.encrypt(word,a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});return Encrypted.ciphertext.toString()}}}return{}}function maoss(jxurl,ref,key){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));eval(getCryptoJS());try{var getVideoInfo=function(text){return CryptoJS.AES.decrypt(text,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)};var token_key=key==undefined?"dvyYRQlnPRCMdQSe":key;if(ref){var html=request(jxurl,{headers:{Referer:ref}})}else{var html=request(jxurl)}if(html.indexOf("&btwaf=")!=-1){html=request(jxurl+"&btwaf"+html.match(/&btwaf(.*?)"/)[1],{headers:{Referer:ref}})}var token_iv=html.split('_token = "')[1].split('"')[0];var key=CryptoJS.enc.Utf8.parse(token_key);var iv=CryptoJS.enc.Utf8.parse(token_iv);eval(html.match(/var config = {[\s\S]*?}/)[0]+"");if(!config.url.startsWith("http")){config.url=CryptoJS.AES.decrypt(config.url,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)}return config.url}catch(e){return""}}function urlencode(str){str=(str+"").toString();return encodeURIComponent(str).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")}function base64Encode(text){return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text))}function base64Decode(text){return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))}function md5(text){return CryptoJS.MD5(text).toString()}function encodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.encode(input)}return input}function decodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.decode(input)}return input}function getCryptoJS(){return'console.log("CryptoJS已装载");'}function getProxyUrl(){if(typeof getProxy==="function"){return getProxy(true)}else{return"http://127.0.0.1:9978/proxy?do=js"}}function forceOrder(lists,key,option){let start=Math.floor(lists.length/2);let end=Math.min(lists.length-1,start+1);if(start>=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1]}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html=request(OCR_API,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cnt<OCR_RETRY){try{let yzm_url=`${host}/index.php/verify/index.html`;console.log(`验证码链接:${yzm_url}`);let hhtml=request(yzm_url,{withHeaders:true,toBase64:true},true);let json=JSON.parse(hhtml);if(!cookie){let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie,"User-Agent":MOBILE_UA},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function require(url){eval(request(url))}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj.method="POST";return request(url,obj)}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i<cnt;i++){classes.push({type_id:urls[i],type_name:names[i]})}}if(homeObj.class_parse){let p=homeObj.class_parse.split(";");let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;MY_URL=rule.url;if(p.length>=3){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p[0]);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表双层定位处理发生错误:"+e.message)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表单层定位处理发生错误:"+e.message)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print("合并不同分类对应的默认筛选出错:"+e.message)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");let url=searchObj.searchUrl.replaceAll("**",searchObj.wd).replaceAll("fypage",searchObj.pg);MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print("搜索发生错误:"+e.message);return"{}"}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print("格式化LISTS发生错误:"+e.message)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print("js执行lists: 发生错误:"+e.message)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i<playFrom.length;i++){let tab_name=playFrom[i];let tab_ext=p.tabs.split(";").length>1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL)}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i<vodList.length;i++){let it=vodList[i];new_vod_list.push(_pdfh(it,list_text).trim()+"$"+_pd(it,list_url,MY_URL))}}if(new_vod_list.length>0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);return JSON.stringify({list:[vod]})}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;let common_play={parse:1,url:input,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.replace("js:","").trim();print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:1,jx:tellIsJx(input),url:input}}catch(e){print("js免嗅错误:"+e.message);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length===3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function init(ext){console.log("init");try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")){let js=request(ext,{method:"GET"});if(js){eval(js.replace("var rule","rule"))}}else{eval(ext.replace("var rule","rule"))}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:`+e.message)}}rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl;rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:`+e.message)}}}}}catch(e){console.log("处理headers发生错误:"+e.message)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log("init_test发生错误:"+e.message)}}let homeHtmlCache=undefined;function home(filter){console.log("home");let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:rule.class_parse||"",cate_exclude:rule.cate_exclude};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith(":js")){rule.proxy_rule=rule.proxy_rule.replace(":js","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,DRPY:DRPY};
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
var rule={
|
||||||
|
title:'厂长资源',
|
||||||
|
// host:'https://czspp.com',
|
||||||
|
host:'https://www.czzy.site',
|
||||||
|
hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});HOST = jsp.pdfh(html,"h3&&a&&href")',
|
||||||
|
url:'/fyclassfyfilter',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'{{fl.cateId}}{{fl.class}}{{fl.area}}/page/fypage',
|
||||||
|
filter: {
|
||||||
|
"movie_bt":[
|
||||||
|
{"key":"area","name":"分类","value":[{"v":"","n":"全部"},{"v":"/movie_bt_series/zhanchangtuijian","n":"站长推荐"},{"v":"/movie_bt_series/dyy","n":"电影"},{"v":"/movie_bt_series/dianshiju","n":"电视剧"},{"v":"/movie_bt_series/dohua","n":"动画"},{"v":"/movie_bt_series/guochanju","n":"国产剧"},{"v":"/movie_bt_series/mj","n":"美剧"},{"v":"/movie_bt_series/rj","n":"日剧"},{"v":"/movie_bt_series/hj","n":"韩剧"},{"v":"/movie_bt_series/hwj","n":"海外剧(其他)"},{"v":"/movie_bt_series/huayudianying","n":"华语电影"},{"v":"/movie_bt_series/meiguodianying","n":"欧美电影"},{"v":"/movie_bt_series/ribendianying","n":"日本电影"},{"v":"/movie_bt_series/hanguodianying","n":"韩国电影"},{"v":"/movie_bt_series/yingguodianying","n":"英国电影"},{"v":"/movie_bt_series/faguodianying","n":"法国电影"},{"v":"/movie_bt_series/yindudianying","n":"印度电影"},{"v":"/movie_bt_series/eluosidianying","n":"俄罗斯电影"},{"v":"/movie_bt_series/jianadadianying","n":"加拿大电影"},{"v":"/movie_bt_series/huiyuanzhuanqu","n":"会员专区"}]},
|
||||||
|
{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"传记","v":"/movie_bt_tags/chuanji"},{"n":"儿童","v":"/movie_bt_tags/etet"},{"n":"冒险","v":"/movie_bt_tags/maoxian"},{"n":"剧情","v":"/movie_bt_tags/juqing"},{"n":"动作","v":"/movie_bt_tags/dozuo"},{"n":"动漫","v":"/movie_bt_tags/doman"},{"n":"动画","v":"/movie_bt_tags/dhh"},{"n":"历史","v":"/movie_bt_tags/lishi"},{"n":"古装","v":"/movie_bt_tags/guzhuang"},{"n":"同性","v":"/movie_bt_tags/tongxing"},{"n":"喜剧","v":"/movie_bt_tags/xiju"},{"n":"奇幻","v":"/movie_bt_tags/qihuan"},{"n":"家庭","v":"/movie_bt_tags/jiating"},{"n":"恐怖","v":"/movie_bt_tags/kubu"},{"n":"悬疑","v":"/movie_bt_tags/xuanyi"},{"n":"情色","v":"/movie_bt_tags/qingse"},{"n":"惊悚","v":"/movie_bt_tags/kingsong"},{"n":"战争","v":"/movie_bt_tags/zhanzhen"},{"n":"歌舞","v":"/movie_bt_tags/gw"},{"n":"武侠","v":"/movie_bt_tags/wuxia"},{"n":"灾难","v":"/movie_bt_tags/zainan"},{"n":"爱情","v":"/movie_bt_tags/aiqing"},{"n":"犯罪","v":"/movie_bt_tags/fanzui"},{"n":"短片","v":"/movie_bt_tags/dp"},{"n":"科幻","v":"/movie_bt_tags/kh"},{"n":"纪录片","v":"/movie_bt_tags/jlpp"},{"n":"西部","v":"/movie_bt_tags/xb"},{"n":"运动","v":"/movie_bt_tags/yd"},{"n":"音乐","v":"/movie_bt_tags/yy"}]}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
searchUrl:'/page/fypage?s=**',
|
||||||
|
searchable:2,
|
||||||
|
filterable:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
'Cookie': 'esc_search_captcha=1'
|
||||||
|
},
|
||||||
|
class_name:'全部&豆瓣电影Top250&高分影视&最新电影&热映中&站长推荐&电影&电视剧&动画&国产剧&日剧&韩剧&美剧&海外剧&俄罗斯电影&加拿大电影&华语电影&印度电影&日本电影&欧美电影&法国电影&英国电影&韩国电影&纪录片',
|
||||||
|
class_url:'movie_bt&dbtop250&gaofenyingshi&zuixindianying&reyingzhong&/movie_bt_series/zhanchangtuijian&/movie_bt_series/dyy&/movie_bt_series/dianshiju&/movie_bt_series/dohua&/movie_bt_series/guochanju&/movie_bt_series/rj&/movie_bt_series/hj&/movie_bt_series/mj&/movie_bt_series/hwj&/movie_bt_series/eluosidianying&/movie_bt_series/jianadadianying&/movie_bt_series/huayudianying&/movie_bt_series/yindudianying&/movie_bt_series/ribendianying&/movie_bt_series/meiguodianying&/movie_bt_series/faguodianying&/movie_bt_series/yingguodianying&/movie_bt_series/hanguodianying&movie_bt//movie_bt_tags/jlpp',
|
||||||
|
play_parse:true,
|
||||||
|
|
||||||
|
// lazy代码:源于海阔香雅情大佬 / 小程序:香情影视 https://pastebin.com/L4tHdvFn
|
||||||
|
lazy:`js:
|
||||||
|
pdfh = jsp.pdfh;
|
||||||
|
var html = request(input);
|
||||||
|
var ohtml = pdfh(html, '.videoplay&&Html');
|
||||||
|
var url = pdfh(ohtml, "body&&iframe&&src");
|
||||||
|
if (/Cloud/.test(url)) {
|
||||||
|
var ifrwy = request(url);
|
||||||
|
let code = ifrwy.match(/var url = '(.*?)'/)[1].split('').reverse().join('');
|
||||||
|
let temp = '';
|
||||||
|
for (let i = 0x0; i < code.length; i = i + 0x2) {
|
||||||
|
temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10))
|
||||||
|
}
|
||||||
|
input = {
|
||||||
|
jx: 0,
|
||||||
|
url: temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7),
|
||||||
|
parse: 0
|
||||||
|
}
|
||||||
|
} else if (/decrypted/.test(ohtml)) {
|
||||||
|
var phtml = pdfh(ohtml, "body&&script:not([src])&&Html");
|
||||||
|
eval(getCryptoJS());
|
||||||
|
var scrpt = phtml.match(/var.*?\\)\\);/g)[0];
|
||||||
|
var data = [];
|
||||||
|
eval(scrpt.replace(/md5/g, 'CryptoJS').replace('eval', 'data = '));
|
||||||
|
input = {
|
||||||
|
jx: 0,
|
||||||
|
url: data.match(/url:.*?[\\'\\"](.*?)[\\'\\"]/)[1],
|
||||||
|
parse: 0
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
input
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
推荐:'.bt_img;ul&&li;*;*;*;*',
|
||||||
|
double:true,
|
||||||
|
一级:'.bt_img&&ul&&li;h3.dytit&&Text;img.lazy&&data-original;.jidi&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title": "h1&&Text;.moviedteail_list li&&a&&Text",
|
||||||
|
"img": "div.dyimg img&&src",
|
||||||
|
"desc": ".moviedteail_list li:eq(3) a&&Text;.moviedteail_list li:eq(2) a&&Text;.moviedteail_list li:eq(1) a&&Text;.moviedteail_list li:eq(7)&&Text;.moviedteail_list li:eq(5)&&Text",
|
||||||
|
"content": ".yp_context&&Text",
|
||||||
|
"tabs": ".mi_paly_box span",
|
||||||
|
"lists": ".paly_list_btn:eq(#id) a"
|
||||||
|
},
|
||||||
|
搜索:'.search_list&&ul&&li;*;*;*;*',
|
||||||
|
// 预处理:'rule_fetch_params.headers.Cookie="68148872828e9f4d64e7a296f6c6b6d7=5429da9a54375db451f7f9e4f16ce0ea;esc_search_captcha=1";let new_host="https://czspp.com";let new_html=request(new_host);if(/正在进行人机识别/.test(new_html)){let new_src=pd(new_html,"script&&src",new_host);log(new_src);let hhtml=request(new_src,{withHeaders:true});let json=JSON.parse(hhtml);let html=json.body;let key=html.match(new RegExp(\'var key="(.*?)"\'))[1];let avalue=html.match(new RegExp(\'value="(.*?)"\'))[1];let c="";for(let i=0;i<avalue.length;i++){let a=avalue[i];let b=a.charCodeAt();c+=b}let value=md5(c);log(value);let yz_url="https://czspp.com/a20be899_96a6_40b2_88ba_32f1f75f1552_yanzheng_ip.php?type=96c4e20a0e951f471d32dae103e83881&key="+key+"&value="+value;log(yz_url);hhtml=request(yz_url,{withHeaders:true});json=JSON.parse(hhtml);let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");let cookie=setCk?json[setCk].split(";")[0]:"";log("cookie:"+cookie);rule_fetch_params.headers.Cookie=cookie;setItem(RULE_CK,cookie)}',
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ var rule = {
|
|||||||
title:'LIBVIO',
|
title:'LIBVIO',
|
||||||
模板:'首图2',
|
模板:'首图2',
|
||||||
// host:'https://tv.libvio.cc',
|
// host:'https://tv.libvio.cc',
|
||||||
host:'https://libvio.app',
|
host:'https://www.libvio.app',
|
||||||
hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src=jsp.pdfh(html,"li:eq(0)&&a:eq(0)&&href");print(src);HOST=src',
|
hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src=jsp.pdfh(html,"li:eq(0)&&a:eq(0)&&href");print(src);HOST=src',
|
||||||
// url:'/type/fyclass-fypage.html',
|
// url:'/type/fyclass-fypage.html',
|
||||||
url:'/show/fyclassfyfilter.html',
|
url:'/show/fyclassfyfilter.html',
|
||||||
|
|||||||
+185
-254
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
@@ -49,30 +49,31 @@
|
|||||||
"ext": "./js/菜狗.js"
|
"ext": "./js/菜狗.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "秒看资源",
|
"key": "彩虹",
|
||||||
"name": "秒看┃切片",
|
"name": "🌈彩虹4K",
|
||||||
"type": 1,
|
"type": 3,
|
||||||
"playerType": 1,
|
"api": "csp_AppYsV2",
|
||||||
"api": "https://mkzy.vip/api.php/provide/vod",
|
"playerType": 2,
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"ext": "http://ys.qtw.asia/lvdou_api.php/v1.vod",
|
||||||
"categories": [
|
"categories": [
|
||||||
"电视剧",
|
"连续剧",
|
||||||
"电影",
|
"电影",
|
||||||
"动漫",
|
"动漫",
|
||||||
"综艺"
|
"综艺"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "彩虹",
|
"key": "mb",
|
||||||
"name": "🌈彩虹4K",
|
"name": "👑夜猫秒播👑",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_AppYsV2",
|
"api": "csp_AppYsV2",
|
||||||
"playerType": 1,
|
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"ext": "http://www.qtw.asia/api.php/v1.vod"
|
"ext": "http://mp4.ghlyys.com/api.php/app/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "超前",
|
"key": "超前",
|
||||||
@@ -84,23 +85,15 @@
|
|||||||
"ext": "./js/4K超前.js"
|
"ext": "./js/4K超前.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "365",
|
"key": "ymym",
|
||||||
"name": "👑365秒播👑",
|
"name": "👑夜猫优米👑",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"playerType": 2,
|
"playerType": 2,
|
||||||
"api": "csp_AppYsV2",
|
"api": "csp_AppYsV2",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "http://guan.yy365.vip/api.php/app/"
|
"ext": "http://ym.dytt996.com:12/api.php/app/"
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "ymym",
|
|
||||||
"name": "👑夜猫优米👑",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/夜猫优米.js"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "yc",
|
"key": "yc",
|
||||||
@@ -111,28 +104,9 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
"ext": "https://pan.shangui.cc/f/p5RUL/tk.php",
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt",
|
||||||
"jar": "./jars/yc.jar"
|
"jar": "./jars/yc.jar"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "影探4K2",
|
|
||||||
"name": "👑新夜猫子👑",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 1,
|
|
||||||
"api": "csp_AppYsV2",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "http://ytcms.lyyytv.cn/api.php/app/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "AppYs_ky",
|
|
||||||
"name": "👑夜猫好酷👑",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 1,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/酷酷.js"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "csp_appysv2_迷你库",
|
"key": "csp_appysv2_迷你库",
|
||||||
"name": "👑夜猫迷你2k👑",
|
"name": "👑夜猫迷你2k👑",
|
||||||
@@ -144,22 +118,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "http://www.miniku.cc/xgapp.php/v2/"
|
"ext": "http://www.miniku.cc/xgapp.php/v2/"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "AppYs_yumi",
|
|
||||||
"name": "👑夜猫至臻👑",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/新夜猫至臻.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "ymzy2k",
|
|
||||||
"name": "👑夜猫自营2k👑",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/夜猫自营2k.js"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "影院",
|
"key": "影院",
|
||||||
"name": "👑夜猫蓝光2K👑",
|
"name": "👑夜猫蓝光2K👑",
|
||||||
@@ -182,6 +140,39 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"ext": "./js/南瓜.js"
|
"ext": "./js/南瓜.js"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "qiyue",
|
||||||
|
"name": "👑七月蓝光👑",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/七月影视.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "hanju",
|
||||||
|
"name": "👑天天韩剧👑",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/天天韩剧.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "看剧",
|
||||||
|
"name": "👑看剧蓝光👑",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_AppYsV2",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "https://kankanju.cc/api.php/app/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "狐狸影视",
|
"key": "狐狸影视",
|
||||||
"name": "👑狐狸影视2k👑",
|
"name": "👑狐狸影视2k👑",
|
||||||
@@ -194,33 +185,6 @@
|
|||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"ext": "https://www.kuin.one/api.php/app/"
|
"ext": "https://www.kuin.one/api.php/app/"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "忍者视频",
|
|
||||||
"name": "👑夜猫忍者👑",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Mayiys",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 0,
|
|
||||||
"jar": "./jars/忍者视频.jar",
|
|
||||||
"ext": "http://www.rzys.cc"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "AppYs_xylg2",
|
|
||||||
"name": "👑夜猫自营蓝光👑",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/自营蓝光2.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "ymzy",
|
|
||||||
"name": "👑夜猫自营高清👑",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/自营.js"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "xymzftfx",
|
"key": "xymzftfx",
|
||||||
"name": "👑非同凡响👑",
|
"name": "👑非同凡响👑",
|
||||||
@@ -230,52 +194,32 @@
|
|||||||
"ext": "./js/非同凡响.js"
|
"ext": "./js/非同凡响.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "极客",
|
"key": "csp_Ikanbot",
|
||||||
"name": "👑极客|蓝光👑",
|
"name": "👑夜猫聚影👑",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"playerType": 2,
|
"api": "csp_Ikanbot",
|
||||||
"api": "csp_XBPQ",
|
"searchable": 1,
|
||||||
"ext": {
|
"quickSearch": 1,
|
||||||
"分类url": "https://www.jiketv.com/index.php/show/{cateId}/area/{area}/by/{by}/class/{class}/lang/{lang}/letter/{letter}/year/{year}.html;;akx",
|
"filterable": 1
|
||||||
"分类": "动漫$4#电影$1#剧集$2#综艺$3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "9yyq",
|
|
||||||
"name": "👑九禹云播👑",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"ext": {
|
|
||||||
"分类url": "https://v.jiuyuyun.xyz/index.php/vod/show/id/{cateId}/page/{catePg}.html"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "dr_jqr",
|
"key": "dr_jqr",
|
||||||
"name": "👑夜猫聚影👑",
|
"name": "👑夜猫聚影2(待修复)👑",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"playerType": 2,
|
"playerType": 2,
|
||||||
"api": "./drpy2.min.js",
|
"api": "./drpy2.min.js",
|
||||||
"ext": "./js/ikan.js"
|
"ext": "./js/ikanbot1.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "蘑菇2",
|
"key": "csp_djtv",
|
||||||
"name": "🍄️蘑菇┃APP",
|
"name": "😻爱看短剧",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_AppYs",
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "https://11111111.moguys.xyz/api.php/app/"
|
"ext": "./json/短剧.json"
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "大豆高清",
|
|
||||||
"name": "🥓大豆┃app",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_AppYsV2",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "http://www.dadou.cm/api.php/app/"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "dr_czyzy",
|
"key": "dr_czyzy",
|
||||||
@@ -318,6 +262,126 @@
|
|||||||
"分类url": "http://www.xiaoluys.me/vodshow/{cateId}-{area}-{by}------{catePg}---{year}.html"
|
"分类url": "http://www.xiaoluys.me/vodshow/{cateId}-{area}-{by}------{catePg}---{year}.html"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_荐片",
|
||||||
|
"name": "👑 | 荐片蓝光",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/荐片.js",
|
||||||
|
"playerType": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_slgq",
|
||||||
|
"name": "🏵️石榴蓝光",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/石榴高清.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "dr_ymi",
|
||||||
|
"name": "⭐┃映迷蓝光┃",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/映迷影院.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_qy",
|
||||||
|
"name": "🐵奇优影院",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/奇优影院.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "dr_xc",
|
||||||
|
"name": "⭐┃星辰蓝光┃",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/星辰.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_aidi_api",
|
||||||
|
"name": "🐩爱迪高清APP",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_AppYsV2",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "https://aidiapp.xyz/xgapp.php/v2/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_ggun",
|
||||||
|
"name": "🌵光棍高清",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/光棍影视.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_miai",
|
||||||
|
"name": "🌾米爱蓝光",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/米爱影视.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_bt",
|
||||||
|
"name": "😢鼻涕影视",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/鼻涕影视.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "XBPQsj",
|
||||||
|
"name": "🔥┃新视觉┃",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"filterable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"searchable": 1,
|
||||||
|
"ext": "./json/6080.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_XBPQ_nmys",
|
||||||
|
"name": "🚲┃农民┃",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/农民影视.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_XBPQ_thys",
|
||||||
|
"name": "⛴️┃土豪┃影视",
|
||||||
|
"type": 3,
|
||||||
|
"playerType": 2,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/土豪影视.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_Mp4Mov",
|
"key": "csp_Mp4Mov",
|
||||||
"name": "🧲磁力Mp4电影",
|
"name": "🧲磁力Mp4电影",
|
||||||
@@ -469,139 +533,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./json/音范丝.json"
|
"ext": "./json/音范丝.json"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "ity",
|
|
||||||
"name": "爱TV丨4k",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"playerType": 2,
|
|
||||||
"ext": {
|
|
||||||
"数组": "<div class=\"stui-vodlist__box\">&&</div>",
|
|
||||||
"副标题": "<span class=\"pic-text text-right\"><b>&&</b></span>",
|
|
||||||
"分类": "电影$1#电视剧$2#动漫$4#综艺$3#记录$5#动画片$6",
|
|
||||||
"分类url": "https://www.citydy.com/show/id-{cateId}/area/{area}/by/{by}/class/{class}/lang/{lang}/page/{catePg}/year/{year}.html"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "drpy_js_荐片",
|
|
||||||
"name": "👑 | 荐片蓝光",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/荐片.js",
|
|
||||||
"playerType": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "csp_slgq",
|
|
||||||
"name": "🏵️石榴蓝光",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/石榴高清.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "dr_ymi",
|
|
||||||
"name": "⭐┃映迷蓝光┃",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/映迷影院.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "drpy_qy",
|
|
||||||
"name": "🐵奇优影院",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/奇优影院.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "dr_xc",
|
|
||||||
"name": "⭐┃星辰蓝光┃",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"ext": "./js/星辰.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "csp_aidi_api",
|
|
||||||
"name": "🐩爱迪高清APP",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "csp_AppYsV2",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "https://aidiapp.xyz/xgapp.php/v2/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "csp_ggun",
|
|
||||||
"name": "🌵光棍高清",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/光棍影视.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "csp_miai",
|
|
||||||
"name": "🌾米爱蓝光",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/米爱影视.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "csp_bt",
|
|
||||||
"name": "😢鼻涕影视",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/鼻涕影视.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "XBPQsj",
|
|
||||||
"name": "🔥┃新视觉┃",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"filterable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"searchable": 1,
|
|
||||||
"ext": "./json/6080.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "csp_XBPQ_nmys",
|
|
||||||
"name": "🚲┃农民┃",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/农民影视.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "csp_XBPQ_thys",
|
|
||||||
"name": "⛴️┃土豪┃影视",
|
|
||||||
"type": 3,
|
|
||||||
"playerType": 2,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/土豪影视.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "py_央视片库",
|
"key": "py_央视片库",
|
||||||
"name": "🌏cctv片库",
|
"name": "🌏cctv片库",
|
||||||
@@ -1071,12 +1002,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "酷影专用",
|
"name": "优米",
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"url": "http://jx.realdou.cn/api/?key=j4vwSEv2iAE54EWTbM&url=",
|
"url": "https://api.xn--kcr500a391b.cc/api/jiexi/common?Key=k5Ed7d2zMu4FLRhwjw&url=",
|
||||||
"ext": {
|
"ext": {
|
||||||
"flag": [
|
"flag": [
|
||||||
"kuying"
|
"YuMi"
|
||||||
],
|
],
|
||||||
"header": {
|
"header": {
|
||||||
"User-Agent": "okhttp/3.12.11"
|
"User-Agent": "okhttp/3.12.11"
|
||||||
|
|||||||
@@ -0,0 +1,153 @@
|
|||||||
|
var 二级=`js:
|
||||||
|
try {
|
||||||
|
VOD={};
|
||||||
|
let html1 = request(input);
|
||||||
|
pdfh = jsp.pdfh;
|
||||||
|
VOD.vod_id = pdfh(html1, "#current_id&&value");
|
||||||
|
VOD.vod_name = pdfh(html1, "h2&&Text");
|
||||||
|
// VOD.vod_pic = pdfh(html1, ".item-root&&img&&src");
|
||||||
|
VOD.vod_pic = pdfh(html1, ".item-root&&img&&data-src");
|
||||||
|
// VOD.vod_actor = pdfh(html1, ".celebrity&&Text");
|
||||||
|
VOD.vod_actor = pdfh(html1, ".meta:eq(4)&&Text");
|
||||||
|
// VOD.vod_area = pdfh(html1, ".country&&Text");
|
||||||
|
VOD.vod_area = pdfh(html1, ".meta:eq(3)&&Text");
|
||||||
|
// VOD.vod_year = pdfh(html1, ".year&&Text");
|
||||||
|
VOD.vod_year = pdfh(html1, ".meta:eq(2)&&Text");
|
||||||
|
VOD.vod_remarks = "";
|
||||||
|
VOD.vod_director = "";
|
||||||
|
VOD.vod_content = "";
|
||||||
|
log(VOD);
|
||||||
|
var v_tks = '';
|
||||||
|
let script = pdfa(html1,'script').find(it=>it.includes('v_tks+=')).replace(/<script>|<\\/script>/g,'');
|
||||||
|
eval(script);
|
||||||
|
input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2"+"&token="+v_tks;
|
||||||
|
// input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2";
|
||||||
|
let html = request(input, {
|
||||||
|
headers: {
|
||||||
|
'User-Agent':'PC_UA',
|
||||||
|
'Referer': input,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
print(html);
|
||||||
|
html = JSON.parse(html);
|
||||||
|
let episodes = html.data.list;
|
||||||
|
let playMap = {};
|
||||||
|
if (typeof play_url === "undefined") {
|
||||||
|
var play_url = ""
|
||||||
|
}
|
||||||
|
let map = {}
|
||||||
|
let arr = []
|
||||||
|
episodes.forEach(function(ep) {
|
||||||
|
let data = JSON.parse(ep["resData"]);
|
||||||
|
data.map(val => {
|
||||||
|
|
||||||
|
if(!map[val.flag]){
|
||||||
|
map[val.flag] = [val.url]
|
||||||
|
} else {
|
||||||
|
map[val.flag].push(val.url)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
for(var key in map){
|
||||||
|
if('kuaikan'==key){
|
||||||
|
arr.push({
|
||||||
|
flag: '👑夜猫快看👑',
|
||||||
|
url: map[key],
|
||||||
|
sort:2
|
||||||
|
})}
|
||||||
|
if('bfzym3u8'==key){
|
||||||
|
arr.push({
|
||||||
|
flag: '👑夜猫暴风👑',
|
||||||
|
url: map[key],
|
||||||
|
sort:1
|
||||||
|
})}
|
||||||
|
if('1080zyk'==key){
|
||||||
|
arr.push({
|
||||||
|
flag: '👑夜猫1080👑',
|
||||||
|
url: map[key],
|
||||||
|
sort:3
|
||||||
|
})}
|
||||||
|
if('ffm3u8'==key){
|
||||||
|
arr.push({
|
||||||
|
flag: '👑夜猫非凡👑',
|
||||||
|
url: map[key],
|
||||||
|
sort:4
|
||||||
|
})}
|
||||||
|
if('lzm3u8'==key){
|
||||||
|
arr.push({
|
||||||
|
flag: '👑夜猫量子👑',
|
||||||
|
url: map[key],
|
||||||
|
sort:5
|
||||||
|
})}
|
||||||
|
|
||||||
|
}
|
||||||
|
arr.sort((a, b) => a.sort - b.sort);
|
||||||
|
|
||||||
|
let playFrom = [];
|
||||||
|
let playList = [];
|
||||||
|
|
||||||
|
arr.map(val => {
|
||||||
|
playFrom.push(val.flag);
|
||||||
|
playList.push(val.url);
|
||||||
|
})
|
||||||
|
let vod_play_from = playFrom.join("$$$");
|
||||||
|
let vod_play_url = playList.join("$$$");
|
||||||
|
VOD["vod_play_from"] = vod_play_from;
|
||||||
|
VOD["vod_play_url"] = vod_play_url;
|
||||||
|
log(VOD);
|
||||||
|
} catch (e) {
|
||||||
|
log("获取二级详情页发生错误:" + e.message)
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
var rule = {
|
||||||
|
title:'爱看机器人2',
|
||||||
|
host:'https://www.ikanbot.com',
|
||||||
|
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
||||||
|
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
||||||
|
// searchUrl:'/search?q=**&p=fypage',
|
||||||
|
searchUrl:'/search?q=**',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:1,
|
||||||
|
filter_url:'{{fl.tag}}',
|
||||||
|
// 图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
|
||||||
|
图片来源:'@Referer=https://www.ikanbot.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
|
||||||
|
filter:{
|
||||||
|
"movie":[{"key":"tag","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":"豆瓣top250","v":"豆瓣top250"}]}]
|
||||||
|
,"tv":[{"key":"tag","name":"标签","value":[{"n":"热门","v":"热门"},{"n":"美剧","v":"美剧"},{"n":"英剧","v":"英剧"},{"n":"韩剧","v":"韩剧"},{"n":"日剧","v":"日剧"},{"n":"国产剧","v":"国产剧"},{"n":"港剧","v":"港剧"},{"n":"日本动画","v":"日本动画"},{"n":"综艺","v":"综艺"},{"n":"纪录片","v":"纪录片"}]}]
|
||||||
|
},
|
||||||
|
filter_def:{
|
||||||
|
movie:{tag:'热门'},
|
||||||
|
tv:{tag:'国产剧'},
|
||||||
|
},
|
||||||
|
filter获取方法:`
|
||||||
|
let value = [];
|
||||||
|
$('ul').eq(2).find('li').each(function() {
|
||||||
|
// console.log($(this).text());
|
||||||
|
let n = $(this).text().trim();
|
||||||
|
value.push({
|
||||||
|
'n': n, 'v': n
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// 电影执行:
|
||||||
|
let data = {'movie': [{'key': 'tag', 'name': '标签', 'value': value}]};
|
||||||
|
console.log(JSON.stringify(data));
|
||||||
|
|
||||||
|
//剧集执行:
|
||||||
|
let data = {'tv': [{'key': 'tag', 'name': '标签', 'value': value}]};
|
||||||
|
console.log(JSON.stringify(data));
|
||||||
|
`,
|
||||||
|
headers:{'User-Agent':'PC_UA',},
|
||||||
|
class_name:'电影&剧集',
|
||||||
|
class_url:'movie&tv',
|
||||||
|
play_parse:true,
|
||||||
|
double:true,
|
||||||
|
推荐:'.v-list;div.item;*;*;*;*', //这里可以为空,这样点播不会有内容
|
||||||
|
// 一级:'.v-list&&div.item;p&&Text;img&&src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
|
||||||
|
一级:'.v-list&&div.item;p&&Text;img&&data-src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
|
||||||
|
二级:二级,
|
||||||
|
// 搜索:'#search-result&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href',//第三个是描述,一般显示更新或者完结
|
||||||
|
搜索:'.col-md-8&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href',//第三个是描述,一般显示更新或者完结
|
||||||
|
}
|
||||||
@@ -0,0 +1,275 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"作者":"",
|
||||||
|
"站名":"七月影视",
|
||||||
|
"主页url":"http://www.9day.cc",
|
||||||
|
"请求头":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
|
||||||
|
"cookie":"",
|
||||||
|
"热门推荐":"1",
|
||||||
|
"直接播放":"0",
|
||||||
|
"二次截取":"<div class=\"module-items\">&&<div id=\"page\">",
|
||||||
|
"数组":"<div class=\"module-item-pic\">&&<div class=\"module-item\">",
|
||||||
|
"图片":"data-src=\"&&\"",
|
||||||
|
"标题":"title=\"&&\"",
|
||||||
|
"链接":"href=\"&&\"",
|
||||||
|
"副标题":"module-item-text\">&&</div>",
|
||||||
|
"搜索url":"http://www.9day.cc/index.php/ajax/suggest?mid=1&wd={wd}&limit=500",
|
||||||
|
"搜索模式": "0",
|
||||||
|
//"搜索数组": "<li&&</li>",
|
||||||
|
//"搜索图片": "data-original=\"&&\"",
|
||||||
|
//"搜索标题": "title=\"&&\"",
|
||||||
|
//"搜索链接": "href=\"&&\"",
|
||||||
|
//"搜索后缀":"/vod/",
|
||||||
|
"状态":"集数:&&</div>",
|
||||||
|
"导演":"导演:&&</div>",
|
||||||
|
"主演":"主演:&&</div>",
|
||||||
|
"简介":"video-info-item video-info-content vod_content\"><span>&&</span>",
|
||||||
|
"线路二次截取":"",
|
||||||
|
"线路数组":"<div class=\"module-tab-item tab-item\"&&</div>",
|
||||||
|
"线路标题":"<span>&&</span>[不包含:乐视视频#搜狐视频][替换:本地1>>七月专线#本地>>七月专线2]",
|
||||||
|
"播放数组":"<div class=\"sort-item\"&&</div>",
|
||||||
|
"播放列表":"<a&&</a>",
|
||||||
|
"播放标题":"<span>&&</span>",
|
||||||
|
"播放链接":"href=\"&&\"",
|
||||||
|
"播放链接前缀":"",
|
||||||
|
"嗅探词":".mp4#.aliyuncs.com#.m3u8?#.mp4#.m3u8",
|
||||||
|
//"过滤词":"url=#?v=https",
|
||||||
|
"播放请求头":"",
|
||||||
|
//"免嗅":"1",
|
||||||
|
"分类":"电影$1#电视剧$2#综艺$3#动画$4",
|
||||||
|
"分类url":"http://www.9day.cc/index.php/vod/show/area/{area}/class/{class}/id/{cateId}/page/{catePg}/year/{year}.html",
|
||||||
|
"筛选":{
|
||||||
|
"1":[
|
||||||
|
{"key":"class","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":"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":"其他"}]},
|
||||||
|
|
||||||
|
{"key":"year","name":"年份","value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"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"}]},
|
||||||
|
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}],
|
||||||
|
|
||||||
|
"2":[
|
||||||
|
{"key":"class","name":"类型","value":[
|
||||||
|
{"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":"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":"2006","v":"2006"},
|
||||||
|
{"n":"2005","v":"2005"},
|
||||||
|
{"n":"2004","v":"2004"}]},
|
||||||
|
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}],
|
||||||
|
|
||||||
|
"3":[
|
||||||
|
{"key":"class","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":"求职"}]},
|
||||||
|
|
||||||
|
{"key":"area","name":"地区","value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"n":"内地","v":"内地"},
|
||||||
|
{"n":"港台","v":"港台"},
|
||||||
|
{"n":"日韩","v":"日韩"},
|
||||||
|
{"n":"欧美","v":"欧美"}]},
|
||||||
|
|
||||||
|
{"key":"year","name":"年份","value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"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"}]},
|
||||||
|
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}],
|
||||||
|
|
||||||
|
"4":[
|
||||||
|
{"key":"class","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":"其他"}]},
|
||||||
|
|
||||||
|
{"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":"其他"}]},
|
||||||
|
|
||||||
|
{"key":"year","name":"年份","value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"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"}]},
|
||||||
|
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}],
|
||||||
|
|
||||||
|
"33":[
|
||||||
|
{"key":"by","name":"排序","value":[
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}]}]}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"站名":"天天韩剧",
|
||||||
|
"主页url":"https://hanju2.yingdouw.com",
|
||||||
|
"分类":"韩剧$1#电影$2#美剧$26#日剧$27#动漫$28#国产剧$29#泰剧$30",
|
||||||
|
"分类url":"https://hanju2.yingdouw.com/search.php?page={catePg}&searchtype=5&order={by}&tid={cateId}&area=&year={year}&letter=&yuyan=&state=&money=&ver=&jq={class};;ak",
|
||||||
|
|
||||||
|
"数组":"class=\"col-xs-3\">&&</li>",
|
||||||
|
|
||||||
|
"搜索模式":"1",
|
||||||
|
"搜索url":"https://hanju2.yingdouw.com/search.php;post;searchword={wd}",
|
||||||
|
|
||||||
|
"线路数组":"class=\"stui-pannel__head clearfix\">&&</div>"
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"站名":"VS影院",
|
||||||
|
"主页url":"https://m.91doutu.com",
|
||||||
|
"分类":"电影$dianying#电视剧$dianshiju#动漫$dongman#综艺$zongyi#短剧$dj",
|
||||||
|
"分类url":"https://m.91doutu.com/vodlist/{cateId}_{class}_{area}_{year}___{catePg}.html",
|
||||||
|
|
||||||
|
"副标题":"class=\"sname text-center\">&&</span>"
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
{
|
{
|
||||||
"分类url": "https://www.freeok.vip/label/{cateId}.html",
|
"分类url":"https://www.freeok.vip/vodshow/{cateId}-{area}-{by}-{class}-----{catePg}---{year}.html;;m","分类":"电影&剧集&动漫&综艺","分类值":"1&2&3&4","嗅探词":"m3u8#.m3u8#.mp4#mp4",
|
||||||
"分类": "今日更新$new#热榜$hot",
|
|
||||||
|
|
||||||
"搜索url": "https://www.cupfox.app/s/{wd}",
|
"搜索url": "https://www.cupfox.app/s/{wd}",
|
||||||
|
|
||||||
"嗅探词": "m3u8#.m3u8#.mp4#mp4",
|
"嗅探词": "m3u8#.m3u8#.mp4#mp4",
|
||||||
|
|||||||
Binary file not shown.
+41
-81
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
@@ -13,17 +13,6 @@
|
|||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"filterable": 0
|
"filterable": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "csp_AList_Alist",
|
|
||||||
"name": "🍰小鸭┃网盘",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_AList",
|
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/alist.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "csp_WoGG",
|
"key": "csp_WoGG",
|
||||||
"name": "🎬玩偶┃自营",
|
"name": "🎬玩偶┃自营",
|
||||||
@@ -86,7 +75,7 @@
|
|||||||
"key": "广播迷",
|
"key": "广播迷",
|
||||||
"name": "广播┃BPQ",
|
"name": "广播┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"分类": "央视$zy#北京$bj#上海$sh#天津$tj#重庆$cq#广东$gd#四川$sc#山东$sd#江苏$js#浙江$zj#河南$henan#河北$hebei#辽宁$ln#安徽$ah#湖南$hn#湖北$hubei#福建$fj#广西$gx#山西$sxi#云南$yn#贵州$gz#西藏$xz#宁夏$nx#海南$hainan#新疆$xj#甘肃$gs#青海$qh#黑龙江$hlj#内蒙古$nmg#港澳$hk",
|
"分类": "央视$zy#北京$bj#上海$sh#天津$tj#重庆$cq#广东$gd#四川$sc#山东$sd#江苏$js#浙江$zj#河南$henan#河北$hebei#辽宁$ln#安徽$ah#湖南$hn#湖北$hubei#福建$fj#广西$gx#山西$sxi#云南$yn#贵州$gz#西藏$xz#宁夏$nx#海南$hainan#新疆$xj#甘肃$gs#青海$qh#黑龙江$hlj#内蒙古$nmg#港澳$hk",
|
||||||
@@ -101,7 +90,7 @@
|
|||||||
"name": "360┃BPQ",
|
"name": "360┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"ext": "./json/360.json"
|
"ext": "./json/360.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -109,9 +98,17 @@
|
|||||||
"name": "乐猪┃BPQ",
|
"name": "乐猪┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"ext": "./json/lezhu.json"
|
"ext": "./json/lezhu.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "淘剧",
|
||||||
|
"name": "淘剧┃BPQ",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"jar": "./jars/广播迷.jar",
|
||||||
|
"ext": "./json/淘剧.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_Bili",
|
"key": "csp_Bili",
|
||||||
"name": "哔哔┃合集",
|
"name": "哔哔┃合集",
|
||||||
@@ -173,7 +170,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"站名": "黑狐影院",
|
"站名": "黑狐影院",
|
||||||
@@ -215,7 +212,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"分类url": "https://shdy3.com/list/{cateId}-{catePg}.html;;r1da",
|
"分类url": "https://shdy3.com/list/{cateId}-{catePg}.html;;r1da",
|
||||||
@@ -235,29 +232,18 @@
|
|||||||
"name": "🗯辣辣┃APP",
|
"name": "🗯辣辣┃APP",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_AppYs",
|
"api": "csp_AppYs",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "http://www.miniku.cc/xgapp.php/v2/"
|
"ext": "http://www.miniku.cc/xgapp.php/v2/"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "蘑菇2",
|
|
||||||
"name": "️蘑菇┃APP",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_AppYsV2",
|
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "https://11111111.moguys.xyz/api.php/app/"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "落落",
|
"key": "落落",
|
||||||
"name": "️落落┃APP",
|
"name": "️落落┃APP",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_AppYs",
|
"api": "csp_AppYs",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -278,29 +264,11 @@
|
|||||||
"key": "素白",
|
"key": "素白",
|
||||||
"name": "素白┃BPQ",
|
"name": "素白┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"ext": "./json/素白.json"
|
"ext": "./json/素白.json"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "348",
|
|
||||||
"name": "348┃BPQ",
|
|
||||||
"type": 3,
|
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"playerType": "1",
|
|
||||||
"ext": "./json/348.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "蘑菇",
|
|
||||||
"name": "蘑菇┃BPQ",
|
|
||||||
"type": 3,
|
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"playerType": "1",
|
|
||||||
"ext": "./json/蘑菇.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "YQK_spider",
|
"key": "YQK_spider",
|
||||||
"name": "一起┃APP",
|
"name": "一起┃APP",
|
||||||
@@ -316,7 +284,7 @@
|
|||||||
"key": "龟龟",
|
"key": "龟龟",
|
||||||
"name": "龟龟┃BPQ",
|
"name": "龟龟┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"ext": {
|
"ext": {
|
||||||
@@ -337,20 +305,12 @@
|
|||||||
"分类url": "http://www.dadagui.me/vodshow/{cateId}-{area}-{by}--{lang}----{catePg}---{year}.html"
|
"分类url": "http://www.dadagui.me/vodshow/{cateId}-{area}-{by}--{lang}----{catePg}---{year}.html"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "双十",
|
|
||||||
"name": "双十┃直连",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Dy1010",
|
|
||||||
"playerType": "1",
|
|
||||||
"ext": "https://www.1010dy3.com/"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "耐看",
|
"key": "耐看",
|
||||||
"name": "耐看┃BPQ",
|
"name": "耐看┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"ext": "./json/来看.json"
|
"ext": "./json/来看.json"
|
||||||
},
|
},
|
||||||
@@ -359,7 +319,7 @@
|
|||||||
"name": "星辰┃BPQ",
|
"name": "星辰┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"ext": "./json/星辰.json"
|
"ext": "./json/星辰.json"
|
||||||
},
|
},
|
||||||
@@ -367,7 +327,7 @@
|
|||||||
"key": "看看",
|
"key": "看看",
|
||||||
"name": "看看┃BPQ",
|
"name": "看看┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"changeable": 0,
|
"changeable": 0,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
@@ -392,7 +352,7 @@
|
|||||||
"key": "双黄",
|
"key": "双黄",
|
||||||
"name": "双黄┃BPQ",
|
"name": "双黄┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"嗅探词": "v3-dy-o.zjcdn#.m3u8#",
|
"嗅探词": "v3-dy-o.zjcdn#.m3u8#",
|
||||||
@@ -409,7 +369,7 @@
|
|||||||
"key": "零度",
|
"key": "零度",
|
||||||
"name": "零度┃BPQ",
|
"name": "零度┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"ext": "./json/tvb.json"
|
"ext": "./json/tvb.json"
|
||||||
@@ -418,7 +378,7 @@
|
|||||||
"key": "莱米",
|
"key": "莱米",
|
||||||
"name": "莱米┃BPQ",
|
"name": "莱米┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"playerType": "2",
|
"playerType": "2",
|
||||||
"ext": {
|
"ext": {
|
||||||
@@ -451,7 +411,7 @@
|
|||||||
"key": "夜幕",
|
"key": "夜幕",
|
||||||
"name": "️夜夜┃BPQ",
|
"name": "️夜夜┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
@@ -486,7 +446,7 @@
|
|||||||
"key": "土豪",
|
"key": "土豪",
|
||||||
"name": "土豪┃BPQ",
|
"name": "土豪┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"分类url": "https://tuhao.tv/vsh/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;m",
|
"分类url": "https://tuhao.tv/vsh/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;m",
|
||||||
@@ -508,7 +468,7 @@
|
|||||||
"key": "csp_XBPQ_JOJO",
|
"key": "csp_XBPQ_JOJO",
|
||||||
"name": "JOJO┃BPQ",
|
"name": "JOJO┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
@@ -531,7 +491,7 @@
|
|||||||
"key": "热播库",
|
"key": "热播库",
|
||||||
"name": "热播┃BPQ",
|
"name": "热播┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"ext": "./json/热播.json"
|
"ext": "./json/热播.json"
|
||||||
@@ -548,7 +508,7 @@
|
|||||||
"key": "虎虎",
|
"key": "虎虎",
|
||||||
"name": "虎虎┃BPQ",
|
"name": "虎虎┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": "./json/虎虎.json"
|
"ext": "./json/虎虎.json"
|
||||||
},
|
},
|
||||||
@@ -556,7 +516,7 @@
|
|||||||
"key": "利播",
|
"key": "利播",
|
||||||
"name": "利播┃BPQ",
|
"name": "利播┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": "./json/利播.json"
|
"ext": "./json/利播.json"
|
||||||
},
|
},
|
||||||
@@ -564,7 +524,7 @@
|
|||||||
"key": "串串",
|
"key": "串串",
|
||||||
"name": "串串┃️BPQ",
|
"name": "串串┃️BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"请求头": "手机#Referer$http://bczhuiju.com/",
|
"请求头": "手机#Referer$http://bczhuiju.com/",
|
||||||
@@ -589,7 +549,7 @@
|
|||||||
"key": "滋滋",
|
"key": "滋滋",
|
||||||
"name": "滋滋┃BPQ",
|
"name": "滋滋┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"ext": {
|
"ext": {
|
||||||
@@ -624,7 +584,7 @@
|
|||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"ext": {
|
"ext": {
|
||||||
"分类url": "https://www.freeok.vip/vodshow/{cateId}-{area}-{by}-{class}-----{catePg}---{year}.html;;m",
|
"分类url": "https://www.freeok.vip/vodshow/{cateId}-{area}-{by}-{class}-----{catePg}---{year}.html;;m",
|
||||||
"分类": "电影&剧集&动漫&综艺",
|
"分类": "电影&剧集&动漫&综艺",
|
||||||
@@ -649,7 +609,7 @@
|
|||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"playerType": "1",
|
"playerType": "1",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"ext": {
|
"ext": {
|
||||||
"数组": "class=\"top&&</li",
|
"数组": "class=\"top&&</li",
|
||||||
"嗅探词": ".m3u8#.mp4#download-cdn.123pan.cn",
|
"嗅探词": ".m3u8#.mp4#download-cdn.123pan.cn",
|
||||||
@@ -674,8 +634,8 @@
|
|||||||
"搜索图片": "https://s1.ax1x.com/2023/07/13/pChRQaD.jpg",
|
"搜索图片": "https://s1.ax1x.com/2023/07/13/pChRQaD.jpg",
|
||||||
"搜索标题": "xt\":\"&&\"",
|
"搜索标题": "xt\":\"&&\"",
|
||||||
"搜索副标题": "\"website\":\"&&\"",
|
"搜索副标题": "\"website\":\"&&\"",
|
||||||
"搜索链接": "https://www.sstv.fun/v_+\"url\":\"https://www.sstv.fun/project-&&.html\"+_1_1.html",
|
"搜索链接": "https://www.ssyy.run/v_+\"url\":\"https://www.ssyy.run/project-&&.html\"+_1_1.html",
|
||||||
"分类url": "https://www.sstv.fun/vodshow-{cateId}/area/{area}/by/{by}/page/{catePg}/year/{year}.html;;a",
|
"分类url": "https://www.ssyy.run/vodshow-{cateId}/area/{area}/by/{by}/page/{catePg}/year/{year}.html;;a",
|
||||||
"分类": "电影$1#剧集$2#综艺$3#动漫$4#纪录$21"
|
"分类": "电影$1#剧集$2#综艺$3#动漫$4#纪录$21"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -683,7 +643,7 @@
|
|||||||
"key": "兔兔",
|
"key": "兔兔",
|
||||||
"name": "兔兔|BPQ",
|
"name": "兔兔|BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"playerType": "2",
|
"playerType": "2",
|
||||||
@@ -718,7 +678,7 @@
|
|||||||
"key": "臭蛋",
|
"key": "臭蛋",
|
||||||
"name": "臭蛋┃BPQ",
|
"name": "臭蛋┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"主页url": "https://cddys.vip/",
|
"主页url": "https://cddys.vip/",
|
||||||
@@ -830,7 +790,7 @@
|
|||||||
"name": "泰泰┃APP",
|
"name": "泰泰┃APP",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_AppYsV2",
|
"api": "csp_AppYsV2",
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
@@ -840,7 +800,7 @@
|
|||||||
"key": "磁力3",
|
"key": "磁力3",
|
||||||
"name": "迅雷┃BPQ",
|
"name": "迅雷┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"请求头": "User-Agent$Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
|
"请求头": "User-Agent$Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
|
||||||
@@ -867,7 +827,7 @@
|
|||||||
"key": "磁力2",
|
"key": "磁力2",
|
||||||
"name": "MP4┃BPQ",
|
"name": "MP4┃BPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"jar": "./jars/csp_AList_Alist.jar",
|
"jar": "./jars/广播迷.jar",
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
"首页": "电视剧",
|
"首页": "电视剧",
|
||||||
|
|||||||
Binary file not shown.
@@ -8,14 +8,14 @@
|
|||||||
"副标题": "pic-tag pic-tag-top\">&&</span>",
|
"副标题": "pic-tag pic-tag-top\">&&</span>",
|
||||||
"图片": "data-original=\"&&\"",
|
"图片": "data-original=\"&&\"",
|
||||||
"链接": "href=\"&&\"",
|
"链接": "href=\"&&\"",
|
||||||
"搜索url": "/vod/search.html?wd={wd}&submit=",
|
//"搜索url": "/vod/search.html?wd={wd}&submit=",
|
||||||
"搜索数组": "myui-vodlist__thumb&&</a>",
|
//"搜索数组": "myui-vodlist__thumb&&</a>",
|
||||||
"搜索标题": "title=\"&&\"",
|
//"搜索标题": "title=\"&&\"",
|
||||||
"搜索副标题": "pic-tag pic-tag-top\">&&</span>",
|
//"搜索副标题": "pic-tag pic-tag-top\">&&</span>",
|
||||||
"搜索图片": "http://w.g9.pub:66/f/Y1ksA/sorry.ico",
|
//"搜索图片": "http://w.g9.pub:66/f/Y1ksA/sorry.ico",
|
||||||
"搜索链接": "href=\"&&\"",
|
//"搜索链接": "href=\"&&\"",
|
||||||
"搜索模式": "1",
|
//"搜索模式": "1",
|
||||||
"搜索后缀": "/vod/detail/id/",
|
//"搜索后缀": "/vod/detail/id/",
|
||||||
"线路数组": "</a><h3&&/h3>",
|
"线路数组": "</a><h3&&/h3>",
|
||||||
"线路标题": "title\">&&<",
|
"线路标题": "title\">&&<",
|
||||||
"播放数组": "<ul class=\"myui-content__list scrollbar&&</ul>",
|
"播放数组": "<ul class=\"myui-content__list scrollbar&&</ul>",
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"主页url":"http://dyxz.tv",
|
||||||
|
"数组":"<div class=\"stui-vodlist__box\">&&</div>",
|
||||||
|
"图片":"data-original=\"&&\"",
|
||||||
|
"标题":"title=\"&&\"",
|
||||||
|
"链接":"href=\"&&\"",
|
||||||
|
//"嗅探词":".m3u8#m3u8#mp4",
|
||||||
|
"副标题":"<span class=\"pic-text text-right\">&&</span>",
|
||||||
|
"搜索url":"http://dyxz.tv/search.php;post;searchword={wd}",
|
||||||
|
"搜索模式":"1",
|
||||||
|
"搜索数组":"<a class=\"v-thumb stui-vodlist__thumb&&</a>",
|
||||||
|
"搜索图片":"data-original=\"&&\"",
|
||||||
|
"搜索标题":"title=\"&&\"",
|
||||||
|
"搜索链接":"href=\"&&\"",
|
||||||
|
"搜索副标题":"<span class=\"pic-text text-right\">&&</span>",
|
||||||
|
"搜索后缀":"/view/",
|
||||||
|
"线路数组":"<a data-toggle=\"tab\"&&/a>",
|
||||||
|
"线路标题":">&&<",
|
||||||
|
"播放数组":"<ul class=\"stui-content__playlist clearfix&&</ul>",
|
||||||
|
"影片年代":"年份:&&</p>",
|
||||||
|
"影片地区":"地区:&&<span",
|
||||||
|
"影片类型":"类型:&&</a>",
|
||||||
|
"导演":"导演:&&</p>",
|
||||||
|
"主演":"主演:&&</p>",
|
||||||
|
"简介":"更新:&&</p>",
|
||||||
|
"播放列表":"<a&&/a>",
|
||||||
|
"播放标题":">&&<",
|
||||||
|
"播放链接":"href=\"&&\"",
|
||||||
|
"免嗅":"0",
|
||||||
|
"分类url":"http://dyxz.tv/list/{cateId}_{catePg}.html",
|
||||||
|
"分类":"电影$1#电视剧$2#动漫$3#综艺$4"}
|
||||||
+126
-191
@@ -936,139 +936,44 @@ CHC家庭影院,http://[2409:8c02:21c:60::2b]/live.rxip.sc96655.com/live/jbtygqC
|
|||||||
贵州卫视,https://live.v1.mk/api/bestv.php?id=gzwshd8m/8000000
|
贵州卫视,https://live.v1.mk/api/bestv.php?id=gzwshd8m/8000000
|
||||||
|
|
||||||
央视,#genre#
|
央视,#genre#
|
||||||
CCTV1,http://hlsout-test.ysp.cctv.cn/ysp/2000210103.m3u8
|
CCTV1,http://hms304nc1972679586.live.aikan.miguvideo.com/wh7f454c46tw3831204341_1349411946/wd_r2/cctv/cctv1hd/2500/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115080246&ContentId=265183188&timezone=UTC&mtv_session=01b97ad3f1d61532d8f0d40578ee3f47&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=ac6f75650a73ab06efc36233598f26b8
|
||||||
CCTV2,http://hlsout-test.ysp.cctv.cn/ysp/2000203603.m3u8
|
CCTV2,http://hms104nc1972679566.live.aikan.miguvideo.com/wh7f454c46tw3468827325_440542616/wd_r2/cctv/cctv2hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208125733&ContentId=265667329&timezone=UTC&mtv_session=f739dcaed0e05c0e9e14fa47d0810c20&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=c4d54a337744e33e655349fe312a5eed
|
||||||
CCTV3,http://hlsout-test.ysp.cctv.cn/ysp/2000203803.m3u8
|
CCTV3,http://hms44nc1972679560.live.aikan.miguvideo.com/wh7f454c46tw3692367231_1716696590/wd_r2/ocn/cctv3hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208130116&ContentId=265667206&timezone=UTC&mtv_session=09b9584da7231a3b6c6b2c20aa3572d6&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=f9cf165e747cb07e1e8dd89226e53387
|
||||||
CCTV4,http://hlsout-test.ysp.cctv.cn/ysp/2000204803.m3u8
|
CCTV4,http://hms284nc1972679584.live.aikan.miguvideo.com/wh7f454c46tw3805527088_-1274597418/wd_r2/cctv/cctv4hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208130309&ContentId=265667639&timezone=UTC&mtv_session=2dd2ab7bfb6b74ffa7cc9e8d7b6e5ed2&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=d34ff8f1c5a38b07fa8b2d3d15e755a2
|
||||||
CCTV5,http://hlsout-test.ysp.cctv.cn/ysp/2000205103.m3u8
|
CCTV5,http://hms304nc1972679586.live.aikan.miguvideo.com/wh7f454c46tw3939139141_-877857276/wd_r2/cctv/cctv5hdnew/2500/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208130523&ContentId=265667565&timezone=UTC&mtv_session=e95834282573288096f63eab8a028447&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=12a070f46793605fdbff0e1132d2d0d8
|
||||||
CCTV5+,http://hlsout-test.ysp.cctv.cn/ysp/2000204503.m3u8
|
CCTV5+,http://hms184nc1972679574.live.aikan.miguvideo.com/wh7f454c46tw4035956330_-1197773273/wd_r2/cctv/cctv5plusnew/2500/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208130700&ContentId=265106763&timezone=UTC&mtv_session=b1d7170ccd660150baa2e9435d787064&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=dfe2cfbc447ddc224a226f33be3d0f39
|
||||||
CCTV6,http://hlsout-test.ysp.cctv.cn/ysp/2000203303.m3u8
|
CCTV6,http://hms424nc1972679598.live.aikan.miguvideo.com/wh7f454c46tw2025729208_-189538202/wd_r2/ocn/cctv6hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115084415&ContentId=265667482&timezone=UTC&mtv_session=0ac4193cdf07336c58fe3cdb4aac34a4&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=158f70fd4d75270c1810f0c735e78e18
|
||||||
CCTV7,http://hlsout-test.ysp.cctv.cn/ysp/2000510003.m3u8
|
CCTV7,http://hms284nc1972679584.live.aikan.miguvideo.com/wh7f454c46tw4211155753_-1040212167/migu/kailu/20200324/cctv7hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208130955&ContentId=265667268&timezone=UTC&mtv_session=f4a3cbeaf77fa614aed3843cb206bc06&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=38b55b6566aab32075f6169e2d955603
|
||||||
CCTV8,http://hlsout-test.ysp.cctv.cn/ysp/2000203903.m3u8
|
CCTV8,http://hms84nc1972679564.live.aikan.miguvideo.com/wh7f454c46tw2243817462_1836799824/wd_r2/ocn/cctv8hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115084753&ContentId=265667466&timezone=UTC&mtv_session=077374df50cdebf0ab55b2ec30d2f01a&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=8b9b358180e9e344fe45e67912ce6985
|
||||||
CCTV9,http://hlsout-test.ysp.cctv.cn/ysp/2000499403.m3u8
|
CCTV9,http://hms444nc1972679601.live.aikan.miguvideo.com/wh7f454c46tw4260577431_-1084507862/migu/kailu/20200324/cctv9hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208131044&ContentId=265667202&timezone=UTC&mtv_session=9444a4df4cb7524a1ec85c4d44200abc&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=efdbccd2a72ff1ba2eabbf08f475f7c6
|
||||||
CCTV10,http://hlsout-test.ysp.cctv.cn/ysp/2000203503.m3u8
|
CCTV10,http://hms424nc1972679599.live.aikan.miguvideo.com/wh7f454c46tw2383135402_1265174830/wd_r2/ocn/cctv10hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115085013&ContentId=265667631&timezone=UTC&mtv_session=451a79654bec6f8926b5017302146772&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=e74690616e29be77ff1a1992b303b861
|
||||||
CCTV11,http://hlsout-test.ysp.cctv.cn/ysp/2000204103.m3u8
|
|
||||||
CCTV12,http://hlsout-test.ysp.cctv.cn/ysp/2000202603.m3u8
|
|
||||||
CCTV13,http://hlsout-test.ysp.cctv.cn/ysp/2000204603.m3u8
|
|
||||||
CCTV14,http://hlsout-test.ysp.cctv.cn/ysp/2000204403.m3u8
|
|
||||||
CCTV15,http://hlsout-test.ysp.cctv.cn/ysp/2000205003.m3u8
|
|
||||||
CCTV16,http://hlsout-test.ysp.cctv.cn/ysp/2012375003.m3u8
|
|
||||||
CCTV16,http://hlsout-test.ysp.cctv.cn/ysp/2012492303.m3u8
|
|
||||||
CCTV17,http://hlsout-test.ysp.cctv.cn/ysp/2000204203.m3u8
|
|
||||||
CCTV1,http://125.210.152.19:9120/live/hzgq-cctv1gq-h264.m3u8
|
|
||||||
CCTV2,http://125.210.152.19:9120/live/hzgq-cctv2gq-h264.m3u8
|
|
||||||
CCTV3,http://125.210.152.19:9120/live/hzgq-cctv3gq-h264.m3u8
|
|
||||||
CCTV4,http://125.210.152.19:9120/live/hzgq-cctv4gq-h264.m3u8
|
|
||||||
CCTV5,http://125.210.152.19:9120/live/hzgq-cctv5gq-h264.m3u8
|
|
||||||
CCTV5+,http://125.210.152.19:9120/live/hzgq-cctvzhgq-h264.m3u8
|
|
||||||
CCTV6,http://125.210.152.19:9120/live/hzgq-cctv6gq-h264.m3u8
|
|
||||||
CCTV7,http://125.210.152.19:9120/live/hzgq-cctv7gq-h264.m3u8
|
|
||||||
CCTV8,http://125.210.152.19:9120/live/hzgq-cctv8gq-h264.m3u8
|
|
||||||
CCTV9,http://125.210.152.19:9120/live/hzgq-cctvjlgq-h264.m3u8
|
|
||||||
CCTV10,http://125.210.152.19:9120/live/hzgq-cctv10gq-h264.m3u8
|
|
||||||
CCTV11,http://125.210.152.19:9120/live/hzgq-cctv11gq-h264.m3u8
|
|
||||||
CCTV12,http://125.210.152.19:9120/live/hzgq-cctv12gq-h264.m3u8
|
|
||||||
CCTV13,http://125.210.152.19:9120/live/hzgq-cctvnewsgq-h264.m3u8
|
|
||||||
CCTV14,http://125.210.152.19:9120/live/hzgq-cctvsegq-h264.m3u8
|
|
||||||
CCTV15,http://125.210.152.19:9120/live/hzgq-cctvmusicgq-h264.m3u8
|
|
||||||
CCTV16,http://125.210.152.19:9120/live/hzgq-cctv16gq-h264.m3u8
|
|
||||||
CCTV17,http://125.210.152.19:9120/live/hzgq-cctv17gq-h264.m3u8
|
|
||||||
CCTV1,http://1.183.141.194:8000/hls/1/index.m3u8
|
|
||||||
CCTV2,http://1.183.141.194:8000/hls/2/index.m3u8
|
|
||||||
CCTV3,http://1.183.141.194:8000/hls/3/index.m3u8
|
|
||||||
CCTV4,http://1.183.141.194:8000/hls/4/index.m3u8
|
|
||||||
CCTV5,http://1.183.141.194:8000/hls/5/index.m3u8
|
|
||||||
CCTV6,http://1.183.141.194:8000/hls/6/index.m3u8
|
|
||||||
CCTV7,http://1.183.141.194:8000/hls/7/index.m3u8
|
|
||||||
CCTV8,http://1.183.141.194:8000/hls/8/index.m3u8
|
|
||||||
CCTV9,http://1.183.141.194:8000/hls/9/index.m3u8
|
|
||||||
CCTV10,http://1.183.141.194:8000/hls/10/index.m3u8
|
|
||||||
CCTV11,http://1.183.141.194:8000/hls/11/index.m3u8
|
|
||||||
CCTV12,http://1.183.141.194:8000/hls/12/index.m3u8
|
|
||||||
CCTV13,http://1.183.141.194:8000/hls/13/index.m3u8
|
|
||||||
CCTV14,http://1.183.141.194:8000/hls/14/index.m3u8
|
|
||||||
CCTV15,http://1.183.141.194:8000/hls/15/index.m3u8
|
|
||||||
CCTV1,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221225804/1.m3u8
|
|
||||||
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226195/1.m3u8 CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226224/1.m3u8 CCTV4,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226191/1.m3u8
|
|
||||||
CCTV5,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226395/1.m3u8 CCTV5,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226395/1.m3u8 CCTV5+,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221225761/1.m3u8 CCTV5+,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221225761/1.m3u8 CCTV6,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226393/1.m3u8 CCTV7,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226192/1.m3u8 CCTV8,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226012/1.m3u8 CCTV8,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226391/1.m3u8 CCTV8,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226012/1.m3u8 CCTV8,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226391/1.m3u8 CCTV9,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226197/1.m3u8 CCTV9,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226197/1.m3u8 CCTV10,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226189/1.m3u8 CCTV13,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226233/1.m3u8 CCTV13,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226233/1.m3u8 CCTV14,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226193/1.m3u8 CCTV15,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221225785/1.m3u8 CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226921/1.m3u8
|
|
||||||
CCTV16,https://live.goodiptv.club/api/bestv.php?id=cctv16hd4k/15000000
|
|
||||||
CCTV4K,https://live.goodiptv.club/api/bestv.php?id=cctv4k/15000000
|
|
||||||
欢笑剧场,https://live.goodiptv.club/api/bestv.php?id=hxjc4k/15000000
|
|
||||||
CCTV1,https://live.goodiptv.club/api/bestv.php?id=cctv1hd8m/8000000
|
|
||||||
CCTV2,https://live.goodiptv.club/api/bestv.php?id=cctv2hd8m/8000000
|
|
||||||
CCTV3,https://live.goodiptv.club/api/bestv.php?id=cctv38m/8000000
|
|
||||||
CCTV4,https://live.goodiptv.club/api/bestv.php?id=cctv4hd8m/8000000
|
|
||||||
CCTV5,https://live.goodiptv.club/api/bestv.php?id=cctv58m/8000000
|
|
||||||
CCTV5+,https://live.goodiptv.club/api/bestv.php?id=cctv5phd8m/8000000
|
|
||||||
CCTV6,https://live.goodiptv.club/api/bestv.php?id=cctv6hd8m/8000000
|
|
||||||
CCTV7,https://live.goodiptv.club/api/bestv.php?id=cctv7hd8m/8000000
|
|
||||||
CCTV8,https://live.goodiptv.club/api/bestv.php?id=cctv8hd8m/8000000
|
|
||||||
CCTV9,https://live.goodiptv.club/api/bestv.php?id=cctv9hd8m/8000000
|
|
||||||
CCTV10,https://live.goodiptv.club/api/bestv.php?id=cctv10hd8m/8000000
|
|
||||||
CCTV11,https://live.goodiptv.club/api/bestv.php?id=cctv11hd8m/8000000
|
CCTV11,https://live.goodiptv.club/api/bestv.php?id=cctv11hd8m/8000000
|
||||||
CCTV12,https://live.goodiptv.club/api/bestv.php?id=cctv12hd8m/8000000
|
CCTV11,http://59.47.226.94:8880/sql/2602/hls.m3u8
|
||||||
CCTV13,https://live.goodiptv.club/api/bestv.php?id=cctv13xwhd8m/8000000
|
CCTV12,http://hms204nc1972679577.live.aikan.miguvideo.com/wh7f454c46tw1174495643_-1245391177/migu/kailu/20200324/cctv12hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020243&ContentId=265667607&timezone=UTC&mtv_session=7581c6271c0379b8ca8b268ff7804765&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=3906a8574a42ff13aba3e255be4cd8e3
|
||||||
CCTV14,https://live.goodiptv.club/api/bestv.php?id=cctvsehd8m/8000000
|
CCTV13,http://hms184nc1972679575.live.aikan.miguvideo.com/wh7f454c46tw946205927_-649996709/envivo_x/2018/SD/cctv13/2000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208132705&ContentId=265667474&timezone=UTC&mtv_session=36bf599c0c4bc785fd46aaf0ba40ffe7&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=91a8a1c4652526079a5b0e294d5bc18d
|
||||||
CCTV15,https://live.goodiptv.club/api/bestv.php?id=cctv15hd8m/8000000
|
CCTV14,http://hms344nc1972679590.live.aikan.miguvideo.com/wh7f454c46tw1297666621_-728046298/wd_r2/ocn/cctv14hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020446&ContentId=265667325&timezone=UTC&mtv_session=ad6cfd6b6dabe31801ca54a4c87f1bac&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=2757ab80a8dee98edfcfd1ee767a17b8
|
||||||
CCTV16,https://live.goodiptv.club/api/bestv.php?id=cctv16hd8m/8000000
|
CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390_1468621622/migu/kailu/20200324/cctv15hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020617&ContentId=265667535&timezone=UTC&mtv_session=e1254803553b7cace3a119612bf266d8&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=7ba98a3a39d853487109bebe5ed31c43
|
||||||
CCTV17,https://live.goodiptv.club/api/bestv.php?id=cctv17hd8m/8000000
|
CCTV16,https://live.goodiptv.club/api/bestv.php?id=cctv16hd8m/8000000 CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
||||||
欢笑剧场,https://live.goodiptv.club/api/bestv.php?id=hxjc8m/8000000
|
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
||||||
劲爆体育,https://live.goodiptv.club/api/bestv.php?id=jbtyhd8m/8000000
|
CCTV1,http://cyz32.livehbindex.hbcatv.cn/live/50000020935c4d59965a1cbf159c9be9.m3u8?bitrate=2300&pt=5
|
||||||
快乐垂钓,https://live.goodiptv.club/api/bestv.php?id=klcd8m/8000000
|
CCTV2,http://cyz32.livehbindex.hbcatv.cn/live/50000020d7ae404dbd55b5d0ba6fe735.m3u8?bitrate=2300&pt=5
|
||||||
金鹰纪实,https://live.goodiptv.club/api/bestv.php?id=jyjs8m/8000000
|
CCTV3,http://cyz32.livehbindex.hbcatv.cn/live/50000020425540c3b4e7c41ca3eabb76.m3u8?bitrate=2300&pt=5
|
||||||
戏曲精选,https://live.goodiptv.club/api/bestv.php?id=xqjx8m/8000000
|
CCTV4,http://cyz32.livehbindex.hbcatv.cn/live/5b0dff5235e94ba8bff8731427145289.m3u8?bitrate=2300&pt=5
|
||||||
东方影视,https://live.goodiptv.club/api/bestv.php?id=dfyshd8m/8000000
|
CCTV5,http://cyz32.livehbindex.hbcatv.cn/live/500000206cd748d58f41b13aa2754139.m3u8?bitrate=2300&pt=5
|
||||||
五星体育,https://live.goodiptv.club/api/bestv.php?id=wxtyhd8m/8000000
|
CCTV5+,http://cyz32.livehbindex.hbcatv.cn/live/50000020484943edba96ac9f93f858ce.m3u8?bitrate=2300&pt=5
|
||||||
七彩戏剧,https://live.goodiptv.club/api/bestv.php?id=qcxjhd8m/8000000
|
CCTV6,http://cyz32.livehbindex.hbcatv.cn/live/50000020da6d4c40a2ca3b1bdc786016.m3u8?bitrate=2300&pt=5
|
||||||
全纪实,https://live.goodiptv.club/api/bestv.php?id=qjshd8m/8000000
|
CCTV7,http://cyz32.livehbindex.hbcatv.cn/live/500000204daa45af99b5800a528fac21.m3u8?bitrate=2300&pt=5
|
||||||
生活时尚,https://live.goodiptv.club/api/bestv.php?id=shss8m/8000000
|
CCTV8,http://cyz32.livehbindex.hbcatv.cn/live/500000202d8c4f56ba03e623caa09f1b.m3u8?bitrate=2300&pt=5
|
||||||
新视觉,https://live.goodiptv.club/api/bestv.php?id=xsjhd8m/8000000
|
CCTV9,http://cyz32.livehbindex.hbcatv.cn/live/50000020edf54f6c92778d0ccdfcca30.m3u8?bitrate=2300&pt=5
|
||||||
游戏风云,https://live.goodiptv.club/api/bestv.php?id=yxfy8m/8000000
|
CCTV10,http://cyz32.livehbindex.hbcatv.cn/live/a66832f3323643189c3a0e91f9fad3e3.m3u8?bitrate=2300&pt=5
|
||||||
热门综艺,https://live.goodiptv.club/api/bestv.php?id=rmzy8m/8000000
|
CCTV11,http://cyz32.livehbindex.hbcatv.cn/live/5000002086444f0886ad7032ad8f756b.m3u8?bitrate=2300&pt=5
|
||||||
超级体育,https://live.goodiptv.club/api/bestv.php?id=qcsj8m/8000000
|
CCTV12,http://cyz32.livehbindex.hbcatv.cn/live/fbe7688bc539461da71ff649e4ba1d75.m3u8?bitrate=2300&pt=5
|
||||||
健康养生,https://live.goodiptv.club/api/bestv.php?id=jkys8m/8000000
|
CCTV13,http://cyz32.livehbindex.hbcatv.cn/live/5000002081f5478882f00a0f9be4b01f.m3u8?bitrate=2300&pt=5
|
||||||
百变课堂,https://live.goodiptv.club/api/bestv.php?id=bbkt8m/8000000
|
CCTV14,http://cyz32.livehbindex.hbcatv.cn/live/8a22035194884b1eb5515aac434c313c.m3u8?bitrate=2300&pt=5
|
||||||
看天下精选,https://live.goodiptv.club/api/bestv.php?id=ktxjx8m/8000000
|
CCTV15,http://cyz32.livehbindex.hbcatv.cn/live/50000020f44f4f4b8aa33925dba216df.m3u8?bitrate=2300&pt=5
|
||||||
华语影院,https://live.goodiptv.club/api/bestv.php?id=hyyy8m/8000000
|
CCTV17,http://cyz32.livehbindex.hbcatv.cn/live/500000208b8d41c4b436ef32428c229d.m3u8?bitrate=2300&pt=5
|
||||||
电竞天堂,https://live.goodiptv.club/api/bestv.php?id=djtt8m/8000000
|
|
||||||
青春动漫,https://live.goodiptv.club/api/bestv.php?id=qcdm8m/8000000
|
|
||||||
宝宝动画,https://live.goodiptv.club/api/bestv.php?id=bbdh8m/8000000
|
|
||||||
星光影院,https://live.goodiptv.club/api/bestv.php?id=xgyy8m/8000000
|
|
||||||
谍战剧场,https://live.goodiptv.club/api/bestv.php?id=dzjc8m/8000000
|
|
||||||
全球大片,https://live.goodiptv.club/api/bestv.php?id=qqdp8m/8000000
|
|
||||||
热门剧场,https://live.goodiptv.club/api/bestv.php?id=rmjc8m/8000000
|
|
||||||
卡酷少儿,https://live.goodiptv.club/api/bestv.php?id=kkse8m/8000000
|
|
||||||
纪实科教,https://live.goodiptv.club/api/bestv.php?id=dajs8m/8000000
|
|
||||||
茶频道,https://live.goodiptv.club/api/bestv.php?id=cpdhdavs8m/8000000
|
|
||||||
足球高清,https://live.goodiptv.club/api/bestv.php?id=zqpd8m/8000000
|
|
||||||
炫动卡通,https://live.goodiptv.club/api/bestv.php?id=hhxd8m/8000000
|
|
||||||
东方财经,https://live.goodiptv.club/api/bestv.php?id=dfcjhd8m/8000000
|
|
||||||
都市剧场,https://live.goodiptv.club/api/bestv.php?id=dsjc8m/8000000
|
|
||||||
动漫秀场,https://live.goodiptv.club/api/bestv.php?id=dmxc8m/8000000
|
|
||||||
法治天地,https://live.goodiptv.club/api/bestv.php?id=fztd8m/8000000
|
|
||||||
金色学堂,https://live.goodiptv.club/api/bestv.php?id=jingsepd8m/8000000
|
|
||||||
魅力足球,https://live.goodiptv.club/api/bestv.php?id=mlyyhd8m/8000000
|
|
||||||
|
|
||||||
卫视,#genre#
|
卫视,#genre#
|
||||||
浙江卫视,http://125.210.152.19:9120/live/hzgq-zjwsgq-h264.m3u8
|
|
||||||
湖南卫视,http://125.210.152.19:9120/live/hzgq-hnwsgq-h264.m3u8
|
|
||||||
江苏卫视,http://125.210.152.19:9120/live/hzgq-jswsgq-h264.m3u8
|
|
||||||
北京卫视,http://125.210.152.19:9120/live/hzgq-bjgqws-h264.m3u8
|
|
||||||
东方卫视,http://125.210.152.19:9120/live/hzgq-dftvgq-h264.m3u8
|
|
||||||
广东卫视,http://125.210.152.19:9120/live/hzgq-gdwsgq-h264.m3u8
|
|
||||||
河南卫视,http://125.210.152.19:9120/live/hzgq-henanwsgq-h264.m3u8
|
|
||||||
河北卫视,http://125.210.152.19:9120/live/hzgq-hbwsgq1-h264.m3u8
|
|
||||||
安徽卫视,http://125.210.152.19:9120/live/hzgq-ahwsgq-h264.m3u8
|
|
||||||
湖北卫视,http://125.210.152.19:9120/live/hzgq-hbwsgq-h264.m3u8
|
|
||||||
江西卫视,http://125.210.152.19:9120/live/hzgq-jxwsgq-h264.m3u8
|
|
||||||
山东卫视,http://125.210.152.19:9120/live/hzgq-sdwsgq-h264.m3u8
|
|
||||||
深圳卫视,http://125.210.152.19:9120/live/hzgq-szwsgq-h264.m3u8
|
|
||||||
天津卫视,http://125.210.152.19:9120/live/hzgq-tjwsgq-h264.m3u8
|
|
||||||
云南卫视,http://125.210.152.19:9120/live/hzgq-ynwsgq-h264.m3u8
|
|
||||||
重庆卫视,http://125.210.152.19:9120/live/hzgq-cqwsgq-h264.m3u8
|
|
||||||
吉林卫视,http://125.210.152.19:9120/live/hzgq-jlwsgq-h264.m3u8
|
|
||||||
黑龙江卫视,http://125.210.152.19:9120/live/hzgq-hljwsgq-h264.m3u8
|
|
||||||
辽宁卫视,http://125.210.152.19:9120/live/hzgq-lnwsgq-h264.m3u8
|
|
||||||
北京卫视,http://222.71.90.218:8888/newlive/live/hls/18/live.m3u8
|
北京卫视,http://222.71.90.218:8888/newlive/live/hls/18/live.m3u8
|
||||||
东方卫视,http://222.71.90.218:8888/newlive/live/hls/19/live.m3u8
|
东方卫视,http://222.71.90.218:8888/newlive/live/hls/19/live.m3u8
|
||||||
浙江卫视,http://222.71.90.218:8888/newlive/live/hls/20/live.m3u8
|
浙江卫视,http://222.71.90.218:8888/newlive/live/hls/20/live.m3u8
|
||||||
@@ -1130,67 +1035,6 @@ CCTV17,https://live.goodiptv.club/api/bestv.php?id=cctv17hd8m/8000000
|
|||||||
延边卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226220/index.m3u8
|
延边卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226220/index.m3u8
|
||||||
兵团卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226214/index.m3u8
|
兵团卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226214/index.m3u8
|
||||||
农林卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226229/index.m3u8
|
农林卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226229/index.m3u8
|
||||||
江苏卫视,https://live.goodiptv.club/api/bestv.php?id=jswshd8m/8000000
|
|
||||||
广西卫视,https://live.goodiptv.club/api/bestv.php?id=gxwshd8m/8000000
|
|
||||||
四川卫视,https://live.goodiptv.club/api/bestv.php?id=scwshd/8000000
|
|
||||||
湖南卫视,https://live.goodiptv.club/api/bestv.php?id=hunanwshd8m/8000000
|
|
||||||
浙江卫视,https://live.goodiptv.club/api/bestv.php?id=zjwshd8m/8000000
|
|
||||||
东方卫视,https://live.goodiptv.club/api/bestv.php?id=dfwshd8m/8000000
|
|
||||||
北京卫视,https://live.goodiptv.club/api/bestv.php?id=bjwshd8m/8000000
|
|
||||||
天津卫视,https://live.goodiptv.club/api/bestv.php?id=tjwshd8m/8000000
|
|
||||||
辽宁卫视,https://live.goodiptv.club/api/bestv.php?id=lnwshd8m/8000000
|
|
||||||
安徽卫视,https://live.goodiptv.club/api/bestv.php?id=ahwshd8m/8000000
|
|
||||||
黑龙江卫视,https://live.goodiptv.club/api/bestv.php?id=hljwshd8m/8000000
|
|
||||||
广东卫视,https://live.goodiptv.club/api/bestv.php?id=gdwshd8m/8000000
|
|
||||||
深圳卫视,https://live.goodiptv.club/api/bestv.php?id=szwshd8m/8000000
|
|
||||||
湖北卫视,https://live.goodiptv.club/api/bestv.php?id=hubeiws8m/8000000
|
|
||||||
吉林卫视,https://live.goodiptv.club/api/bestv.php?id=jlwshd8m/8000000
|
|
||||||
山东卫视,https://live.goodiptv.club/api/bestv.php?id=sdws8m/8000000
|
|
||||||
江西卫视,https://live.goodiptv.club/api/bestv.php?id=jxws8m/8000000
|
|
||||||
河南卫视,https://live.goodiptv.club/api/bestv.php?id=hnwshd8m/8000000
|
|
||||||
河北卫视,https://live.goodiptv.club/api/bestv.php?id=hbwshd8m/8000000
|
|
||||||
甘肃卫视,https://live.goodiptv.club/api/bestv.php?id=gswshd8m/8000000
|
|
||||||
重庆卫视,https://live.goodiptv.club/api/bestv.php?id=cqws8m/8000000
|
|
||||||
东南卫视,https://live.goodiptv.club/api/bestv.php?id=dnwshd8m/8000000
|
|
||||||
云南卫视,https://live.goodiptv.club/api/bestv.php?id=ynwshd8m/8000000
|
|
||||||
贵州卫视,https://live.goodiptv.club/api/bestv.php?id=gzwshd8m/8000000
|
|
||||||
海南卫视,https://live.goodiptv.club/api/bestv.php?id=hainanwshd8m/8000000
|
|
||||||
浙江卫视,https://live.goodiptv.club/api/ghyx.php?id=ZheJiangHD_6000
|
|
||||||
北京卫视,https://live.goodiptv.club/api/ghyx.php?id=BTV1HD_6000
|
|
||||||
广西卫视,https://live.goodiptv.club/api/ghyx.php?id=GuangXiHD_6000
|
|
||||||
辽宁卫视,https://live.goodiptv.club/api/ghyx.php?id=LiaoNingHD_6000
|
|
||||||
安徽卫视,https://live.goodiptv.club/api/ghyx.php?id=AnHuiHD_6000
|
|
||||||
江苏卫视,https://live.goodiptv.club/api/ghyx.php?id=JiangSuHD_6000
|
|
||||||
东方卫视,https://live.goodiptv.club/api/ghyx.php?id=DongFangHD_6000
|
|
||||||
东南卫视,https://live.goodiptv.club/api/ghyx.php?id=FuJianHD_6000
|
|
||||||
湖南卫视,https://live.goodiptv.club/api/ghyx.php?id=HuNanHD_6000
|
|
||||||
湖北卫视,https://live.goodiptv.club/api/ghyx.php?id=HuBeiHD_6000
|
|
||||||
广东卫视,https://live.goodiptv.club/api/ghyx.php?id=GuangDongHD_6000
|
|
||||||
广西卫视,https://live.goodiptv.club/api/ghyx.php?id=GuangXiHD_6000
|
|
||||||
深圳卫视,https://live.goodiptv.club/api/ghyx.php?id=ShenZhenHD_6000
|
|
||||||
四川卫视,https://live.goodiptv.club/api/ghyx.php?id=SiChuanHD_6000
|
|
||||||
山东卫视,https://live.goodiptv.club/api/ghyx.php?id=ShanDongHD_6000
|
|
||||||
河南卫视,https://live.goodiptv.club/api/ghyx.php?id=HeNanHD_6000
|
|
||||||
河北卫视,https://live.goodiptv.club/api/ghyx.php?id=HeBeiHD_6000
|
|
||||||
江西卫视,https://live.goodiptv.club/api/ghyx.php?id=JiangXiHD_6000
|
|
||||||
天津卫视,https://live.goodiptv.club/api/ghyx.php?id=TianJinHD_6000
|
|
||||||
重庆卫视,https://live.goodiptv.club/api/ghyx.php?id=ChongQingHD_6000
|
|
||||||
黑龙江卫视,https://live.goodiptv.club/api/ghyx.php?id=HeiLongJiangHD_6000
|
|
||||||
吉林卫视,https://live.goodiptv.club/api/ghyx.php?id=JiLinWeiShiHD_6000
|
|
||||||
海南卫视,https://live.goodiptv.club/api/ghyx.php?id=LvYouWeiShiHD_6000
|
|
||||||
三沙卫视,https://live.goodiptv.club/api/ghyx.php?id=SanShaHD2_6000
|
|
||||||
陕西卫视,https://live.goodiptv.club/api/ghyx.php?id=ShanXiHD2_6000
|
|
||||||
云南卫视,https://live.goodiptv.club/api/ghyx.php?id=YunNanHD2_6000
|
|
||||||
甘肃卫视,https://live.goodiptv.club/api/ghyx.php?id=GanSuHD2_6000
|
|
||||||
内蒙古卫视,https://live.goodiptv.club/api/ghyx.php?id=NeiMengGuHD_2000
|
|
||||||
山西卫视,https://live.goodiptv.club/api/ghyx.php?id=ShanXiHD_2000
|
|
||||||
兵团卫视,https://live.goodiptv.club/api/ghyx.php?id=BTTVHD_2000
|
|
||||||
贵州卫视,https://live.goodiptv.club/api/ghyx.php?id=GuiZhouHD_2000
|
|
||||||
青海卫视,https://live.goodiptv.club/api/ghyx.php?id=QingHaiHD_2000
|
|
||||||
西藏卫视,https://live.goodiptv.club/api/ghyx.php?id=XiZangHD_2000
|
|
||||||
新疆卫视,https://live.goodiptv.club/api/ghyx.php?id=XinJiangHD_2000
|
|
||||||
厦门卫视,https://live.goodiptv.club/api/ghyx.php?id=XiaMenHD_2000
|
|
||||||
宁夏卫视,https://live.goodiptv.club/api/ghyx.php?id=NingXiaHD_2000
|
|
||||||
|
|
||||||
4K,#genre#
|
4K,#genre#
|
||||||
CCTV4K,http://liveop.cctv.cn/hls/4KHD/playlist.m3u8
|
CCTV4K,http://liveop.cctv.cn/hls/4KHD/playlist.m3u8
|
||||||
@@ -1299,6 +1143,97 @@ CHC家庭影院,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226462/in
|
|||||||
埋堆堆62,http://43.128.40.42:198/虎牙直播/huya.php?id=23863818
|
埋堆堆62,http://43.128.40.42:198/虎牙直播/huya.php?id=23863818
|
||||||
|
|
||||||
虎牙,#genre#
|
虎牙,#genre#
|
||||||
|
虎牙-周星星,http://43.138.170.29:35455/huya/24470631
|
||||||
|
虎牙-林正英,http://43.138.170.29:35455/huya/11342421
|
||||||
|
虎牙-沈腾,http://43.138.170.29:35455/huya/11601968
|
||||||
|
虎牙-猫和老鼠,http://43.138.170.29:35455/huya/11352879
|
||||||
|
虎牙-成龙,http://43.138.170.29:35455/huya/11342386
|
||||||
|
虎牙-李连杰,http://43.138.170.29:35455/huya/11342390
|
||||||
|
虎牙-刘德华,http://43.138.170.29:35455/huya/11342424
|
||||||
|
虎牙-王晶,http://43.138.170.29:35455/huya/11602058
|
||||||
|
虎牙-中华小当家,http://43.138.170.29:35455/huya/11342413
|
||||||
|
虎牙-杰森·斯坦森,http://43.138.170.29:35455/huya/21059588
|
||||||
|
虎牙-喜剧专场,http://43.138.170.29:35455/huya/11602044
|
||||||
|
虎牙-甄子丹,http://43.138.170.29:35455/huya/11352935
|
||||||
|
虎牙-巨石强森,http://43.138.170.29:35455/huya/21059581
|
||||||
|
虎牙-洪金宝,http://43.138.170.29:35455/huya/11279251
|
||||||
|
虎牙-詹姆斯邦德,http://43.138.170.29:35455/huya/21059585
|
||||||
|
虎牙-徐克,http://43.138.170.29:35455/huya/11352909
|
||||||
|
虎牙-周润发,http://43.138.170.29:35455/huya/11342387
|
||||||
|
虎牙-徐峥,http://43.138.170.29:35455/huya/11602043
|
||||||
|
虎牙-许氏三杰,http://43.138.170.29:35455/huya/11602033
|
||||||
|
虎牙-黄渤,http://43.138.170.29:35455/huya/11352876
|
||||||
|
虎牙-张卫健,http://43.138.170.29:35455/huya/11342423
|
||||||
|
虎牙-冯小刚,http://43.138.170.29:35455/huya/11352906
|
||||||
|
虎牙-百鸟朝凤,http://43.138.170.29:35455/huya/15894162
|
||||||
|
虎牙-陈翔六点半,http://43.138.170.29:35455/huya/11274154
|
||||||
|
虎牙-电锯惊魂系列,http://43.138.170.29:35455/huya/11352903
|
||||||
|
虎牙-港台电影,http://43.138.170.29:35455/huya/880261
|
||||||
|
虎牙-高分电影,http://43.138.170.29:35455/huya/16615910
|
||||||
|
虎牙-搞笑僵尸片,http://43.138.170.29:35455/huya/11352963
|
||||||
|
虎牙-国产青春,http://43.138.170.29:35455/huya/11602075
|
||||||
|
虎牙-好莱坞,http://43.138.170.29:35455/huya/21059587
|
||||||
|
虎牙-黑帮斗争,http://43.138.170.29:35455/huya/11342419
|
||||||
|
虎牙-红海行动,http://43.138.170.29:35455/huya/11601986
|
||||||
|
虎牙-极限挑战],http://43.138.170.29:35455/huya/11352914
|
||||||
|
虎牙-金庸的武侠世界,http://43.138.170.29:35455/huya/11342435
|
||||||
|
虎牙-金庸电影,http://43.138.170.29:35455/huya/11352897
|
||||||
|
虎牙-经典高智商,http://43.138.170.29:35455/huya/11352962
|
||||||
|
虎牙-经典好片,http://43.138.170.29:35455/huya/11342427
|
||||||
|
虎牙-经典喜剧片,http://43.138.170.29:35455/huya/11352894
|
||||||
|
虎牙-精彩不断,http://43.138.170.29:35455/huya/24396428
|
||||||
|
虎牙-精忠岳飞南征北战,http://43.138.170.29:35455/huya/11336578
|
||||||
|
虎牙-警匪,http://43.138.170.29:35455/huya/11352886
|
||||||
|
虎牙-看救援电影,http://43.138.170.29:35455/huya/21059586
|
||||||
|
虎牙-科幻电影,http://43.138.170.29:35455/huya/11602034
|
||||||
|
虎牙-路飞,http://43.138.170.29:35455/huya/16913382
|
||||||
|
虎牙-麻雀,http://43.138.170.29:35455/huya/11352881
|
||||||
|
虎牙-命案十三宗,http://43.138.170.29:35455/huya/11601981
|
||||||
|
虎牙-魔法世界,http://43.138.170.29:35455/huya/21059580
|
||||||
|
虎牙-欧美电影,http://43.138.170.29:35455/huya/11352880
|
||||||
|
虎牙-欧美电影,http://43.138.170.29:35455/huya/21059581
|
||||||
|
虎牙-欧美娱乐,http://43.138.170.29:35455/huya/21059574
|
||||||
|
虎牙-倩女幽魂,http://43.138.170.29:35455/huya/11601970
|
||||||
|
女神影院,http://hpull.kktv8.com/livekktv/99350550/playlist.m3u8
|
||||||
|
港台电影,http://43.138.170.29:35455/huya/880261
|
||||||
|
黑帮斗争,http://43.138.170.29:35455/huya/11342419
|
||||||
|
未知,http://43.138.170.29:35455/huya/11601986
|
||||||
|
极限挑战,http://43.138.170.29:35455/huya/11352914
|
||||||
|
金庸电影,http://43.138.170.29:35455/huya/11352897
|
||||||
|
经典电影,http://43.138.170.29:35455/huya/11352962
|
||||||
|
经典好片,http://43.138.170.29:35455/huya/11342427
|
||||||
|
经典喜剧片,http://43.138.170.29:35455/huya/11352894
|
||||||
|
警匪,http://43.138.170.29:35455/huya/11352886
|
||||||
|
救援电影,http://43.138.170.29:35455/huya/21059586
|
||||||
|
科幻电影,http://43.138.170.29:35455/huya/11602034
|
||||||
|
电影22,http://43.138.170.29:35455/huya/11601981
|
||||||
|
欧美电影,http://43.138.170.29:35455/huya/11352880
|
||||||
|
欧美电影,http://43.138.170.29:35455/huya/21059581
|
||||||
|
电影23,http://43.138.170.29:35455/huya/11601970
|
||||||
|
电影33,http://43.138.170.29:35455/huya/11602077
|
||||||
|
史诗级战争电影,http://43.138.170.29:35455/huya/21059556
|
||||||
|
电影24,http://43.138.170.29:35455/huya/21059579
|
||||||
|
电影55,http://43.138.170.29:35455/huya/23652317
|
||||||
|
喜剧专场,http://43.138.170.29:35455/huya/11602044
|
||||||
|
电影26,http://43.138.170.29:35455/huya/21059577
|
||||||
|
电影77,http://43.138.170.29:35455/huya/11601971
|
||||||
|
电影78,http://43.138.170.29:35455/huya/11342414
|
||||||
|
金马影院,http://hpull.kktv8.com/livekktv/128600025/playlist.m3u8
|
||||||
|
虎牙-庆余年,http://43.138.170.29:35455/huya/11352960
|
||||||
|
虎牙-三国演义,http://43.138.170.29:35455/huya/11602077
|
||||||
|
虎牙-神话,http://43.138.170.29:35455/huya/11352913
|
||||||
|
虎牙-生活大爆炸,http://43.138.170.29:35455/huya/11342417
|
||||||
|
虎牙-史诗级战争电影,http://43.138.170.29:35455/huya/21059556
|
||||||
|
虎牙-孙悟空,http://43.138.170.29:35455/huya/11342395
|
||||||
|
虎牙-太空混战,http://43.138.170.29:35455/huya/21059579
|
||||||
|
虎牙-天雷滚滚,http://43.138.170.29:35455/huya/11352945
|
||||||
|
虎牙-天龙八部,http://43.138.170.29:35455/huya/11602041
|
||||||
|
虎牙-歪果仁动作,http://43.138.170.29:35455/huya/21059552
|
||||||
|
虎牙-文成公主,http://43.138.170.29:35455/huya/11352974
|
||||||
|
虎牙-我是大哥大,http://43.138.170.29:35455/huya/23652317
|
||||||
|
虎牙-喜剧合家欢,http://43.138.170.29:35455/huya/11352877
|
||||||
|
虎牙-喜剧专场,http://43.138.170.29:35455/huya/11602044
|
||||||
|
虎牙-小鲤鱼,http://43.138.170.29:35455/huya/11601961
|
||||||
星爷,https://ygbh--xingkongbujian.repl.co/huya/11342412
|
星爷,https://ygbh--xingkongbujian.repl.co/huya/11342412
|
||||||
英叔,https://ygbh--xingkongbujian.repl.co/huya/11342421
|
英叔,https://ygbh--xingkongbujian.repl.co/huya/11342421
|
||||||
发哥,https://ygbh--xingkongbujian.repl.co/huya/11342387
|
发哥,https://ygbh--xingkongbujian.repl.co/huya/11342387
|
||||||
|
|||||||
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
|
|||||||
Binary file not shown.
+62
-24
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
@@ -12,6 +12,36 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sites": [
|
"sites": [
|
||||||
|
{
|
||||||
|
"key": "影咖视频",
|
||||||
|
"name": "影咖视频",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_YingKa",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 0,
|
||||||
|
"ext": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "米酷视频",
|
||||||
|
"name": "米酷视频",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_DDMJ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 0,
|
||||||
|
"ext": "http://103.222.188.33:6688"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "剧圈视频",
|
||||||
|
"name": "剧圈视频",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_DDMJ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 0,
|
||||||
|
"ext": "http://211.101.233.143:7788"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "蚂蚁视频",
|
"key": "蚂蚁视频",
|
||||||
"name": "蚂蚁视频",
|
"name": "蚂蚁视频",
|
||||||
@@ -20,7 +50,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
"ext": "http://www.rzys.cc"
|
"ext": "http://rzys.xyz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "看看视频",
|
"key": "看看视频",
|
||||||
@@ -46,7 +76,7 @@
|
|||||||
"name": "EMO蓝光",
|
"name": "EMO蓝光",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_AppYsV2",
|
"api": "csp_AppYsV2",
|
||||||
"ext": "http://one2.emofun.top/mogai_api.php/v1.vod"
|
"ext": "http://one3.emofun.top/mogai_api.php/v1.vod"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "油果视频",
|
"key": "油果视频",
|
||||||
@@ -98,7 +128,7 @@
|
|||||||
"ext": ""
|
"ext": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "NoSearch_Bdys_spider",
|
"key": "Bdys_spider",
|
||||||
"name": "哔滴影视",
|
"name": "哔滴影视",
|
||||||
"api": "csp_Bdys01",
|
"api": "csp_Bdys01",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
@@ -208,15 +238,6 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1
|
"filterable": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "csp_Cokemv",
|
|
||||||
"name": "Cokemv",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Cokemv",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "NoSearch_csp_BBB",
|
"key": "NoSearch_csp_BBB",
|
||||||
"name": "哔哩哔哩",
|
"name": "哔哩哔哩",
|
||||||
@@ -264,11 +285,6 @@
|
|||||||
"type": 3,
|
"type": 3,
|
||||||
"url": "Demo"
|
"url": "Demo"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Json并发",
|
|
||||||
"type": 2,
|
|
||||||
"url": "Parallel"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Json轮询",
|
"name": "Json轮询",
|
||||||
"type": 2,
|
"type": 2,
|
||||||
@@ -305,22 +321,44 @@
|
|||||||
"flags": [
|
"flags": [
|
||||||
"youku",
|
"youku",
|
||||||
"qq",
|
"qq",
|
||||||
|
"QQ",
|
||||||
"iqiyi",
|
"iqiyi",
|
||||||
|
"qiqi",
|
||||||
"qiyi",
|
"qiyi",
|
||||||
"letv",
|
"letv",
|
||||||
"sohu",
|
"sohu",
|
||||||
"tudou",
|
"tudou",
|
||||||
"pptv",
|
"pptv",
|
||||||
|
"PPTV",
|
||||||
"mgtv",
|
"mgtv",
|
||||||
|
"ltnb",
|
||||||
|
"rx",
|
||||||
|
"SLYS4k",
|
||||||
|
"BYGA",
|
||||||
|
"luanzi",
|
||||||
|
"dxzy",
|
||||||
|
"QEYSS",
|
||||||
|
"aliyun",
|
||||||
|
"AliS",
|
||||||
|
"122",
|
||||||
|
"chuangying",
|
||||||
|
"CL4K",
|
||||||
|
"xfyun",
|
||||||
|
"wuduzy",
|
||||||
"wasu",
|
"wasu",
|
||||||
"bilibili",
|
"bilibili",
|
||||||
"renrenmi",
|
"renrenmi",
|
||||||
"duoduozy",
|
"ppayun",
|
||||||
"xinluan",
|
"haiwaikan",
|
||||||
"ddzy",
|
"cool",
|
||||||
"tgqp",
|
"dbm3u8",
|
||||||
"tkqp",
|
"xmm",
|
||||||
"XRJX"
|
"xigua",
|
||||||
|
"m1905",
|
||||||
|
"funshion",
|
||||||
|
"imgo",
|
||||||
|
"ruyi1080",
|
||||||
|
"ruyib1080"
|
||||||
],
|
],
|
||||||
"ijk": [
|
"ijk": [
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"sites": [
|
"sites": [
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
{ "url": "https://gh-proxy.com/https://raw.githubusercontent.com/chendi0207/my-TVBOX/main/tvboxqq/少儿频道/api.json", "name": "少儿频道" },
|
{ "url": "https://gh-proxy.com/https://raw.githubusercontent.com/chendi0207/my-TVBOX/main/tvboxqq/少儿频道/api.json", "name": "少儿频道" },
|
||||||
|
|
||||||
|
{ "url": "https://gh-proxy.com/https://raw.githubusercontent.com/chendi0207/my-TVBOX/main/tvboxqq/动漫频道/api.json", "name": "动漫频道" },
|
||||||
|
|
||||||
{ "url": "https://gh-proxy.com/https://raw.githubusercontent.com/chendi0207/my-TVBOX/main/tvboxqq/菜妮丝/api.json", "name": "菜妮丝" },
|
{ "url": "https://gh-proxy.com/https://raw.githubusercontent.com/chendi0207/my-TVBOX/main/tvboxqq/菜妮丝/api.json", "name": "菜妮丝" },
|
||||||
|
|
||||||
{ "url": "https://gh-proxy.com/https://raw.githubusercontent.com/chendi0207/my-TVBOX/main/tvboxqq/巧儿/api.json", "name": "巧儿" },
|
{ "url": "https://gh-proxy.com/https://raw.githubusercontent.com/chendi0207/my-TVBOX/main/tvboxqq/巧儿/api.json", "name": "巧儿" },
|
||||||
|
|||||||
+70
-30
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
@@ -93,14 +93,14 @@
|
|||||||
"ext": "./json/小鹿影视.json"
|
"ext": "./json/小鹿影视.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_兔瓜",
|
"key": "csp_亿视",
|
||||||
"name": "🅱️兔瓜影视|T追剧",
|
"name": "🅱️亿视影院|T追剧",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./json/兔兔瓜.json"
|
"ext": "./json/亿视影院.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_达龟",
|
"key": "csp_达龟",
|
||||||
@@ -122,6 +122,16 @@
|
|||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
"ext": "./json/玩偶哥哥.json"
|
"ext": "./json/玩偶哥哥.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "影巢",
|
||||||
|
"name": "🅱️网盘影巢|T追剧",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Hdhive",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "Czspp",
|
"key": "Czspp",
|
||||||
"name": "🅱️厂长影视|T追剧",
|
"name": "🅱️厂长影视|T追剧",
|
||||||
@@ -133,14 +143,14 @@
|
|||||||
"ext": "https://cz01.me/"
|
"ext": "https://cz01.me/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_徕米",
|
"key": "csp_热播",
|
||||||
"name": "🅱️徕米影视|T追剧",
|
"name": "🅱️热播之家|T追剧",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./json/徕米影视.json"
|
"ext": "./json/热播之家.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_日后",
|
"key": "csp_日后",
|
||||||
@@ -162,16 +172,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./json/TVB云播.json"
|
"ext": "./json/TVB云播.json"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "csp_热播",
|
|
||||||
"name": "🅱️热播之家|T追剧",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./json/热播之家.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "csp_101",
|
"key": "csp_101",
|
||||||
"name": "🅱️摇玲影视|T追剧",
|
"name": "🅱️摇玲影视|T追剧",
|
||||||
@@ -323,14 +323,14 @@
|
|||||||
"ext": "./json/黑狐影视.json"
|
"ext": "./json/黑狐影视.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_耐看",
|
"key": "csp_夜光",
|
||||||
"name": "🅱️耐看影视|T追剧",
|
"name": "🅱️夜光影视|T追剧",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./json/耐看影视.json"
|
"ext": "./json/夜光影视.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_歪片",
|
"key": "csp_歪片",
|
||||||
@@ -372,6 +372,56 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./json/熊猫影视.json"
|
"ext": "./json/熊猫影视.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_徕米",
|
||||||
|
"name": "🅱️徕米影视|T追剧",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/徕米影视.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_毛子",
|
||||||
|
"name": "🅱️毛子影视|T追剧",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/毛毛子影视.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_视觉",
|
||||||
|
"name": "🅱️视觉影视|T追剧",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/新视觉影视.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_淘剧",
|
||||||
|
"name": "🅱️淘剧影院|T追剧",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/淘剧影院.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_子子",
|
||||||
|
"name": "🅱️紫梓影视|T追剧",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XBPQ",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/子子影视.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_非凡",
|
"key": "csp_非凡",
|
||||||
"name": "🅱️非凡资源|T追剧",
|
"name": "🅱️非凡资源|T追剧",
|
||||||
@@ -446,16 +496,6 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 0
|
"filterable": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "4KHD",
|
|
||||||
"name": "🅱️4khd磁力|T追剧",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XPathAli",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 0,
|
|
||||||
"ext": "./json/4khdr磁力.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "音范",
|
"key": "音范",
|
||||||
"name": "🅱️音范磁力|T追剧",
|
"name": "🅱️音范磁力|T追剧",
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"作者":"荷城茶秀",
|
||||||
|
|
||||||
|
"站名":"亿视影院",
|
||||||
|
|
||||||
|
"主页url":"http://lanyi.yy365.vip/",
|
||||||
|
|
||||||
|
"简介":"【荷城茶秀】提醒您请勿相信影片中的广告,以免上当受骗!欢迎加入QQ交流群:869277279,公众号:日后魔改,获取更多影视资源。+",
|
||||||
|
|
||||||
|
"影片类型":"module-info-tag\">&&</div></div></div></div>",
|
||||||
|
|
||||||
|
"线路数组":"module-tab-item tab-item&&</small>[不包含:狐狸]",
|
||||||
|
|
||||||
|
"线路标题":"荷城茶秀接口-+<span>&&[替换:</span><small>>>🌸共]+集🌸",
|
||||||
|
|
||||||
|
"分类url":"http://lanyi.yy365.vip/index.php/vod/show/area/{area}/by/{by}/class/{class}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html;;ak",
|
||||||
|
|
||||||
|
"分类":"电影$1#电视剧$2#综艺$3#动漫$4#体育$5#短剧$21"}
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
"播放列表":"<li&&</li>",
|
"播放列表":"<li&&</li>",
|
||||||
|
|
||||||
"分类url":"http://www.jinyanw.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;akx",
|
"分类url":"http://www.jinyanw.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;akm0",
|
||||||
|
|
||||||
"分类":"电影$1#电视剧$2#综艺$3#动漫$4",
|
"分类":"电影$1#电视剧$2#综艺$3#动漫$4",
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"作者":"荷城茶秀",
|
||||||
|
|
||||||
|
"站名":"夜光影视",
|
||||||
|
|
||||||
|
"主页url":"https://www.ygpvp.com/",
|
||||||
|
|
||||||
|
"简介":"【荷城茶秀】提醒您请勿相信影片中的广告,以免上当受骗!欢迎加入QQ交流群:869277279,公众号:日后魔改,获取更多影视资源。+<p&&</p>",
|
||||||
|
|
||||||
|
"影片状态":"集数:&&</div>",
|
||||||
|
|
||||||
|
"影片类型":"module-info-tag\">&&立即播放",
|
||||||
|
|
||||||
|
"线路数组":"data-dropdown-value=&&</div>",
|
||||||
|
|
||||||
|
"线路标题":"荷城茶秀接口-+<span>&&</small>[替换:</span><small>>>🌸共]+集🌸",
|
||||||
|
|
||||||
|
"分类url":"https://www.ygpvp.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;ak",
|
||||||
|
|
||||||
|
"分类":"电影$1#电视剧$2#综艺$3#动漫$4#纪录片$38"}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"作者":"荷城茶秀",
|
||||||
|
|
||||||
|
"站名":"子子影视",
|
||||||
|
|
||||||
|
"主页url":"https://www.ziziys.com",
|
||||||
|
|
||||||
|
"简介":"【荷城茶秀】提醒您请勿相信影片中的广告,以免上当受骗!欢迎加入QQ交流群:869277279,公众号:日后魔改,获取更多影视资源。+video-info-item video-info-content vod_content\"&&</span>",
|
||||||
|
|
||||||
|
"导演":"导演:&&</div>",
|
||||||
|
|
||||||
|
"主演":"主演:&&</div>",
|
||||||
|
|
||||||
|
"影片类型":"tag-link\">&&立即播放",
|
||||||
|
|
||||||
|
"影片状态":"集数:&&</div>",
|
||||||
|
|
||||||
|
"数组":"module-item-cover\">&&module-item\">",
|
||||||
|
|
||||||
|
"副标题":"module-item-text\">&&</div>",
|
||||||
|
|
||||||
|
"链接":"href=\"&&\"",
|
||||||
|
|
||||||
|
"标题":"title=\"&&\"",
|
||||||
|
|
||||||
|
"图片":"data-src=\"&&\"",
|
||||||
|
|
||||||
|
"搜索url":"/vsearch/{wd}--{pg}.html",
|
||||||
|
|
||||||
|
"搜索模式":"1",
|
||||||
|
|
||||||
|
"搜索数组":"<img class=\"lazy lazyload&&</h3>",
|
||||||
|
|
||||||
|
"搜索图片":"data-src=\"&&\"",
|
||||||
|
|
||||||
|
"搜索标题":"alt=\"&&\"",
|
||||||
|
|
||||||
|
"搜索链接":"href=\"&&\"",
|
||||||
|
|
||||||
|
"搜索副标题":"title=*>&&</a>",
|
||||||
|
|
||||||
|
"搜索后缀":"/video/",
|
||||||
|
|
||||||
|
"线路数组":"data-dropdown-value=&&</div>",
|
||||||
|
|
||||||
|
"线路标题":"荷城茶秀接口-+<span>&&</small>[替换:</span><small>>>>🌸共]+集🌸",
|
||||||
|
|
||||||
|
"播放数组":"<div class=\"sort-item\"&&</div>",
|
||||||
|
|
||||||
|
"导演":"导演:&&</div>",
|
||||||
|
|
||||||
|
"主演":"主演:&&</div>",
|
||||||
|
|
||||||
|
"简介":"<div class=\"video-info-item video-info-content vod_content\">&&</div>",
|
||||||
|
|
||||||
|
"影片类型":"icon-cate-ds\"&&立即播放",
|
||||||
|
|
||||||
|
"影片状态":"集数:&&</div>",
|
||||||
|
|
||||||
|
"播放列表":"<a&&</a>",
|
||||||
|
|
||||||
|
"播放标题":"<span>&&</span>",
|
||||||
|
|
||||||
|
"播放链接":"href=\"&&\"",
|
||||||
|
|
||||||
|
"分类url":"https://www.ziziys.com/list/{cateId}-{catePg}.html;;ak",
|
||||||
|
|
||||||
|
"分类":"电影$1#国产剧$13#动漫$3#美剧$14#日韩剧$15"}
|
||||||
@@ -0,0 +1,462 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"作者":"荷城茶秀",
|
||||||
|
|
||||||
|
"站名":"新视觉影视",
|
||||||
|
|
||||||
|
"主页url":"https://www.6080yy1.com/",
|
||||||
|
|
||||||
|
"简介":"【荷城茶秀】提醒您请勿相信影片中的广告,以免上当受骗!欢迎加入QQ交流群:869277279,公众号:日后魔改,获取更多影视资源。+剧情:&&<a",
|
||||||
|
|
||||||
|
"导演":"导演:&&</div>",
|
||||||
|
|
||||||
|
"主演":"主演:&&</div>",
|
||||||
|
|
||||||
|
"影片类型":"video-tag-icon\">&&立即播放",
|
||||||
|
|
||||||
|
"影片状态":"集数:&&</div>",
|
||||||
|
|
||||||
|
"数组":"module-item-pic\">&&module-item\">",
|
||||||
|
|
||||||
|
"图片":"data-src=\"&&\"",
|
||||||
|
|
||||||
|
"标题":"title=\"&&\"",
|
||||||
|
|
||||||
|
"副标题":"module-item-text\">&&</div>",
|
||||||
|
|
||||||
|
"链接":"href=\"&&\"",
|
||||||
|
|
||||||
|
"搜索模式":"1",
|
||||||
|
|
||||||
|
"搜索url":"https://search.ymck.me/index.php?q={wd}",
|
||||||
|
|
||||||
|
"搜索数组":"<b>&&</b>[包含:新视觉影视]",
|
||||||
|
|
||||||
|
"搜索副标题":"<a>&&</a>",
|
||||||
|
|
||||||
|
"搜索标题":"class='movie_name'>&&</a>",
|
||||||
|
|
||||||
|
"搜索链接":"href=\"&&\"",
|
||||||
|
|
||||||
|
"搜索图片":"http://img.vopox.net/wp-content/uploads/2023/03/y2fga2jzwq2.jpg",
|
||||||
|
|
||||||
|
"线路数组":"data-dropdown-value=&&</div>",
|
||||||
|
|
||||||
|
"线路标题":"荷城茶秀接口-+<span>&&</small>[替换:蓝光专享线路>>蓝光①#在线观看线路>>在线#极速-01线路>>01线路#极速播放线路>>极速#蓝光专线2线路>>蓝光②#蓝光专享2线路>>蓝光③#蓝光专享3线路>>蓝光④#</span><small>>>>线路🌸共]+集🌸",
|
||||||
|
|
||||||
|
"播放数组":"sort-item\"&&</div>",
|
||||||
|
|
||||||
|
"播放标题":"<span>&&</span>",
|
||||||
|
|
||||||
|
"播放列表":"<a&&</a>",
|
||||||
|
|
||||||
|
"分类url":"https://www.6080yy1.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;ak",
|
||||||
|
|
||||||
|
"分类":"电影$1#电视剧$2#综艺$3#动漫$4",
|
||||||
|
|
||||||
|
"筛选":{
|
||||||
|
"1":[
|
||||||
|
{
|
||||||
|
"key":"cateld",
|
||||||
|
"name":"类型",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部类型","v":""},
|
||||||
|
{"n":"动作片","v":"25"},
|
||||||
|
{"n":"喜剧片","v":"26"},
|
||||||
|
{"n":"爱情片","v":"27"},
|
||||||
|
{"n":"科幻记","v":"28"},
|
||||||
|
{"n":"恐怖片","v":"30"},
|
||||||
|
{"n":"剧情片","v":"31"},
|
||||||
|
{"n":"战争片","v":"33"},
|
||||||
|
{"n":"记录片","v":"35"},
|
||||||
|
{"n":"悬疑片","v":"36"},
|
||||||
|
{"n":"犯罪片","v":"38"},
|
||||||
|
{"n":"冒险片","v":"40"},
|
||||||
|
{"n":"动画片","v":"41"},
|
||||||
|
{"n":"惊悚片","v":"43"},
|
||||||
|
{"n":"奇幻片","v":"44"},
|
||||||
|
{"n":"理论片","v":"46"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key":"class",
|
||||||
|
"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":"微电影"},
|
||||||
|
{"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":"意大利"},
|
||||||
|
{"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":"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"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key":"by",
|
||||||
|
"name":"排序",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部排序","v":""},
|
||||||
|
{"n":"时间排序","v":"time"},
|
||||||
|
{"n":"人气排序","v":"hits"},
|
||||||
|
{"n":"评分排序","v":"score"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"2":[
|
||||||
|
{
|
||||||
|
"key":"cateId",
|
||||||
|
"name":"类型",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部类型","v":""},
|
||||||
|
{"n":"国产剧","v":"42"},
|
||||||
|
{"n":"欧美剧","v":"45"},
|
||||||
|
{"n":"日韩剧","v":"47"},
|
||||||
|
{"n":"港台剧","v":"49"},
|
||||||
|
{"n":"泰剧","v":"51"},
|
||||||
|
{"n":"海外剧","v":"52"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"key":"class",
|
||||||
|
"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":"其他"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"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":"其他"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"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":"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"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key":"by",
|
||||||
|
"name":"排序",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部排序","v":""},
|
||||||
|
{"n":"时间排序","v":"time"},
|
||||||
|
{"n":"人气排序","v":"hits"},
|
||||||
|
{"n":"评分排序","v":"score"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"3":[
|
||||||
|
{
|
||||||
|
"key":"cateId",
|
||||||
|
"name":"类型",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部类型","v":""},
|
||||||
|
{"n":"大陆综艺","v":"20"},
|
||||||
|
{"n":"日韩综艺","v":"21"},
|
||||||
|
{"n":"港台综艺","v":"22"},
|
||||||
|
{"n":"欧美综艺","v":"23"},
|
||||||
|
{"n":"演唱会","v":"24"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key":"class",
|
||||||
|
"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":"求职"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"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":"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"}]},
|
||||||
|
{
|
||||||
|
"key":"by",
|
||||||
|
"name":"排序",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部排序","v":""},
|
||||||
|
{"n":"时间排序","v":"time"},
|
||||||
|
{"n":"人气排序","v":"hist"},
|
||||||
|
{"n":"评分排序","v":"score"}]}],
|
||||||
|
|
||||||
|
"4":[
|
||||||
|
{
|
||||||
|
"key":"cateId",
|
||||||
|
"name":"类型",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部类型","v":""},
|
||||||
|
{"n":"国产动漫","v":"29"},
|
||||||
|
{"n":"日韩动漫","v":"32"},
|
||||||
|
{"n":"欧美动漫","v":"34"},
|
||||||
|
{"n":"港台动漫","v":"37"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"key":"class",
|
||||||
|
"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":"其他"}]},
|
||||||
|
|
||||||
|
{
|
||||||
|
"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":"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"}]},
|
||||||
|
{
|
||||||
|
"key":"by",
|
||||||
|
"name":"排序",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部排序","v":""},
|
||||||
|
{"n":"时间排序","v":"time"},
|
||||||
|
{"n":"人气排序","v":"hist"},
|
||||||
|
{"n":"评分排序","v":"score"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"作者":"荷城茶秀",
|
||||||
|
|
||||||
|
"站名":"毛毛子影视",
|
||||||
|
|
||||||
|
"主页url":"http://ys.qtw.asia/",
|
||||||
|
|
||||||
|
"简介":"【荷城茶秀】提醒您请勿相信影片中的广告,以免上当受骗!欢迎加入QQ交流群:869277279,公众号:日后魔改,获取更多影视资源。+剧情简介&&</em>",
|
||||||
|
|
||||||
|
"导演":"导演:&&</div>",
|
||||||
|
|
||||||
|
"主演":"主演:&&</div>",
|
||||||
|
|
||||||
|
"影片状态":"集数:&&</div>",
|
||||||
|
|
||||||
|
"影片类型":"video-info-aux scroll-content\">&&立即播放",
|
||||||
|
|
||||||
|
"数组":"hl-item-thumb hl-lazy\"&&</a>",
|
||||||
|
|
||||||
|
"副标题":"hl-lc-1 remarks\"&&</span>",
|
||||||
|
|
||||||
|
"线路数组":"iconfont hl-icon-shipin\"></i> &&/a>[排序:优][不包含:飞速]",
|
||||||
|
|
||||||
|
"线路标题":"&&<[替换:毛毛子视频>>4K线路#;>>🌸荷城茶秀接口🌸]",
|
||||||
|
|
||||||
|
"线路二次截取":"<div class=\"hl-plays-from hl-tabs swiper-wrapper clearfix\"&&</div>",
|
||||||
|
|
||||||
|
"分类url":"http://ys.qtw.asia/index.php/vod/show/area/{area}/by/{by}/class/{class}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html;;ak",
|
||||||
|
|
||||||
|
"分类":"4K$8#电影$1#电视剧$2#综艺$3#动漫$4#短剧$6"}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"作者":"荷城茶秀",
|
||||||
|
|
||||||
|
"站名":"淘剧影院",
|
||||||
|
|
||||||
|
"主页url":"http://dyxz.tv/",
|
||||||
|
|
||||||
|
"简介":"【荷城茶秀】提醒您请勿相信影片中的广告,以免上当受骗!欢迎加入QQ交流群:869277279,公众号:日后魔改,获取更多影视资源。+站点无剧情介绍…",
|
||||||
|
|
||||||
|
"影片状态":"更新:&&</p>",
|
||||||
|
|
||||||
|
"影片类型":"类型:&&</a>",
|
||||||
|
|
||||||
|
"影片地区":"地区:</span>&&</span>",
|
||||||
|
|
||||||
|
"影片年代":"年份:&&</p>",
|
||||||
|
|
||||||
|
"线路数组":"#down&&</li>",
|
||||||
|
|
||||||
|
"线路标题":"🌸荷城茶秀接口🌸+>&&</a>[替换:播放源>>淘剧线路]",
|
||||||
|
|
||||||
|
"分类url":"http://dyxz.tv/list/{cateId}_{catePg}.html;;ak",
|
||||||
|
|
||||||
|
"分类":"电影$1#电视剧$2#综艺$4#动漫$3"}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"菜妮丝": "https://cainisi.cf",
|
"菜妮丝": "https://cainisi.cf",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
|
|||||||
@@ -18,7 +18,11 @@ VOD.vod_name = pdfh(html1, "h2&&Text");
|
|||||||
VOD.vod_director = "";
|
VOD.vod_director = "";
|
||||||
VOD.vod_content = "";
|
VOD.vod_content = "";
|
||||||
log(VOD);
|
log(VOD);
|
||||||
input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2";
|
var v_tks = '';
|
||||||
|
let script = pdfa(html1,'script').find(it=>it.includes('v_tks+=')).replace(/<script>|<\\/script>/g,'');
|
||||||
|
eval(script);
|
||||||
|
input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2"+"&token="+v_tks;
|
||||||
|
// input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2";
|
||||||
let html = request(input, {
|
let html = request(input, {
|
||||||
headers: {
|
headers: {
|
||||||
'User-Agent':'PC_UA',
|
'User-Agent':'PC_UA',
|
||||||
@@ -63,7 +67,8 @@ var rule = {
|
|||||||
host:'https://www.ikanbot.com',
|
host:'https://www.ikanbot.com',
|
||||||
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
||||||
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
||||||
searchUrl:'/search?q=**&p=fypage',
|
// searchUrl:'/search?q=**&p=fypage',
|
||||||
|
searchUrl:'/search?q=**',
|
||||||
searchable:2,
|
searchable:2,
|
||||||
quickSearch:0,
|
quickSearch:0,
|
||||||
filterable:1,
|
filterable:1,
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
var rule = {
|
||||||
|
title: '星空影视',
|
||||||
|
模板:'短视2',
|
||||||
|
host: 'https://xkys.tv',
|
||||||
|
// url:'/vodshow/id/fyclass/page/fypage.html',
|
||||||
|
url: '/vodshow/id/fyfilter.html',
|
||||||
|
filterable:1,//是否启用分类筛选,
|
||||||
|
filter_url:'{{fl.cateId}}{{fl.area}}{{fl.by}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}',
|
||||||
|
filter: {
|
||||||
|
"1":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"1"},{"n":"动作片","v":"6"},{"n":"喜剧片","v":"7"},{"n":"爱情片","v":"8"},{"n":"科幻片","v":"9"},{"n":"恐怖片","v":"10"},{"n":"剧情片","v":"11"},{"n":"战争片","v":"12"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"/class/喜剧"},{"n":"爱情","v":"/class/爱情"},{"n":"恐怖","v":"/class/恐怖"},{"n":"动作","v":"/class/动作"},{"n":"科幻","v":"/class/科幻"},{"n":"剧情","v":"/class/剧情"},{"n":"战争","v":"/class/战争"},{"n":"警匪","v":"/class/警匪"},{"n":"伦理","v":"/class/伦理"},{"n":"犯罪","v":"/class/犯罪"},{"n":"动画","v":"/class/动画"},{"n":"奇幻","v":"/class/奇幻"},{"n":"武侠","v":"/class/武侠"},{"n":"冒险","v":"/class/冒险"},{"n":"枪战","v":"/class/枪战"},{"n":"恐怖","v":"/class/恐怖"},{"n":"悬疑","v":"/class/悬疑"},{"n":"惊悚","v":"/class/惊悚"},{"n":"经典","v":"/class/经典"},{"n":"青春","v":"/class/青春"},{"n":"文艺","v":"/class/文艺"},{"n":"微电影","v":"/class/微电影"},{"n":"古装","v":"/class/古装"},{"n":"历史","v":"/class/历史"},{"n":"运动","v":"/class/运动"},{"n":"农村","v":"/class/农村"},{"n":"儿童","v":"/class/儿童"},{"n":"网络电影","v":"/class/网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"美国","v":"/area/美国"},{"n":"法国","v":"/area/法国"},{"n":"英国","v":"/area/英国"},{"n":"日本","v":"/area/日本"},{"n":"韩国","v":"/area/韩国"},{"n":"德国","v":"/area/德国"},{"n":"泰国","v":"/area/泰国"},{"n":"印度","v":"/area/印度"},{"n":"意大利","v":"/area/意大利"},{"n":"西班牙","v":"/area/西班牙"},{"n":"加拿大","v":"/area/加拿大"},{"n":"其他","v":"/area/其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"},{"n":"1997","v":"/year/1997"},{"n":"1996","v":"/year/1996"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"法语","v":"/lang/法语"},{"n":"德语","v":"/lang/德语"},{"n":"其它","v":"/lang/其它"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"国产剧","v":"13"},{"n":"日韩剧","v":"15"},{"n":"欧美剧","v":"16"},{"n":"港台剧","v":"14"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"/class/古装"},{"n":"战争","v":"/class/战争"},{"n":"青春偶像","v":"/class/青春偶像"},{"n":"喜剧","v":"/class/喜剧"},{"n":"家庭","v":"/class/家庭"},{"n":"犯罪","v":"/class/犯罪"},{"n":"动作","v":"/class/动作"},{"n":"奇幻","v":"/class/奇幻"},{"n":"剧情","v":"/class/剧情"},{"n":"历史","v":"/class/历史"},{"n":"经典","v":"/class/经典"},{"n":"乡村","v":"/class/乡村"},{"n":"情景","v":"/class/情景"},{"n":"商战","v":"/class/商战"},{"n":"网剧","v":"/class/网剧"},{"n":"其他","v":"/class/其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"/area/内地"},{"n":"韩国","v":"/area/韩国"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"日本","v":"/area/日本"},{"n":"美国","v":"/area/美国"},{"n":"泰国","v":"/area/泰国"},{"n":"英国","v":"/area/英国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"},{"n":"1997","v":"/year/1997"},{"n":"1996","v":"/year/1996"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"选秀","v":"/class/选秀"},{"n":"情感","v":"/class/情感"},{"n":"访谈","v":"/class/访谈"},{"n":"播报","v":"/class/播报"},{"n":"旅游","v":"/class/旅游"},{"n":"音乐","v":"/class/音乐"},{"n":"美食","v":"/class/美食"},{"n":"纪实","v":"/class/纪实"},{"n":"曲艺","v":"/class/曲艺"},{"n":"生活","v":"/class/生活"},{"n":"游戏互动","v":"/class/游戏互动"},{"n":"财经","v":"/class/财经"},{"n":"求职","v":"/class/求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"/area/内地"},{"n":"港台","v":"/area/港台"},{"n":"日韩","v":"/area/日韩"},{"n":"欧美","v":"/area/欧美"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"},{"n":"1997","v":"/year/1997"},{"n":"1996","v":"/year/1996"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"/class/情感"},{"n":"科幻","v":"/class/科幻"},{"n":"热血","v":"/class/热血"},{"n":"推理","v":"/class/推理"},{"n":"搞笑","v":"/class/搞笑"},{"n":"冒险","v":"/class/冒险"},{"n":"萝莉","v":"/class/萝莉"},{"n":"校园","v":"/class/校园"},{"n":"动作","v":"/class/动作"},{"n":"机战","v":"/class/机战"},{"n":"运动","v":"/class/运动"},{"n":"战争","v":"/class/战争"},{"n":"少年","v":"/class/少年"},{"n":"少女","v":"/class/少女"},{"n":"社会","v":"/class/社会"},{"n":"原创","v":"/class/原创"},{"n":"亲子","v":"/class/亲子"},{"n":"益智","v":"/class/益智"},{"n":"励志","v":"/class/励志"},{"n":"其他","v":"/class/其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"国产","v":"/area/国产"},{"n":"日本","v":"/area/日本"},{"n":"欧美","v":"/area/欧美"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"},{"n":"1997","v":"/year/1997"},{"n":"1996","v":"/year/1996"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
},
|
||||||
|
filter_def:{
|
||||||
|
1:{cateId:'1'},
|
||||||
|
2:{cateId:'2'},
|
||||||
|
3:{cateId:'3'},
|
||||||
|
4:{cateId:'4'}
|
||||||
|
},
|
||||||
|
detailUrl:'/vod/fyid.html',
|
||||||
|
一级:'.list-vod .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
|
||||||
|
}
|
||||||
Binary file not shown.
+41
-39
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 0,
|
"changeable": 0,
|
||||||
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt+4k|auto|fhd$$$http://tvfan.xxooo.cf/"
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt+4k|auto|fhd$$$https://www.wogg.xyz/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "Bili",
|
"key": "Bili",
|
||||||
@@ -101,13 +101,15 @@
|
|||||||
"changeable": 1
|
"changeable": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "DiDuan",
|
"key": "率率",
|
||||||
"name": "⏮️低端┃直连",
|
"name": "💡率率┃App",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Ddrk",
|
"api": "csp_AppYsV2",
|
||||||
|
"playerType": 1,
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1
|
"changeable": 1,
|
||||||
|
"ext": "http://caiji.ghlyys.com/yumi/api.php/app/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "Auete",
|
"key": "Auete",
|
||||||
@@ -168,7 +170,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"ext": "http://guan.yy365.vip/api.php/app/"
|
"ext": "https://www.kuin.one/api.php/app/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "奇奇",
|
"key": "奇奇",
|
||||||
@@ -178,17 +180,16 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"ext": "https://ttsp.live/api.php/app/"
|
"ext": "http://mp4.ghlyys.com/api.php/app/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "酷酷",
|
"key": "DiDuan",
|
||||||
"name": "💡酷酷┃App",
|
"name": "⏮️低端┃直连",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_AppYsV2",
|
"api": "csp_Ddrk",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1,
|
"changeable": 1
|
||||||
"ext": "http://cms.realdou.cn:35264/api.php/app/"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "77",
|
"key": "77",
|
||||||
@@ -216,7 +217,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"ext": "https://www.libvio.fun/"
|
"ext": "https://www.libvio.pro/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "Xinsj",
|
"key": "Xinsj",
|
||||||
@@ -387,32 +388,32 @@
|
|||||||
"changeable": 0
|
"changeable": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_xp_qiumi",
|
"key": "csp_qiumi",
|
||||||
"name": "⚽ Jrs┃球迷",
|
"name": "⚽ Jrs┃球迷",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XPath",
|
"api": "./drpy1.min.js",
|
||||||
|
"ext": "./js/JRKAN直播.js",
|
||||||
"style": {
|
"style": {
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"ratio": 1
|
"ratio": 1
|
||||||
},
|
},
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"changeable": 0,
|
"changeable": 0
|
||||||
"ext": "./json/dj看球.json"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_XYQBiu_310直播",
|
"key": "csp_310直播",
|
||||||
"name": "⚽310┃看球",
|
"name": "⚽310┃看球",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XYQBiu",
|
"api": "./drpy1.min.js",
|
||||||
|
"ext": "./js/310直播.js",
|
||||||
"style": {
|
"style": {
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"ratio": 1
|
"ratio": 1
|
||||||
},
|
},
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"changeable": 0,
|
"changeable": 0
|
||||||
"ext": "./json/310直播.json"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_XPath_企鹅体育",
|
"key": "csp_XPath_企鹅体育",
|
||||||
@@ -483,14 +484,14 @@
|
|||||||
"changeable": 0
|
"changeable": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_XBPQ_聚短视频",
|
"key": "csp_聚短视频",
|
||||||
"name": "📽️聚短┃视频",
|
"name": "📽️聚短┃视频",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "./drpy1.min.js",
|
||||||
|
"ext": "./js/短视频.js",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"quickSearch": 0,
|
"quickSearch": 0,
|
||||||
"changeable": 0,
|
"changeable": 0
|
||||||
"ext": "./json/短视频.json"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "有声小说js",
|
"key": "有声小说js",
|
||||||
@@ -693,23 +694,13 @@
|
|||||||
"url": "Web"
|
"url": "Web"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "神秘的",
|
"name": "神秘的哥哥们",
|
||||||
"type": 1,
|
|
||||||
"url": "http://json.g9.pub:66/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "哥哥们",
|
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"url": "http://jx.wogg.link:63/jiexi/饭特析.php?url="
|
"url": "http://jx.wogg.link:63/jiexi/饭特析.php?url="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "全部",
|
"name": "解析",
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"url": "http://110.42.2.247:880/analysis/json/?uid=2449&my=acfgikquvzFGJRW459&url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "来自",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://jx.zhanlangbu.com/?url=",
|
"url": "https://jx.zhanlangbu.com/?url=",
|
||||||
"ext": {
|
"ext": {
|
||||||
"flag": [
|
"flag": [
|
||||||
@@ -735,6 +726,16 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "全部",
|
||||||
|
"type": 1,
|
||||||
|
"url": "http://110.42.2.247:880/analysis/json/?uid=2449&my=acfgikquvzFGJRW459&url="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "来自",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://json.key521.cn/api/?key=df27d9ca9ec97e22c47f8565a50aa6f5&url="
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "网络",
|
"name": "网络",
|
||||||
"type": 1,
|
"type": 1,
|
||||||
@@ -816,7 +817,8 @@
|
|||||||
"name": "lz",
|
"name": "lz",
|
||||||
"hosts": [
|
"hosts": [
|
||||||
"vip.lz",
|
"vip.lz",
|
||||||
"hd.lz"
|
"hd.lz",
|
||||||
|
"v.cdnlz"
|
||||||
],
|
],
|
||||||
"regex": [
|
"regex": [
|
||||||
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.433333,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.433333,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'310直播',
|
||||||
|
host:'http://www.310.tv',
|
||||||
|
url:'/?s=0&t=1&a=fyclass&g=fypage',
|
||||||
|
searchUrl:'',
|
||||||
|
searchable:0,
|
||||||
|
quickSearch:0,
|
||||||
|
class_name:'热门&足球&篮球',
|
||||||
|
class_url:'0&1&2',
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
play_parse:false,
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
double:false,
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.list_content a;.jiabifeng&&p:lt(5)&&Text;.feleimg img&&src;a&&t-nzf-o;a&&href',
|
||||||
|
二级:'*',
|
||||||
|
搜索:'',
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
// 道长 drpy仓库 https://gitcode.net/qq_32394351/dr_py
|
||||||
|
// 道长 drpy安卓本地搭建说明 https://code.gitlink.org.cn/api/v1/repos/hjdhnx/dr_py/blob/master/%E5%AE%89%E5%8D%93%E6%9C%AC%E5%9C%B0%E6%90%AD%E5%BB%BA%E8%AF%B4%E6%98%8E.md
|
||||||
|
// 道长 drpy写源 模板规则说明 https://gitcode.net/qq_32394351/dr_py#%E6%A8%A1%E6%9D%BF%E8%A7%84%E5%88%99%E8%AF%B4%E6%98%8E
|
||||||
|
// 道长 drpy写源 套模模版 https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/%E6%A8%A1%E6%9D%BF.js
|
||||||
|
// 道长 drpy写源 相关视频教程 https://www.youtube.com/watch?v=AK7cN-fcwm4
|
||||||
|
// 道长 drpy写源 写源教学视频 https://t.me/fongmi_offical/54080/63553
|
||||||
|
// 海阔下载 https://haikuo.lanzoui.com/u/GoldRiver
|
||||||
|
// 影视TV 官方TG Drpy群 https://t.me/fongmi_offical/63689
|
||||||
|
// 影视TV 官方TG 下载 https://t.me/fongmi_release
|
||||||
|
|
||||||
|
|
||||||
|
var rule = {
|
||||||
|
title:'JRKAN直播',
|
||||||
|
host:'http://www.jrkankan.com/?lan=1',
|
||||||
|
// JRKAN备用域名:www.jrkankan.com / www.jrkan365.com / jrsyyds.com / www.jryyds.com / jrskan.com / jrsbxj.com
|
||||||
|
// JRKAN网址发布:qiumi1314.com
|
||||||
|
url:'/fyclass',
|
||||||
|
searchUrl:'',
|
||||||
|
searchable:0,
|
||||||
|
quickSearch:0,
|
||||||
|
class_name:'全部',
|
||||||
|
class_url:'/',
|
||||||
|
//class_url:'?live',
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
play_parse:true,
|
||||||
|
lazy:"",
|
||||||
|
limit:6,
|
||||||
|
double:false,
|
||||||
|
推荐:'*',
|
||||||
|
// 一级:'.loc_match:eq(2) ul;li:gt(1):lt(4)&&Text;img&&src;li:lt(2)&&Text;a:eq(1)&&href',//play.sportsteam333.com
|
||||||
|
一级:"js:var items=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;var html=request(input);var tabs=pdfa(html,'body&&.d-touch');tabs.forEach(function(it){var pz=pdfh(it,'.name:eq(1)&&Text');var ps=pdfh(it,'.name:eq(0)&&Text');var pk=pdfh(it,'.name:eq(2)&&Text');var img=pd(it,'img&&src');var timer=pdfh(it,'.lab_time&&Text');var url=pd(it,'a.me&&href');items.push({desc:timer+'🏆'+ps,title:pz+'🆚'+pk,pic_url:img,url:url})});setResult(items);",
|
||||||
|
二级:{
|
||||||
|
"title":".sub_list li:lt(2)&&Text;.sub_list li:eq(0)&&Text",
|
||||||
|
"img":"img&&src",
|
||||||
|
"desc":";;;.lab_team_home&&Text;.lab_team_away&&Text",
|
||||||
|
"content":".sub_list ul&&Text",
|
||||||
|
"tabs":"js:TABS=['JRKAN直播']",
|
||||||
|
"lists":"js:LISTS=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;let html=request(input);let data=pdfa(html,'.sub_playlist&&a');TABS.forEach(function(tab){let d=data.map(function(it){let name=pdfh(it,'strong&&Text');let url=pd(it,'a&&data-play');return name+'$'+url});LISTS.push(d)});",
|
||||||
|
},
|
||||||
|
搜索:'',
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
// 搜寻验证
|
||||||
|
var rule = {
|
||||||
|
title:'短视频',
|
||||||
|
host:'http://www.sharenice.net',
|
||||||
|
url:'/fyclass?page=fypage',
|
||||||
|
//searchUrl:'/video/search?search_key=**',
|
||||||
|
searchable:0,
|
||||||
|
quickSearch:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'PC_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
// class_name:'抖音&快手&微视&火山&场库&体育&美拍&秒拍&全民&梨&好兔&美女&正能量&搞笑&社会&游戏&娱乐&旅游&萌系&生活&音乐&美食&明星&动漫&影视&时尚',
|
||||||
|
class_name:'抖音&快手&微视&火山&场库&美拍&秒拍&全民&澎湃&好兔&开眼&美女&搞笑&社会&影视&音乐&娱乐&正能量&生活&动漫&体育&美食&萌系&旅游&游戏&明星&时尚',
|
||||||
|
// class_url:'douyin&kuaishou&weishi&huoshan&changku&tags/t-5L2T6IKy.html&meipai&miaopai&quanmin&lishipin&haotu&tags/t-576O5aWz.html&tags/t-5q2j6IO96YeP.html&tags/t-5pCe56yR.html&tags/t-56S+5Lya.html&tags/t-5ri45oiP.html&tags/t-5aix5LmQ.html&tags/t-5peF5ri4.html&tags/t-6JCM57O7.html&tags/t-55Sf5rS7.html&tags/t-6Z+z5LmQ.html&tags/t-576O6aOf.html&tags/t-5piO5pif.html&tags/t-5Yqo5ryr.html&tags/t-5b2x6KeG.html&tags/t-5pe25bCa.html',
|
||||||
|
class_url:'douyin&kuaishou&weishi&huoshan&changku&meipai&miaopai&quanmin&lishipin&haotu&kaiyan&t-576O5aWz&t-5pCe56yR&t-56S+5Lya&t-5b2x6KeG&t-6Z+z5LmQ&t-5aix5LmQ&t-5q2j6IO96YeP&t-55Sf5rS7&t-5Yqo5ryr&t-5L2T6IKy&t-576O6aOf&t-6JCM57O7&t-5peF5ri4&t-5ri45oiP&t-5piO5pif&t-5pe25bCa',
|
||||||
|
play_parse:true,
|
||||||
|
lazy:'js:/kuaishou/.test(input)?input=jsp.pdfh(request("http://m.sharenice.net/mobile"+input.split("net")[1]),".video-play-box&&video&&src"):input=jsp.pdfh(request("http://m.sharenice.net/mobile"+input.split("net")[1]),".video-play-box&&video&&src")+"#.mp4"',
|
||||||
|
limit:6,
|
||||||
|
double:false,
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.item-box&&ul&&li;a&&title;img&&data-original;;a&&href',
|
||||||
|
二级:'*',
|
||||||
|
}
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
"cookie": "SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7",
|
"cookie": "innersign=0; buvid3=2E536ADC-CD6D-46AB-A9FF-904395151EE369713infoc; b_nut=1669016569; i-wanna-go-back=-1; b_ut=7; _uuid=761F7F106-C575-884D-6C10A-92BC10A10D10FBC68934infoc; buvid4=5B25B999-AE15-E09A-A0CC-3661981B71BF70255-122112115-JOyWSaNZfI2kZmT1KYmcQA%3D%3D; fingerprint=6d9ef93c89a567d22b6a9c4104e6cc50; buvid_fp_plain=undefined; buvid_fp=6d9ef93c89a567d22b6a9c4104e6cc50; SESSDATA=2d6f63c8%2C1684568607%2C19eb6%2Ab1; bili_jct=21d538b01566c26afc81ff68c2ac7dca; DedeUserID=3493083203242585; DedeUserID__ckMd5=7b86f3894ed7f8c0; sid=ng0uyvaz; b_lsid=97FB69A2_1869DE8E2C5; bg_view_44176=720227",
|
||||||
|
|
||||||
"filter": {
|
"filter": {
|
||||||
"考公考证": [{
|
"考公考证": [{
|
||||||
|
|||||||
+34
-129
@@ -10,22 +10,28 @@ CCTV7,http://hms284nc1972679584.live.aikan.miguvideo.com/wh7f454c46tw4211155753_
|
|||||||
CCTV8,http://hms84nc1972679564.live.aikan.miguvideo.com/wh7f454c46tw2243817462_1836799824/wd_r2/ocn/cctv8hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115084753&ContentId=265667466&timezone=UTC&mtv_session=077374df50cdebf0ab55b2ec30d2f01a&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=8b9b358180e9e344fe45e67912ce6985
|
CCTV8,http://hms84nc1972679564.live.aikan.miguvideo.com/wh7f454c46tw2243817462_1836799824/wd_r2/ocn/cctv8hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115084753&ContentId=265667466&timezone=UTC&mtv_session=077374df50cdebf0ab55b2ec30d2f01a&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=8b9b358180e9e344fe45e67912ce6985
|
||||||
CCTV9,http://hms444nc1972679601.live.aikan.miguvideo.com/wh7f454c46tw4260577431_-1084507862/migu/kailu/20200324/cctv9hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208131044&ContentId=265667202&timezone=UTC&mtv_session=9444a4df4cb7524a1ec85c4d44200abc&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=efdbccd2a72ff1ba2eabbf08f475f7c6
|
CCTV9,http://hms444nc1972679601.live.aikan.miguvideo.com/wh7f454c46tw4260577431_-1084507862/migu/kailu/20200324/cctv9hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208131044&ContentId=265667202&timezone=UTC&mtv_session=9444a4df4cb7524a1ec85c4d44200abc&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=efdbccd2a72ff1ba2eabbf08f475f7c6
|
||||||
CCTV10,http://hms424nc1972679599.live.aikan.miguvideo.com/wh7f454c46tw2383135402_1265174830/wd_r2/ocn/cctv10hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115085013&ContentId=265667631&timezone=UTC&mtv_session=451a79654bec6f8926b5017302146772&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=e74690616e29be77ff1a1992b303b861
|
CCTV10,http://hms424nc1972679599.live.aikan.miguvideo.com/wh7f454c46tw2383135402_1265174830/wd_r2/ocn/cctv10hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115085013&ContentId=265667631&timezone=UTC&mtv_session=451a79654bec6f8926b5017302146772&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=e74690616e29be77ff1a1992b303b861
|
||||||
CCTV11,http://61.138.167.36:9901/tsfile/live/0011_1.m3u8
|
|
||||||
CCTV11,http://cyz32.livehbindex.hbcatv.cn/live/5000002086444f0886ad7032ad8f756b.m3u8?bitrate=2300&pt=5
|
CCTV11,https://live.goodiptv.club/api/cqyx.php?id=cctv11HD
|
||||||
|
CCTV11,http://120.196.232.124:8088/rrs03.hw.gmcc.net/PLTV/651/224/3221226714/1.m3u8?
|
||||||
|
|
||||||
CCTV12,http://hms204nc1972679577.live.aikan.miguvideo.com/wh7f454c46tw1174495643_-1245391177/migu/kailu/20200324/cctv12hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020243&ContentId=265667607&timezone=UTC&mtv_session=7581c6271c0379b8ca8b268ff7804765&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=3906a8574a42ff13aba3e255be4cd8e3
|
CCTV12,http://hms204nc1972679577.live.aikan.miguvideo.com/wh7f454c46tw1174495643_-1245391177/migu/kailu/20200324/cctv12hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020243&ContentId=265667607&timezone=UTC&mtv_session=7581c6271c0379b8ca8b268ff7804765&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=3906a8574a42ff13aba3e255be4cd8e3
|
||||||
CCTV13,http://hms184nc1972679575.live.aikan.miguvideo.com/wh7f454c46tw946205927_-649996709/envivo_x/2018/SD/cctv13/2000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208132705&ContentId=265667474&timezone=UTC&mtv_session=36bf599c0c4bc785fd46aaf0ba40ffe7&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=91a8a1c4652526079a5b0e294d5bc18d
|
CCTV13,http://hms184nc1972679575.live.aikan.miguvideo.com/wh7f454c46tw946205927_-649996709/envivo_x/2018/SD/cctv13/2000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208132705&ContentId=265667474&timezone=UTC&mtv_session=36bf599c0c4bc785fd46aaf0ba40ffe7&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=91a8a1c4652526079a5b0e294d5bc18d
|
||||||
CCTV14,http://hms344nc1972679590.live.aikan.miguvideo.com/wh7f454c46tw1297666621_-728046298/wd_r2/ocn/cctv14hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020446&ContentId=265667325&timezone=UTC&mtv_session=ad6cfd6b6dabe31801ca54a4c87f1bac&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=2757ab80a8dee98edfcfd1ee767a17b8
|
CCTV14,http://hms344nc1972679590.live.aikan.miguvideo.com/wh7f454c46tw1297666621_-728046298/wd_r2/ocn/cctv14hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020446&ContentId=265667325&timezone=UTC&mtv_session=ad6cfd6b6dabe31801ca54a4c87f1bac&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=2757ab80a8dee98edfcfd1ee767a17b8
|
||||||
CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390_1468621622/migu/kailu/20200324/cctv15hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020617&ContentId=265667535&timezone=UTC&mtv_session=e1254803553b7cace3a119612bf266d8&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=7ba98a3a39d853487109bebe5ed31c43
|
CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390_1468621622/migu/kailu/20200324/cctv15hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020617&ContentId=265667535&timezone=UTC&mtv_session=e1254803553b7cace3a119612bf266d8&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=7ba98a3a39d853487109bebe5ed31c43
|
||||||
|
|
||||||
|
CCTV16,https://live.goodiptv.club/api/cqyx.php?id=cctv16HD
|
||||||
|
CCTV16,http://120.196.232.124:8088/rrs03.hw.gmcc.net/PLTV/651/224/3221226825/1.m3u8?$8M1080
|
||||||
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
||||||
|
|
||||||
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
||||||
CCTV1,http://222.71.90.218:8888/newlive/live/hls/2/live.m3u8
|
|
||||||
CCTV5,http://222.71.90.218:8888/newlive/live/hls/6/live.m3u8
|
CCTV4K,https://cntv.sbs/tv?auth=230830&id=cctv4k
|
||||||
CCTV6,http://222.71.90.218:8888/newlive/live/hls/7/live.m3u8
|
CCTV4K,https://live.goodiptv.club/api/cqyx.php?id=CCTV4K
|
||||||
CCTV10,http://222.71.90.218:8888/newlive/live/hls/11/live.m3u8
|
CCTV16 4K,https://cntv.sbs/tv?auth=230830&id=cctv164k
|
||||||
CCTV14,http://222.71.90.218:8888/newlive/live/hls/15/live.m3u8
|
CCTV16 4K,https://live.goodiptv.club/api/cqyx.php?id=CCTV16_4K
|
||||||
CCTV17,http://222.71.90.218:8888/newlive/live/hls/58/live.m3u8
|
|
||||||
|
CGTN,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225745/index.m3u8
|
||||||
|
|
||||||
CCTV1,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225804/index.m3u8
|
CCTV1,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225804/index.m3u8
|
||||||
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226195/index.m3u8
|
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226195/index.m3u8
|
||||||
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226224/index.m3u8
|
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226224/index.m3u8
|
||||||
@@ -60,27 +66,6 @@ CCTV15,http://cyz32.livehbindex.hbcatv.cn/live/50000020f44f4f4b8aa33925dba216df.
|
|||||||
CCTV16,http://cyz32.livehbindex.hbcatv.cn/live/50000020c65d4a6b9b4e278405124734.m3u8?bitrate=2300&pt=5
|
CCTV16,http://cyz32.livehbindex.hbcatv.cn/live/50000020c65d4a6b9b4e278405124734.m3u8?bitrate=2300&pt=5
|
||||||
CCTV17,http://cyz32.livehbindex.hbcatv.cn/live/500000208b8d41c4b436ef32428c229d.m3u8?bitrate=2300&pt=5
|
CCTV17,http://cyz32.livehbindex.hbcatv.cn/live/500000208b8d41c4b436ef32428c229d.m3u8?bitrate=2300&pt=5
|
||||||
|
|
||||||
CCTV1,http://61.138.167.36:9901/tsfile/live/0001_1.m3u8
|
|
||||||
CCTV2,http://61.138.167.36:9901/tsfile/live/0002_1.m3u8
|
|
||||||
CCTV3,http://61.138.167.36:9901/tsfile/live/0003_1.m3u8
|
|
||||||
CCTV4,http://61.138.167.36:9901/tsfile/live/0004_1.m3u8
|
|
||||||
CCTV5,http://61.138.167.36:9901/tsfile/live/0005_1.m3u8
|
|
||||||
CCTV6,http://61.138.167.36:9901/tsfile/live/0006_1.m3u8
|
|
||||||
CCTV7,http://61.138.167.36:9901/tsfile/live/0007_1.m3u8
|
|
||||||
CCTV8,http://61.138.167.36:9901/tsfile/live/0008_1.m3u8
|
|
||||||
CCTV9,http://61.138.167.36:9901/tsfile/live/0009_1.m3u8
|
|
||||||
CCTV10,http://61.138.167.36:9901/tsfile/live/0010_1.m3u8
|
|
||||||
CCTV11,http://61.138.167.36:9901/tsfile/live/0011_1.m3u8
|
|
||||||
CCTV12,http://61.138.167.36:9901/tsfile/live/0012_1.m3u8
|
|
||||||
CCTV13,http://61.138.167.36:9901/tsfile/live/0013_1.m3u8
|
|
||||||
CCTV14,http://61.138.167.36:9901/tsfile/live/0014_1.m3u8
|
|
||||||
CCTV15,http://61.138.167.36:9901/tsfile/live/0015_1.m3u8
|
|
||||||
CCTV16,http://61.138.167.36:9901/tsfile/live/1061_1.m3u8
|
|
||||||
CCTV16-4K,http://61.138.167.36:9901/tsfile/live/1053_1.m3u8
|
|
||||||
CCTV17,http://61.138.167.36:9901/tsfile/live/1042_1.m3u8
|
|
||||||
CCTV5+,http://61.138.167.36:9901/tsfile/live/0016_1.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
地方,#genre#
|
地方,#genre#
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
||||||
|
|
||||||
@@ -103,7 +88,6 @@ CCTV5+,http://61.138.167.36:9901/tsfile/live/0016_1.m3u8
|
|||||||
内蒙古卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020eeba44449d4f4913a2897e4e.m3u8?bitrate=2300&pt=5
|
内蒙古卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020eeba44449d4f4913a2897e4e.m3u8?bitrate=2300&pt=5
|
||||||
宁夏卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000205dfa4e06bf7243e30e5182c8.m3u8?bitrate=2300&pt=5
|
宁夏卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000205dfa4e06bf7243e30e5182c8.m3u8?bitrate=2300&pt=5
|
||||||
青海卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020abdd46bb8007f3d793b418f2.m3u8?bitrate=2300&pt=5
|
青海卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020abdd46bb8007f3d793b418f2.m3u8?bitrate=2300&pt=5
|
||||||
山东卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002013f84d40a0393b8549e48805.m3u8?bitrate=2300&pt=5
|
|
||||||
山西卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020ed0a4b74afc7e496c1bcc45c.m3u8?bitrate=2300&pt=5
|
山西卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020ed0a4b74afc7e496c1bcc45c.m3u8?bitrate=2300&pt=5
|
||||||
陕西卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002019984c0fa29ae0d57380da3a.m3u8?bitrate=2300&pt=5
|
陕西卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002019984c0fa29ae0d57380da3a.m3u8?bitrate=2300&pt=5
|
||||||
深圳卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020289041678b7585eb32637331.m3u8?bitrate=2300&pt=5
|
深圳卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020289041678b7585eb32637331.m3u8?bitrate=2300&pt=5
|
||||||
@@ -121,7 +105,7 @@ CCTV5+,http://61.138.167.36:9901/tsfile/live/0016_1.m3u8
|
|||||||
|
|
||||||
|
|
||||||
北京卡酷少儿,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225743/index.m3u8
|
北京卡酷少儿,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225743/index.m3u8
|
||||||
CGTN,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225745/index.m3u8
|
|
||||||
深圳卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225752/index.m3u8
|
深圳卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225752/index.m3u8
|
||||||
湖北卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225760/index.m3u8
|
湖北卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225760/index.m3u8
|
||||||
山西卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225763/index.m3u8
|
山西卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225763/index.m3u8
|
||||||
@@ -144,7 +128,7 @@ CGTN,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225745
|
|||||||
云南卫视,http://tvlive.ynradio.com/live/yunnanweishi/chunks.m3u8
|
云南卫视,http://tvlive.ynradio.com/live/yunnanweishi/chunks.m3u8
|
||||||
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
|
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8
|
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel13/1080p.m3u8
|
|
||||||
三沙卫视,https://pullsstv90080111.ssws.tv/live/SSTV20220729.m3u8
|
三沙卫视,https://pullsstv90080111.ssws.tv/live/SSTV20220729.m3u8
|
||||||
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
|
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
|
||||||
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8
|
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8
|
||||||
@@ -152,125 +136,46 @@ CGTN,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225745
|
|||||||
南京少儿,http://live.nbs.cn/channels/njtv/sepd/500k.m3u8
|
南京少儿,http://live.nbs.cn/channels/njtv/sepd/500k.m3u8
|
||||||
南京少儿,http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8
|
南京少儿,http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8
|
||||||
|
|
||||||
|
|
||||||
东方卫视,http://61.138.167.36:9901/tsfile/live/0107_1.m3u8
|
|
||||||
吉林卫视,http://61.138.167.36:9901/tsfile/live/0116_1.m3u8
|
|
||||||
河北卫视,http://61.138.167.36:9901/tsfile/live/0117_1.m3u8
|
|
||||||
广西卫视,http://61.138.167.36:9901/tsfile/live/0119_1.m3u8
|
|
||||||
贵州卫视,http://61.138.167.36:9901/tsfile/live/0120_1.m3u8
|
|
||||||
辽宁卫视,http://61.138.167.36:9901/tsfile/live/0121_1.m3u8
|
|
||||||
北京卫视,http://61.138.167.36:9901/tsfile/live/0122_1.m3u8
|
|
||||||
四川卫视,http://61.138.167.36:9901/tsfile/live/0123_1.m3u8
|
|
||||||
不是人卫视,http://61.138.167.36:9901/tsfile/live/0124_1.m3u8
|
|
||||||
广东卫视,http://61.138.167.36:9901/tsfile/live/0125_1.m3u8
|
|
||||||
深圳卫视,http://61.138.167.36:9901/tsfile/live/0126_1.m3u8
|
|
||||||
江苏卫视,http://61.138.167.36:9901/tsfile/live/0127_1.m3u8
|
|
||||||
安徽卫视,http://61.138.167.36:9901/tsfile/live/0130_1.m3u8
|
|
||||||
山东卫视,http://61.138.167.36:9901/tsfile/live/0131_1.m3u8
|
|
||||||
湖北卫视,http://61.138.167.36:9901/tsfile/live/0132_1.m3u8
|
|
||||||
天津卫视,http://61.138.167.36:9901/tsfile/live/0135_1.m3u8
|
|
||||||
东南卫视,http://61.138.167.36:9901/tsfile/live/0137_1.m3u8
|
|
||||||
江西卫视,http://61.138.167.36:9901/tsfile/live/0138_1.m3u8
|
|
||||||
河南卫视,http://61.138.167.36:9901/tsfile/live/0139_1.m3u8
|
|
||||||
甘肃卫视,http://61.138.167.36:9901/tsfile/live/0141_1.m3u8
|
|
||||||
黑龙江卫视,http://61.138.167.36:9901/tsfile/live/0143_1.m3u8
|
|
||||||
CHC动作电影,http://61.138.167.36:9901/tsfile/live/1014_1.m3u8
|
|
||||||
CHC高清电影,http://61.138.167.36:9901/tsfile/live/1015_1.m3u8
|
|
||||||
CHC家庭影院,http://61.138.167.36:9901/tsfile/live/1016_1.m3u8
|
|
||||||
SiTV都市剧场,http://61.138.167.36:9901/tsfile/live/1005_1.m3u8
|
|
||||||
SiTV乐游,http://61.138.167.36:9901/tsfile/live/1017_1.m3u8
|
|
||||||
SiTV游戏风云,http://61.138.167.36:9901/tsfile/live/1019_1.m3u8
|
|
||||||
SiTV动漫秀场,http://61.138.167.36:9901/tsfile/live/1020_1.m3u8
|
|
||||||
SiTV生活时尚,http://61.138.167.36:9901/tsfile/live/1021_1.m3u8
|
|
||||||
SiTV金色学堂,http://61.138.167.36:9901/tsfile/live/1023_1.m3u8
|
|
||||||
SiTV法制天地,http://61.138.167.36:9901/tsfile/live/1024_1.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
北京卫视,http://222.71.90.218:8888/newlive/live/hls/18/live.m3u8
|
|
||||||
东方卫视,http://222.71.90.218:8888/newlive/live/hls/19/live.m3u8
|
|
||||||
不是人卫视,http://222.71.90.218:8888/newlive/live/hls/20/live.m3u8
|
|
||||||
江苏卫视,http://222.71.90.218:8888/newlive/live/hls/21/live.m3u8
|
|
||||||
湖南卫视,http://222.71.90.218:8888/newlive/live/hls/22/live.m3u8
|
|
||||||
广东卫视,http://222.71.90.218:8888/newlive/live/hls/23/live.m3u8
|
|
||||||
深圳卫视,http://222.71.90.218:8888/newlive/live/hls/24/live.m3u8
|
|
||||||
黑龙江卫视,http://222.71.90.218:8888/newlive/live/hls/25/live.m3u8
|
|
||||||
山东卫视,http://222.71.90.218:8888/newlive/live/hls/26/live.m3u8
|
|
||||||
湖北卫视,http://222.71.90.218:8888/newlive/live/hls/27/live.m3u8
|
|
||||||
安徽卫视,http://222.71.90.218:8888/newlive/live/hls/28/live.m3u8
|
|
||||||
东南卫视,http://222.71.90.218:8888/newlive/live/hls/29/live.m3u8
|
|
||||||
江西卫视,http://222.71.90.218:8888/newlive/live/hls/30/live.m3u8
|
|
||||||
辽宁卫视,http://222.71.90.218:8888/newlive/live/hls/31/live.m3u8
|
|
||||||
天津卫视,http://222.71.90.218:8888/newlive/live/hls/32/live.m3u8
|
|
||||||
四川卫视,http://222.71.90.218:8888/newlive/live/hls/33/live.m3u8
|
|
||||||
重庆卫视,http://222.71.90.218:8888/newlive/live/hls/34/live.m3u8
|
|
||||||
贵州卫视,http://222.71.90.218:8888/newlive/live/hls/35/live.m3u8
|
|
||||||
海南卫视,http://222.71.90.218:8888/newlive/live/hls/36/live.m3u8
|
|
||||||
河北卫视,http://222.71.90.218:8888/newlive/live/hls/37/live.m3u8
|
|
||||||
河南卫视,http://222.71.90.218:8888/newlive/live/hls/38/live.m3u8
|
|
||||||
云南卫视,http://222.71.90.218:8888/newlive/live/hls/39/live.m3u8
|
|
||||||
广西卫视,http://222.71.90.218:8888/newlive/live/hls/40/live.m3u8
|
|
||||||
吉林卫视,http://222.71.90.218:8888/newlive/live/hls/41/live.m3u8
|
|
||||||
宁夏卫视,http://222.71.90.218:8888/newlive/live/hls/42/live.m3u8
|
|
||||||
青海卫视,http://222.71.90.218:8888/newlive/live/hls/43/live.m3u8
|
|
||||||
西藏卫视,http://222.71.90.218:8888/newlive/live/hls/44/live.m3u8
|
|
||||||
陕西卫视,http://222.71.90.218:8888/newlive/live/hls/45/live.m3u8
|
|
||||||
内蒙古卫视,http://222.71.90.218:8888/newlive/live/hls/46/live.m3u8
|
|
||||||
新疆卫视,http://222.71.90.218:8888/newlive/live/hls/47/live.m3u8
|
|
||||||
CETV1,http://222.71.90.218:8888/newlive/live/hls/48/live.m3u8
|
|
||||||
金鹰纪实,http://222.71.90.218:8888/newlive/live/hls/49/live.m3u8
|
|
||||||
北京卡酷少儿,http://222.71.90.218:8888/newlive/live/hls/50/live.m3u8
|
|
||||||
都市,http://222.71.90.218:8888/newlive/live/hls/51/live.m3u8
|
|
||||||
哈哈炫动,http://222.71.90.218:8888/newlive/live/hls/52/live.m3u8
|
|
||||||
东方影视,http://222.71.90.218:8888/newlive/live/hls/53/live.m3u8
|
|
||||||
纪实人文,http://222.71.90.218:8888/newlive/live/hls/54/live.m3u8
|
|
||||||
新闻综合,http://222.71.90.218:8888/newlive/live/hls/55/live.m3u8
|
|
||||||
五星体育,http://222.71.90.218:8888/newlive/live/hls/56/live.m3u8
|
|
||||||
第一财经,http://222.71.90.218:8888/newlive/live/hls/57/live.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
香港,#genre#
|
香港,#genre#
|
||||||
翡翠台,http://r.jdshipin.com/qClQf
|
翡翠台,http://r.jdshipin.com/qClQf
|
||||||
明珠台,http://r.jdshipin.com/ZQ4kN
|
明珠台,http://r.jdshipin.com/ZQ4kN
|
||||||
|
凤凰中文台,http://pi.0472.org/tv/cbn.php?id=xfjcHD
|
||||||
凤凰中文台,http://r.jdshipin.com/cCCzW
|
凤凰中文台,http://r.jdshipin.com/cCCzW
|
||||||
凤凰资讯台,http://r.jdshipin.com/0Rp07
|
凤凰资讯台,http://r.jdshipin.com/0Rp07
|
||||||
凤凰资讯台,http://kkwk1122.top/fh.php?id=fhzx
|
凤凰资讯台,http://kkwk1122.top/fh.php?id=fhzx
|
||||||
凤凰中文台,http://kkwk1122.top/fh.php?id=fhzw
|
凤凰中文台,http://kkwk1122.top/fh.php?id=fhzw
|
||||||
凤凰香港台,http://kkwk1122.top/fh.php?id=fhhk
|
香港卫视,http://zhibo.hkstv.tv/livestream/mutfysrq/playlist.m3u8
|
||||||
TVBS星河,http://r.jdshipin.com/sXuuD
|
RTHK32,https://rthktv32-live.akamaized.net/hls/live/2036819/RTHKTV32/stream2/streamPlaylist.m3u8
|
||||||
翡翠台,http://r.jdshipin.com/n90gt
|
翡翠台,http://r.jdshipin.com/n90gt
|
||||||
翡翠台,http://r.jdshipin.com/62WM7
|
翡翠台,http://r.jdshipin.com/62WM7
|
||||||
翡翠台,http://r.jdshipin.com/qrfbg
|
翡翠台,http://r.jdshipin.com/qrfbg
|
||||||
翡翠台,http://113.117.74.20:8081/hls/25/index.m3u8
|
翡翠台,http://113.117.74.20:8081/hls/25/index.m3u8
|
||||||
香港32,https://rthktv32-live.akamaized.net/hls/live/2036819/RTHKTV32/stream5/streamPlaylist.m3u8
|
澳门莲花,https://cntv.sbs/tv/lhws.php
|
||||||
澳門蓮花,https://p.ggiptv.com/v/macaulotustv.php
|
澳门莲花,https://p.ggiptv.com/v/macaulotustv.php
|
||||||
澳門蓮花,http://anren.live/HK/BiIOU11uLA.m3u8
|
澳门莲花,http://anren.live/HK/BiIOU11uLA.m3u8
|
||||||
澳門蓮花,http://nettvpro.live/hls/lotustv.php?zgangd
|
澳门莲花,http://nettvpro.live/hls/lotustv.php?zgangd
|
||||||
|
|
||||||
|
|
||||||
浙江,#genre#
|
浙江,#genre#
|
||||||
义乌新闻综合,https://44911.hlsplay.aodianyun.com/tv_radio_44911/tv_channel_1796.m3u8?auth_key=4830573978-0-0-92824c2c03f95906a3c49a4aa28f1709&extra_key=Yc1XsmxOKy2UBoPM4Wy5vCPsEYqnj06taCR2SRB2Xrg2w28NPilH03KdIbbM5wgSql-VBohSnoO9AOKl94q2t2DWMftz-XB-2qUX-UjXcS80StcSZahBFjrKLivXaRjiY5r2NOMKWMKFbv-S0Bz2G6iEXgCK8yGjtrFHDcPfAQEE0pvXq0Bwy34b7We8zARN&ali_ffmpeg_version=mpengine
|
义乌新闻综合,https://44911.hlsplay.aodianyun.com/tv_radio_44911/tv_channel_1796.m3u8?auth_key=4830573978-0-0-92824c2c03f95906a3c49a4aa28f1709&extra_key=Yc1XsmxOKy2UBoPM4Wy5vCPsEYqnj06taCR2SRB2Xrg2w28NPilH03KdIbbM5wgSql-VBohSnoO9AOKl94q2t2DWMftz-XB-2qUX-UjXcS80StcSZahBFjrKLivXaRjiY5r2NOMKWMKFbv-S0Bz2G6iEXgCK8yGjtrFHDcPfAQEE0pvXq0Bwy34b7We8zARN&ali_ffmpeg_version=mpengine
|
||||||
|
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/1080p.m3u8
|
||||||
|
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/1080p.m3u8
|
||||||
|
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/1080p.m3u8
|
||||||
|
浙江影视娱乐,http://hw-m-l.cztv.com/channels/lantian/channel05/1080p.m3u8
|
||||||
|
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/1080p.m3u8
|
||||||
|
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/1080p.m3u8
|
||||||
|
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel08/1080p.m3u8
|
||||||
|
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/1080p.m3u8
|
||||||
|
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/1080p.m3u8
|
||||||
|
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8?zzhed
|
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8?zzhed
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/720p.m3u8?zzhed
|
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/360p.m3u8?zzhed
|
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8?zzhed
|
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8?zzhed
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/720p.m3u8?zzhed
|
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/360p.m3u8?zzhed
|
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8?zzhed
|
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8?zzhed
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/720p.m3u8?zzhed
|
浙江影视娱乐,http://hw-m-l.cztv.com/channels/lantian/channel005/1080p.m3u8?zzhed
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/360p.m3u8?zzhed
|
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8?zzhed
|
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8?zzhed
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/720p.m3u8?zzhed
|
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/360p.m3u8?zzhed
|
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8?zzhed
|
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8?zzhed
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/720p.m3u8?zzhed
|
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/360p.m3u8?zzhed
|
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8?zzhed
|
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8?zzhed
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/720p.m3u8?zzhed
|
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/360p.m3u8?zzhed
|
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8?zzhed
|
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8?zzhed
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/720p.m3u8?zzhed
|
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/360p.m3u8?zzhed
|
|
||||||
|
|
||||||
HTV-2明珠,http://183.129.242.178:3333/tsfile/live/1016_1.m3u8
|
HTV-2明珠,http://183.129.242.178:3333/tsfile/live/1016_1.m3u8
|
||||||
HTV-3生活,http://183.129.242.178:3333/tsfile/live/1017_1.m3u8
|
HTV-3生活,http://183.129.242.178:3333/tsfile/live/1017_1.m3u8
|
||||||
|
|||||||
Binary file not shown.
+39
-10
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"wallpaper": "https://picsum.photos/1280/720/?blur=2",
|
"wallpaper": "https://picsum.photos/1280/720/?blur=2",
|
||||||
@@ -72,6 +72,17 @@
|
|||||||
"filterable": 0,
|
"filterable": 0,
|
||||||
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt"
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_Upyunso",
|
||||||
|
"name": "📀UP云搜(搜索)",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Upyunso",
|
||||||
|
"playerType": 1,
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 0,
|
||||||
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_XYQHikerAL_玩偶哥哥",
|
"key": "csp_XYQHikerAL_玩偶哥哥",
|
||||||
"name": "📀玩偶哥哥(优)",
|
"name": "📀玩偶哥哥(优)",
|
||||||
@@ -366,6 +377,16 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./json/极影网.json"
|
"ext": "./json/极影网.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_XYQHiker_高清MP4",
|
||||||
|
"name": "🧲高清MP4(XYQH)",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_XYQHiker",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/高清MP4.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_Bili",
|
"key": "csp_Bili",
|
||||||
"name": "🐞哔哩综合",
|
"name": "🐞哔哩综合",
|
||||||
@@ -1279,9 +1300,9 @@
|
|||||||
"url": "https://jx.xmflv.com/?url="
|
"url": "https://jx.xmflv.com/?url="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "-盘古-",
|
"name": "-爱酷-",
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"url": "https://www.pangujiexi.cc/jiexi.php?url=",
|
"url": "https://jx.zhanlangbu.com/?url=",
|
||||||
"ext": {
|
"ext": {
|
||||||
"flag": [
|
"flag": [
|
||||||
"qq",
|
"qq",
|
||||||
@@ -1312,12 +1333,7 @@
|
|||||||
{
|
{
|
||||||
"name": "-777-",
|
"name": "-777-",
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"url": "https://jx.777jiexi.com/player/?url="
|
"url": "https://jx.bozrc.com:4433/player/?url="
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "-咸鱼-",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://jx.xyflv.com/?url="
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "-全看-",
|
"name": "-全看-",
|
||||||
@@ -1361,7 +1377,9 @@
|
|||||||
{
|
{
|
||||||
"host": "*",
|
"host": "*",
|
||||||
"rule": [
|
"rule": [
|
||||||
"default.365yg.com"
|
"default.365yg.com",
|
||||||
|
"video_mp4",
|
||||||
|
"video/tos"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1436,6 +1454,17 @@
|
|||||||
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.666667,[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.666667,[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "暴风广告",
|
||||||
|
"hosts": [
|
||||||
|
"bfzy",
|
||||||
|
"s5.bfzycdn"
|
||||||
|
],
|
||||||
|
"regex": [
|
||||||
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:3,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||||
|
"#EXTINF.*?\\s+.*?1o.*?\\.ts\\s+"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "磁力广告",
|
"name": "磁力广告",
|
||||||
"hosts": [
|
"hosts": [
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ var rule = {
|
|||||||
"User-Agent":"PC_UA",
|
"User-Agent":"PC_UA",
|
||||||
"Referer": "https://www.bilibili.com",
|
"Referer": "https://www.bilibili.com",
|
||||||
// "Cookie":"$bili_cookie"
|
// "Cookie":"$bili_cookie"
|
||||||
"Cookie":"https://ghproxy.net/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/txt/cookie.txt"
|
"Cookie":"http://127.0.0.1:9978/file/tvfan/cookie.txt"
|
||||||
},
|
},
|
||||||
timeout:5000,
|
timeout:5000,
|
||||||
limit:8,
|
limit:8,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cookie": "buvid3=8B57D3BA-607A-1E85-018A-E8C430023CED42659infoc; b_lsid=BEB8EE7F_18742FF8C2E; bsource=search_baidu; _uuid=DE810E367-B52C-AF6E-A612-EDF4C31567F358591infoc; b_nut=100; buvid_fp=711a632b5c876fa8bbcf668c1efba551; SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7; sid=5h4ruv6o; buvid4=978E9208-13DA-F87A-3DC0-0B8EDF46E80434329-123040301-dWliG5BMrUb70r3g583u7w%3D%3D",
|
"cookie": "http://127.0.0.1:9978/file/tvfan/cookie.txt",
|
||||||
"classes": [
|
"classes": [
|
||||||
{
|
{
|
||||||
"type_name": "搞笑",
|
"type_name": "搞笑",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cookie": "buvid3=8B57D3BA-607A-1E85-018A-E8C430023CED42659infoc; b_lsid=BEB8EE7F_18742FF8C2E; bsource=search_baidu; _uuid=DE810E367-B52C-AF6E-A612-EDF4C31567F358591infoc; b_nut=100; buvid_fp=711a632b5c876fa8bbcf668c1efba551; SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7; sid=5h4ruv6o; buvid4=978E9208-13DA-F87A-3DC0-0B8EDF46E80434329-123040301-dWliG5BMrUb70r3g583u7w%3D%3D",
|
"cookie": "http://127.0.0.1:9978/file/tvfan/cookie.txt",
|
||||||
"classes": [
|
"classes": [
|
||||||
{
|
{
|
||||||
"type_name": "7年级语文",
|
"type_name": "7年级语文",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cookie": "buvid3=8B57D3BA-607A-1E85-018A-E8C430023CED42659infoc; b_lsid=BEB8EE7F_18742FF8C2E; bsource=search_baidu; _uuid=DE810E367-B52C-AF6E-A612-EDF4C31567F358591infoc; b_nut=100; buvid_fp=711a632b5c876fa8bbcf668c1efba551; SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7; sid=5h4ruv6o; buvid4=978E9208-13DA-F87A-3DC0-0B8EDF46E80434329-123040301-dWliG5BMrUb70r3g583u7w%3D%3D",
|
"cookie": "http://127.0.0.1:9978/file/tvfan/cookie.txt",
|
||||||
"classes": [
|
"classes": [
|
||||||
{
|
{
|
||||||
"type_name": "1年级语文",
|
"type_name": "1年级语文",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cookie": "buvid3=8B57D3BA-607A-1E85-018A-E8C430023CED42659infoc; b_lsid=BEB8EE7F_18742FF8C2E; bsource=search_baidu; _uuid=DE810E367-B52C-AF6E-A612-EDF4C31567F358591infoc; b_nut=100; buvid_fp=711a632b5c876fa8bbcf668c1efba551; SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7; sid=5h4ruv6o; buvid4=978E9208-13DA-F87A-3DC0-0B8EDF46E80434329-123040301-dWliG5BMrUb70r3g583u7w%3D%3D",
|
"cookie": "http://127.0.0.1:9978/file/tvfan/cookie.txt",
|
||||||
"classes": [
|
"classes": [
|
||||||
{
|
{
|
||||||
"type_name": "儿童",
|
"type_name": "儿童",
|
||||||
|
|||||||
@@ -1,2 +1,61 @@
|
|||||||
{ "cookie": "buvid3=8B57D3BA-607A-1E85-018A-E8C430023CED42659infoc; b_lsid=BEB8EE7F_18742FF8C2E; bsource=search_baidu; _uuid=DE810E367-B52C-AF6E-A612-EDF4C31567F358591infoc; b_nut=100; buvid_fp=711a632b5c876fa8bbcf668c1efba551; SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7; sid=5h4ruv6o; buvid4=978E9208-13DA-F87A-3DC0-0B8EDF46E80434329-123040301-dWliG5BMrUb70r3g583u7w%3D%3D",
|
{
|
||||||
"classes": [ { "type_name": "儿童早教", "type_id": "儿童早教" }, { "type_name": "儿童启蒙故事", "type_id": "儿童启蒙故事" }, { "type_name": "儿童英语启蒙", "type_id": "儿童英语启蒙" }, { "type_name": "儿童歌曲", "type_id": "儿童歌曲" }, { "type_name": "儿童绘画", "type_id": "儿童绘画" }, { "type_name": "睡前故事", "type_id": "睡前故事" }, { "type_name": "儿童动画", "type_id": "儿童动画" }, { "type_name": "儿童音乐", "type_id": "儿童音乐" }, { "type_name": "儿童安全教育", "type_id": "儿童安全教育" }, { "type_name": "贝瓦儿歌", "type_id": "贝瓦儿歌" }, { "type_name": "悟空识字", "type_id": "悟空识字" }, { "type_name": "宝宝巴士", "type_id": "宝宝巴士" }, { "type_name": "儿歌多多", "type_id": "儿歌多多" }, { "type_name": "学而思", "type_id": "学而思" } ] }
|
"cookie": "http://127.0.0.1:9978/file/tvfan/cookie.txt",
|
||||||
|
"classes": [
|
||||||
|
{
|
||||||
|
"type_name": "儿童早教",
|
||||||
|
"type_id": "儿童早教"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "儿童启蒙故事",
|
||||||
|
"type_id": "儿童启蒙故事"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "儿童英语启蒙",
|
||||||
|
"type_id": "儿童英语启蒙"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "儿童歌曲",
|
||||||
|
"type_id": "儿童歌曲"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "儿童绘画",
|
||||||
|
"type_id": "儿童绘画"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "睡前故事",
|
||||||
|
"type_id": "睡前故事"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "儿童动画",
|
||||||
|
"type_id": "儿童动画"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "儿童音乐",
|
||||||
|
"type_id": "儿童音乐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "儿童安全教育",
|
||||||
|
"type_id": "儿童安全教育"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "贝瓦儿歌",
|
||||||
|
"type_id": "贝瓦儿歌"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "悟空识字",
|
||||||
|
"type_id": "悟空识字"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "宝宝巴士",
|
||||||
|
"type_id": "宝宝巴士"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "儿歌多多",
|
||||||
|
"type_id": "儿歌多多"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "学而思",
|
||||||
|
"type_id": "学而思"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cookie": "buvid3=8B57D3BA-607A-1E85-018A-E8C430023CED42659infoc; b_lsid=BEB8EE7F_18742FF8C2E; bsource=search_baidu; _uuid=DE810E367-B52C-AF6E-A612-EDF4C31567F358591infoc; b_nut=100; buvid_fp=711a632b5c876fa8bbcf668c1efba551; SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7; sid=5h4ruv6o; buvid4=978E9208-13DA-F87A-3DC0-0B8EDF46E80434329-123040301-dWliG5BMrUb70r3g583u7w%3D%3D",
|
"cookie": "http://127.0.0.1:9978/file/tvfan/cookie.txt",
|
||||||
"classes": [
|
"classes": [
|
||||||
{
|
{
|
||||||
"type_name": "高一语文",
|
"type_name": "高一语文",
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"规则名": "高清MP4",
|
||||||
|
"规则作者": "香雅情",
|
||||||
|
"请求头参数": "PC_UA",
|
||||||
|
"网页编码格式": "UTF-8",
|
||||||
|
"图片是否需要代理": "1",
|
||||||
|
"是否开启获取首页数据": "1",
|
||||||
|
"首页推荐链接": "https://www.97tvs.com",
|
||||||
|
"首页列表数组规则": "body&&.masonry",
|
||||||
|
"首页片单列表数组规则": "li",
|
||||||
|
"首页片单是否Jsoup写法": "1",
|
||||||
|
"分类链接": "https://www.97tvs.com/{cateId}/page/{catePg}[firstPage=https://www.97tvs.com/{cateId}]",
|
||||||
|
"分类名称": "动作片&科幻片&爱情片&喜剧片&剧情片&惊悚片&战争片&灾难片&罪案片&动画片&综艺&电视剧",
|
||||||
|
"分类名称替换词": "action&science&love&comedy&story&thriller&war&disaster&crime&cartoon&variety&sitcoms",
|
||||||
|
"筛选数据": {},
|
||||||
|
"分类截取模式": "1",
|
||||||
|
"分类列表数组规则": ".masonry||#posts-list&&li||.entry",
|
||||||
|
"分类片单是否Jsoup写法": "1",
|
||||||
|
"分类片单标题": "h2&&Text",
|
||||||
|
"分类片单链接": "a&&href",
|
||||||
|
"分类片单图片": "img&&src",
|
||||||
|
"分类片单副标题": ".info_date&&Text",
|
||||||
|
"分类片单链接加前缀": "",
|
||||||
|
"分类片单链接加后缀": "",
|
||||||
|
"搜索请求头参数": "User-Agent$PC_UA#Cookie$esc_search_captcha=1",
|
||||||
|
"搜索链接": "https://www.97tvs.com/?s={wd}",
|
||||||
|
"POST请求数据": "",
|
||||||
|
"搜索截取模式": "1",
|
||||||
|
"搜索列表数组规则": ".masonry&&li",
|
||||||
|
"搜索片单是否Jsoup写法": "1",
|
||||||
|
"搜索片单图片": "img&&src",
|
||||||
|
"搜索片单标题": "h2&&Text",
|
||||||
|
"搜索片单链接": "a&&href",
|
||||||
|
"搜索片单副标题": ".info_date&&Text",
|
||||||
|
"搜索片单链接加前缀": "",
|
||||||
|
"搜索片单链接加后缀": "",
|
||||||
|
"链接是否直接播放": "0",
|
||||||
|
"直接播放链接加前缀": "",
|
||||||
|
"直接播放链接加后缀": "",
|
||||||
|
"直接播放直链视频请求头": "",
|
||||||
|
"详情是否Jsoup写法": "0",
|
||||||
|
"类型详情": "",
|
||||||
|
"年代详情": "",
|
||||||
|
"地区详情": "",
|
||||||
|
"演员详情": "",
|
||||||
|
"简介详情": "",
|
||||||
|
"线路列表数组规则": "",
|
||||||
|
"线路标题": "",
|
||||||
|
"播放列表数组规则": "body&&#post_content",
|
||||||
|
"选集列表数组规则": "a[href^=magnet]||a[href^=ed2K]",
|
||||||
|
"选集标题链接是否Jsoup写法": "1",
|
||||||
|
"选集标题": "Text",
|
||||||
|
"选集链接": "a&&href",
|
||||||
|
"是否反转选集序列": "0",
|
||||||
|
"选集链接加前缀": "",
|
||||||
|
"选集链接加后缀": "",
|
||||||
|
"分析MacPlayer": "0",
|
||||||
|
"是否开启手动嗅探": "0",
|
||||||
|
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv",
|
||||||
|
"手动嗅探视频链接过滤词": ".html"
|
||||||
|
}
|
||||||
+81
-196
@@ -10,22 +10,43 @@ CCTV7,http://hms284nc1972679584.live.aikan.miguvideo.com/wh7f454c46tw4211155753_
|
|||||||
CCTV8,http://hms84nc1972679564.live.aikan.miguvideo.com/wh7f454c46tw2243817462_1836799824/wd_r2/ocn/cctv8hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115084753&ContentId=265667466&timezone=UTC&mtv_session=077374df50cdebf0ab55b2ec30d2f01a&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=8b9b358180e9e344fe45e67912ce6985
|
CCTV8,http://hms84nc1972679564.live.aikan.miguvideo.com/wh7f454c46tw2243817462_1836799824/wd_r2/ocn/cctv8hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115084753&ContentId=265667466&timezone=UTC&mtv_session=077374df50cdebf0ab55b2ec30d2f01a&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=8b9b358180e9e344fe45e67912ce6985
|
||||||
CCTV9,http://hms444nc1972679601.live.aikan.miguvideo.com/wh7f454c46tw4260577431_-1084507862/migu/kailu/20200324/cctv9hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208131044&ContentId=265667202&timezone=UTC&mtv_session=9444a4df4cb7524a1ec85c4d44200abc&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=efdbccd2a72ff1ba2eabbf08f475f7c6
|
CCTV9,http://hms444nc1972679601.live.aikan.miguvideo.com/wh7f454c46tw4260577431_-1084507862/migu/kailu/20200324/cctv9hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208131044&ContentId=265667202&timezone=UTC&mtv_session=9444a4df4cb7524a1ec85c4d44200abc&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=efdbccd2a72ff1ba2eabbf08f475f7c6
|
||||||
CCTV10,http://hms424nc1972679599.live.aikan.miguvideo.com/wh7f454c46tw2383135402_1265174830/wd_r2/ocn/cctv10hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115085013&ContentId=265667631&timezone=UTC&mtv_session=451a79654bec6f8926b5017302146772&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=e74690616e29be77ff1a1992b303b861
|
CCTV10,http://hms424nc1972679599.live.aikan.miguvideo.com/wh7f454c46tw2383135402_1265174830/wd_r2/ocn/cctv10hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115085013&ContentId=265667631&timezone=UTC&mtv_session=451a79654bec6f8926b5017302146772&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=e74690616e29be77ff1a1992b303b861
|
||||||
CCTV11,http://61.138.167.36:9901/tsfile/live/0011_1.m3u8
|
|
||||||
CCTV11,http://cyz32.livehbindex.hbcatv.cn/live/5000002086444f0886ad7032ad8f756b.m3u8?bitrate=2300&pt=5
|
CCTV11,https://live.goodiptv.club/api/cqyx.php?id=cctv11HD
|
||||||
|
CCTV11,http://120.196.232.124:8088/rrs03.hw.gmcc.net/PLTV/651/224/3221226714/1.m3u8?
|
||||||
|
|
||||||
CCTV12,http://hms204nc1972679577.live.aikan.miguvideo.com/wh7f454c46tw1174495643_-1245391177/migu/kailu/20200324/cctv12hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020243&ContentId=265667607&timezone=UTC&mtv_session=7581c6271c0379b8ca8b268ff7804765&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=3906a8574a42ff13aba3e255be4cd8e3
|
CCTV12,http://hms204nc1972679577.live.aikan.miguvideo.com/wh7f454c46tw1174495643_-1245391177/migu/kailu/20200324/cctv12hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020243&ContentId=265667607&timezone=UTC&mtv_session=7581c6271c0379b8ca8b268ff7804765&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=3906a8574a42ff13aba3e255be4cd8e3
|
||||||
CCTV13,http://hms184nc1972679575.live.aikan.miguvideo.com/wh7f454c46tw946205927_-649996709/envivo_x/2018/SD/cctv13/2000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208132705&ContentId=265667474&timezone=UTC&mtv_session=36bf599c0c4bc785fd46aaf0ba40ffe7&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=91a8a1c4652526079a5b0e294d5bc18d
|
CCTV13,http://hms184nc1972679575.live.aikan.miguvideo.com/wh7f454c46tw946205927_-649996709/envivo_x/2018/SD/cctv13/2000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208132705&ContentId=265667474&timezone=UTC&mtv_session=36bf599c0c4bc785fd46aaf0ba40ffe7&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=91a8a1c4652526079a5b0e294d5bc18d
|
||||||
CCTV14,http://hms344nc1972679590.live.aikan.miguvideo.com/wh7f454c46tw1297666621_-728046298/wd_r2/ocn/cctv14hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020446&ContentId=265667325&timezone=UTC&mtv_session=ad6cfd6b6dabe31801ca54a4c87f1bac&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=2757ab80a8dee98edfcfd1ee767a17b8
|
CCTV14,http://hms344nc1972679590.live.aikan.miguvideo.com/wh7f454c46tw1297666621_-728046298/wd_r2/ocn/cctv14hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020446&ContentId=265667325&timezone=UTC&mtv_session=ad6cfd6b6dabe31801ca54a4c87f1bac&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=2757ab80a8dee98edfcfd1ee767a17b8
|
||||||
CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390_1468621622/migu/kailu/20200324/cctv15hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020617&ContentId=265667535&timezone=UTC&mtv_session=e1254803553b7cace3a119612bf266d8&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=7ba98a3a39d853487109bebe5ed31c43
|
CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390_1468621622/migu/kailu/20200324/cctv15hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020617&ContentId=265667535&timezone=UTC&mtv_session=e1254803553b7cace3a119612bf266d8&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=7ba98a3a39d853487109bebe5ed31c43
|
||||||
|
|
||||||
|
CCTV16,https://live.goodiptv.club/api/cqyx.php?id=cctv16HD
|
||||||
|
CCTV16,http://120.196.232.124:8088/rrs03.hw.gmcc.net/PLTV/651/224/3221226825/1.m3u8?$8M1080
|
||||||
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
||||||
|
|
||||||
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
||||||
CCTV1,http://222.71.90.218:8888/newlive/live/hls/2/live.m3u8
|
|
||||||
CCTV5,http://222.71.90.218:8888/newlive/live/hls/6/live.m3u8
|
CCTV1,https://live.goodiptv.club/api/cqyx.php?id=cctv1HD
|
||||||
CCTV6,http://222.71.90.218:8888/newlive/live/hls/7/live.m3u8
|
CCTV2,https://live.goodiptv.club/api/cqyx.php?id=cctv2HD
|
||||||
CCTV10,http://222.71.90.218:8888/newlive/live/hls/11/live.m3u8
|
CCTV3,https://live.goodiptv.club/api/cqyx.php?id=cctv3HD
|
||||||
CCTV14,http://222.71.90.218:8888/newlive/live/hls/15/live.m3u8
|
CCTV4,https://live.goodiptv.club/api/cqyx.php?id=cctv4HD
|
||||||
CCTV17,http://222.71.90.218:8888/newlive/live/hls/58/live.m3u8
|
CCTV5,https://live.goodiptv.club/api/cqyx.php?id=cctv5HD
|
||||||
|
CCTV6,https://live.goodiptv.club/api/cqyx.php?id=cctv6HD
|
||||||
|
CCTV7,https://live.goodiptv.club/api/cqyx.php?id=cctv7HD
|
||||||
|
CCTV8,https://live.goodiptv.club/api/cqyx.php?id=cctv8HD
|
||||||
|
CCTV9,https://live.goodiptv.club/api/cqyx.php?id=cctv9HD
|
||||||
|
CCTV10,https://live.goodiptv.club/api/cqyx.php?id=cctv10HD
|
||||||
|
CCTV11,https://live.goodiptv.club/api/cqyx.php?id=cctv11HD
|
||||||
|
CCTV12,https://live.goodiptv.club/api/cqyx.php?id=cctv12HD
|
||||||
|
CCTV13,https://live.goodiptv.club/api/cqyx.php?id=cctv13HD
|
||||||
|
CCTV14,https://live.goodiptv.club/api/cqyx.php?id=cctv14HD
|
||||||
|
CCTV15,https://live.goodiptv.club/api/cqyx.php?id=cctv15HD
|
||||||
|
CCTV16,https://live.goodiptv.club/api/cqyx.php?id=cctv16HD
|
||||||
|
CCTV17,https://live.goodiptv.club/api/cqyx.php?id=cctv17HD
|
||||||
|
CCTV5+,https://live.goodiptv.club/api/cqyx.php?id=cctv5SportHD
|
||||||
|
CCTV4K,https://live.goodiptv.club/api/cqyx.php?id=CCTV4K
|
||||||
|
CCTV16 4K,https://live.goodiptv.club/api/cqyx.php?id=CCTV16_4K
|
||||||
|
|
||||||
|
|
||||||
CCTV1,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225804/index.m3u8
|
CCTV1,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225804/index.m3u8
|
||||||
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226195/index.m3u8
|
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226195/index.m3u8
|
||||||
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226224/index.m3u8
|
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226224/index.m3u8
|
||||||
@@ -41,110 +62,53 @@ CCTV15,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/32212257
|
|||||||
CCTV4,http://jycb.f3322.net:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV4,http://jycb.f3322.net:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV5+,http://jycb.f3322.net:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV5+,http://jycb.f3322.net:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
|
||||||
CCTV1,http://cyz32.livehbindex.hbcatv.cn/live/50000020935c4d59965a1cbf159c9be9.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV2,http://cyz32.livehbindex.hbcatv.cn/live/50000020d7ae404dbd55b5d0ba6fe735.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV3,http://cyz32.livehbindex.hbcatv.cn/live/50000020425540c3b4e7c41ca3eabb76.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV4,http://cyz32.livehbindex.hbcatv.cn/live/5b0dff5235e94ba8bff8731427145289.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV5,http://cyz32.livehbindex.hbcatv.cn/live/500000206cd748d58f41b13aa2754139.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV5+,http://cyz32.livehbindex.hbcatv.cn/live/50000020484943edba96ac9f93f858ce.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV6,http://cyz32.livehbindex.hbcatv.cn/live/50000020da6d4c40a2ca3b1bdc786016.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV7,http://cyz32.livehbindex.hbcatv.cn/live/500000204daa45af99b5800a528fac21.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV8,http://cyz32.livehbindex.hbcatv.cn/live/500000202d8c4f56ba03e623caa09f1b.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV9,http://cyz32.livehbindex.hbcatv.cn/live/50000020edf54f6c92778d0ccdfcca30.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV10,http://cyz32.livehbindex.hbcatv.cn/live/a66832f3323643189c3a0e91f9fad3e3.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV11,http://cyz32.livehbindex.hbcatv.cn/live/5000002086444f0886ad7032ad8f756b.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV12,http://cyz32.livehbindex.hbcatv.cn/live/fbe7688bc539461da71ff649e4ba1d75.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV13,http://cyz32.livehbindex.hbcatv.cn/live/5000002081f5478882f00a0f9be4b01f.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV14,http://cyz32.livehbindex.hbcatv.cn/live/8a22035194884b1eb5515aac434c313c.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV15,http://cyz32.livehbindex.hbcatv.cn/live/50000020f44f4f4b8aa33925dba216df.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV16,http://cyz32.livehbindex.hbcatv.cn/live/50000020c65d4a6b9b4e278405124734.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV17,http://cyz32.livehbindex.hbcatv.cn/live/500000208b8d41c4b436ef32428c229d.m3u8?bitrate=2300&pt=5
|
|
||||||
|
|
||||||
CCTV1,http://61.138.167.36:9901/tsfile/live/0001_1.m3u8
|
|
||||||
CCTV2,http://61.138.167.36:9901/tsfile/live/0002_1.m3u8
|
|
||||||
CCTV3,http://61.138.167.36:9901/tsfile/live/0003_1.m3u8
|
|
||||||
CCTV4,http://61.138.167.36:9901/tsfile/live/0004_1.m3u8
|
|
||||||
CCTV5,http://61.138.167.36:9901/tsfile/live/0005_1.m3u8
|
|
||||||
CCTV6,http://61.138.167.36:9901/tsfile/live/0006_1.m3u8
|
|
||||||
CCTV7,http://61.138.167.36:9901/tsfile/live/0007_1.m3u8
|
|
||||||
CCTV8,http://61.138.167.36:9901/tsfile/live/0008_1.m3u8
|
|
||||||
CCTV9,http://61.138.167.36:9901/tsfile/live/0009_1.m3u8
|
|
||||||
CCTV10,http://61.138.167.36:9901/tsfile/live/0010_1.m3u8
|
|
||||||
CCTV11,http://61.138.167.36:9901/tsfile/live/0011_1.m3u8
|
|
||||||
CCTV12,http://61.138.167.36:9901/tsfile/live/0012_1.m3u8
|
|
||||||
CCTV13,http://61.138.167.36:9901/tsfile/live/0013_1.m3u8
|
|
||||||
CCTV14,http://61.138.167.36:9901/tsfile/live/0014_1.m3u8
|
|
||||||
CCTV15,http://61.138.167.36:9901/tsfile/live/0015_1.m3u8
|
|
||||||
CCTV16,http://61.138.167.36:9901/tsfile/live/1061_1.m3u8
|
|
||||||
CCTV16-4K,http://61.138.167.36:9901/tsfile/live/1053_1.m3u8
|
|
||||||
CCTV17,http://61.138.167.36:9901/tsfile/live/1042_1.m3u8
|
|
||||||
CCTV5+,http://61.138.167.36:9901/tsfile/live/0016_1.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
地方,#genre#
|
地方,#genre#
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
浙江卫视,http://hw-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
||||||
|
|
||||||
不是人卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002045414da0bcca7fb08fd34c8a.m3u8?bitrate=2300&pt=5
|
湖南卫视,https://live.goodiptv.club/api/cqyx.php?id=hunanHD
|
||||||
湖南卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020c9ea4ce4bf3cfbbb7f8b8bb7.m3u8?bitrate=2300&pt=5
|
重庆卫视,https://live.goodiptv.club/api/cqyx.php?id=chongqingHD
|
||||||
江苏卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000201708473e9f4e1dbb0361de6b.m3u8?bitrate=2300&pt=5
|
江苏卫视,https://live.goodiptv.club/api/cqyx.php?id=jiangsuHD
|
||||||
东方卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000203860417eb7f08f9270fc1155.m3u8?bitrate=2300&pt=5
|
北京卫视,https://live.goodiptv.club/api/cqyx.php?id=beijingHD
|
||||||
北京卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020539e48f392fbcbba5cf7f245.m3u8?bitrate=2300&pt=5
|
浙江卫视,https://live.goodiptv.club/api/cqyx.php?id=zhejiangHD
|
||||||
安徽卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020d0ab40578faaa8a023ce4d5c.m3u8?bitrate=2300&pt=5
|
东方卫视,https://live.goodiptv.club/api/cqyx.php?id=shanghaiHD
|
||||||
广东卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000206bc6413cb38dc9ca586ffe3f.m3u8?bitrate=2300&pt=5
|
深圳卫视,https://live.goodiptv.club/api/cqyx.php?id=shenzhenHD
|
||||||
东南卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020c18c4f03a2107aa78ced8fff.m3u8?bitrate=2300&pt=5
|
辽宁卫视,https://live.goodiptv.club/api/cqyx.php?id=liaoningHD
|
||||||
海南卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020741c4046820cd89d5ecbd401.m3u8?bitrate=2300&pt=5
|
天津卫视,https://live.goodiptv.club/api/cqyx.php?id=tianjinHD
|
||||||
河北卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020d6be4c4ba70a4e3261b14544.m3u8?bitrate=2300&pt=5
|
贵州卫视,https://live.goodiptv.club/api/cqyx.php?id=guizhouHD
|
||||||
河南卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000201d7c47a8b9b127d69fb816ac.m3u8?bitrate=2300&pt=5
|
四川卫视,https://live.goodiptv.club/api/cqyx.php?id=sichuanHD
|
||||||
黑龙江卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020281749ed995f2824759051fa.m3u8?bitrate=2300&pt=5
|
东南卫视,https://live.goodiptv.club/api/cqyx.php?id=dongnanHD
|
||||||
湖北卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020273747628129718a5717b2dd.m3u8?bitrate=2300&pt=5
|
黑龙江卫视,https://live.goodiptv.club/api/cqyx.php?id=heilongjiangHD
|
||||||
吉林卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000205c15461b956f19f9b6896ad6.m3u8?bitrate=2300&pt=5
|
江西卫视,https://live.goodiptv.club/api/cqyx.php?id=jiangxiHD
|
||||||
江西卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020728a439baf65ce94f8cf3e30.m3u8?bitrate=2300&pt=5
|
吉林卫视,https://live.goodiptv.club/api/cqyx.php?id=jilinHD
|
||||||
辽宁卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002019d84b0ba201007677bbf28c.m3u8?bitrate=2300&pt=5
|
广西卫视,https://live.goodiptv.club/api/cqyx.php?id=guangxiHD
|
||||||
内蒙古卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020eeba44449d4f4913a2897e4e.m3u8?bitrate=2300&pt=5
|
广东卫视,https://live.goodiptv.club/api/cqyx.php?id=guangdongHD
|
||||||
宁夏卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000205dfa4e06bf7243e30e5182c8.m3u8?bitrate=2300&pt=5
|
东南卫视,https://live.goodiptv.club/api/cqyx.php?id=henanHD
|
||||||
青海卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020abdd46bb8007f3d793b418f2.m3u8?bitrate=2300&pt=5
|
第一剧场,https://live.goodiptv.club/api/cqyx.php?id=diyijuchangHD
|
||||||
山东卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002013f84d40a0393b8549e48805.m3u8?bitrate=2300&pt=5
|
都市剧场,https://live.goodiptv.club/api/cqyx.php?id=dsjcHD
|
||||||
山西卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020ed0a4b74afc7e496c1bcc45c.m3u8?bitrate=2300&pt=5
|
动漫秀场,https://live.goodiptv.club/api/cqyx.php?id=dmxcHD
|
||||||
陕西卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002019984c0fa29ae0d57380da3a.m3u8?bitrate=2300&pt=5
|
魅力足球,https://live.goodiptv.club/api/cqyx.php?id=mlzqHD
|
||||||
深圳卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020289041678b7585eb32637331.m3u8?bitrate=2300&pt=5
|
风云剧场,https://live.goodiptv.club/api/cqyx.php?id=fyjcHD
|
||||||
四川卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020407a4a109f5dfc6f26dbf5eb.m3u8?bitrate=2300&pt=5
|
求索纪录,https://live.goodiptv.club/api/cqyx.php?id=qsjlHD
|
||||||
天津卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020bbc84ee1afd7177a073393d7.m3u8?bitrate=2300&pt=5
|
兵器科技,https://live.goodiptv.club/api/cqyx.php?id=bqkjHD
|
||||||
西藏卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020816449349b10593cfdde8311.m3u8?bitrate=2300&pt=5
|
游戏风云,https://live.goodiptv.club/api/cqyx.php?id=yxfyHD
|
||||||
新疆卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000201e484cbeb064a31201e3dd05.m3u8?bitrate=2300&pt=5
|
怀旧剧场,https://live.goodiptv.club/api/cqyx.php?id=hjjcHD
|
||||||
云南卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020a2f74b03928347fb0b02768b.m3u8?bitrate=2300&pt=5
|
风云音乐,https://live.goodiptv.club/api/cqyx.php?id=fyyyHD
|
||||||
甘肃卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000206da44fde810a98a3d7848f82.m3u8?bitrate=2300&pt=5
|
央视台球,https://live.goodiptv.club/api/cqyx.php?id=ystqHD
|
||||||
广西卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020731348f098457f0080cdf72c.m3u8?bitrate=2300&pt=5
|
风云足球,https://live.goodiptv.club/api/cqyx.php?id=fyzqHD
|
||||||
北京卡酷少儿,http://cyz32.livehbindex.hbcatv.cn/live/500000203cd4401ea738b3bc79d39dfa.m3u8?bitrate=2300&pt=5
|
文化精品,https://live.goodiptv.club/api/cqyx.php?id=yswhHD
|
||||||
兵团卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000200a7e4caf973012bf85f33406.m3u8?bitrate=2300&pt=5
|
高尔夫网球,https://live.goodiptv.club/api/cqyx.php?id=golfHD
|
||||||
|
早期教育,https://live.goodiptv.club/api/cqyx.php?id=zaojiaoHD
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
北京卡酷少儿,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225743/index.m3u8
|
|
||||||
CGTN,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225745/index.m3u8
|
|
||||||
深圳卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225752/index.m3u8
|
|
||||||
湖北卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225760/index.m3u8
|
|
||||||
山西卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225763/index.m3u8
|
|
||||||
天津卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225765/index.m3u8
|
|
||||||
海南卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225769/index.m3u8
|
|
||||||
重庆卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225791/index.m3u8
|
|
||||||
贵州卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225793/index.m3u8
|
|
||||||
大湾区卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226218/index.m3u8
|
|
||||||
江苏卫视,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226200/index.m3u8
|
江苏卫视,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226200/index.m3u8
|
||||||
深圳卫视,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226205/index.m3u8
|
深圳卫视,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226205/index.m3u8
|
||||||
北京卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225796/index.m3u8
|
北京卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225796/index.m3u8
|
||||||
黑龙江卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225802/index.m3u8
|
黑龙江卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225802/index.m3u8
|
||||||
西藏卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226212/index.m3u8
|
|
||||||
延边卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226220/index.m3u8
|
|
||||||
兵团卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226214/index.m3u8
|
|
||||||
农林卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226229/index.m3u8
|
|
||||||
|
|
||||||
河北卫视,http://event.pull.hebtv.com/jishi/weishipindao.m3u8
|
河北卫视,http://event.pull.hebtv.com/jishi/weishipindao.m3u8
|
||||||
河南卫视,http://media.hndyjyfw.gov.cn/live/jz-hnweishi/live.m3u8
|
|
||||||
云南卫视,http://tvlive.ynradio.com/live/yunnanweishi/chunks.m3u8
|
云南卫视,http://tvlive.ynradio.com/live/yunnanweishi/chunks.m3u8
|
||||||
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
|
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8
|
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel13/1080p.m3u8
|
|
||||||
三沙卫视,https://pullsstv90080111.ssws.tv/live/SSTV20220729.m3u8
|
三沙卫视,https://pullsstv90080111.ssws.tv/live/SSTV20220729.m3u8
|
||||||
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
|
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
|
||||||
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8
|
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8
|
||||||
@@ -152,125 +116,46 @@ CGTN,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225745
|
|||||||
南京少儿,http://live.nbs.cn/channels/njtv/sepd/500k.m3u8
|
南京少儿,http://live.nbs.cn/channels/njtv/sepd/500k.m3u8
|
||||||
南京少儿,http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8
|
南京少儿,http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8
|
||||||
|
|
||||||
|
|
||||||
东方卫视,http://61.138.167.36:9901/tsfile/live/0107_1.m3u8
|
|
||||||
吉林卫视,http://61.138.167.36:9901/tsfile/live/0116_1.m3u8
|
|
||||||
河北卫视,http://61.138.167.36:9901/tsfile/live/0117_1.m3u8
|
|
||||||
广西卫视,http://61.138.167.36:9901/tsfile/live/0119_1.m3u8
|
|
||||||
贵州卫视,http://61.138.167.36:9901/tsfile/live/0120_1.m3u8
|
|
||||||
辽宁卫视,http://61.138.167.36:9901/tsfile/live/0121_1.m3u8
|
|
||||||
北京卫视,http://61.138.167.36:9901/tsfile/live/0122_1.m3u8
|
|
||||||
四川卫视,http://61.138.167.36:9901/tsfile/live/0123_1.m3u8
|
|
||||||
不是人卫视,http://61.138.167.36:9901/tsfile/live/0124_1.m3u8
|
|
||||||
广东卫视,http://61.138.167.36:9901/tsfile/live/0125_1.m3u8
|
|
||||||
深圳卫视,http://61.138.167.36:9901/tsfile/live/0126_1.m3u8
|
|
||||||
江苏卫视,http://61.138.167.36:9901/tsfile/live/0127_1.m3u8
|
|
||||||
安徽卫视,http://61.138.167.36:9901/tsfile/live/0130_1.m3u8
|
|
||||||
山东卫视,http://61.138.167.36:9901/tsfile/live/0131_1.m3u8
|
|
||||||
湖北卫视,http://61.138.167.36:9901/tsfile/live/0132_1.m3u8
|
|
||||||
天津卫视,http://61.138.167.36:9901/tsfile/live/0135_1.m3u8
|
|
||||||
东南卫视,http://61.138.167.36:9901/tsfile/live/0137_1.m3u8
|
|
||||||
江西卫视,http://61.138.167.36:9901/tsfile/live/0138_1.m3u8
|
|
||||||
河南卫视,http://61.138.167.36:9901/tsfile/live/0139_1.m3u8
|
|
||||||
甘肃卫视,http://61.138.167.36:9901/tsfile/live/0141_1.m3u8
|
|
||||||
黑龙江卫视,http://61.138.167.36:9901/tsfile/live/0143_1.m3u8
|
|
||||||
CHC动作电影,http://61.138.167.36:9901/tsfile/live/1014_1.m3u8
|
|
||||||
CHC高清电影,http://61.138.167.36:9901/tsfile/live/1015_1.m3u8
|
|
||||||
CHC家庭影院,http://61.138.167.36:9901/tsfile/live/1016_1.m3u8
|
|
||||||
SiTV都市剧场,http://61.138.167.36:9901/tsfile/live/1005_1.m3u8
|
|
||||||
SiTV乐游,http://61.138.167.36:9901/tsfile/live/1017_1.m3u8
|
|
||||||
SiTV游戏风云,http://61.138.167.36:9901/tsfile/live/1019_1.m3u8
|
|
||||||
SiTV动漫秀场,http://61.138.167.36:9901/tsfile/live/1020_1.m3u8
|
|
||||||
SiTV生活时尚,http://61.138.167.36:9901/tsfile/live/1021_1.m3u8
|
|
||||||
SiTV金色学堂,http://61.138.167.36:9901/tsfile/live/1023_1.m3u8
|
|
||||||
SiTV法制天地,http://61.138.167.36:9901/tsfile/live/1024_1.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
北京卫视,http://222.71.90.218:8888/newlive/live/hls/18/live.m3u8
|
|
||||||
东方卫视,http://222.71.90.218:8888/newlive/live/hls/19/live.m3u8
|
|
||||||
不是人卫视,http://222.71.90.218:8888/newlive/live/hls/20/live.m3u8
|
|
||||||
江苏卫视,http://222.71.90.218:8888/newlive/live/hls/21/live.m3u8
|
|
||||||
湖南卫视,http://222.71.90.218:8888/newlive/live/hls/22/live.m3u8
|
|
||||||
广东卫视,http://222.71.90.218:8888/newlive/live/hls/23/live.m3u8
|
|
||||||
深圳卫视,http://222.71.90.218:8888/newlive/live/hls/24/live.m3u8
|
|
||||||
黑龙江卫视,http://222.71.90.218:8888/newlive/live/hls/25/live.m3u8
|
|
||||||
山东卫视,http://222.71.90.218:8888/newlive/live/hls/26/live.m3u8
|
|
||||||
湖北卫视,http://222.71.90.218:8888/newlive/live/hls/27/live.m3u8
|
|
||||||
安徽卫视,http://222.71.90.218:8888/newlive/live/hls/28/live.m3u8
|
|
||||||
东南卫视,http://222.71.90.218:8888/newlive/live/hls/29/live.m3u8
|
|
||||||
江西卫视,http://222.71.90.218:8888/newlive/live/hls/30/live.m3u8
|
|
||||||
辽宁卫视,http://222.71.90.218:8888/newlive/live/hls/31/live.m3u8
|
|
||||||
天津卫视,http://222.71.90.218:8888/newlive/live/hls/32/live.m3u8
|
|
||||||
四川卫视,http://222.71.90.218:8888/newlive/live/hls/33/live.m3u8
|
|
||||||
重庆卫视,http://222.71.90.218:8888/newlive/live/hls/34/live.m3u8
|
|
||||||
贵州卫视,http://222.71.90.218:8888/newlive/live/hls/35/live.m3u8
|
|
||||||
海南卫视,http://222.71.90.218:8888/newlive/live/hls/36/live.m3u8
|
|
||||||
河北卫视,http://222.71.90.218:8888/newlive/live/hls/37/live.m3u8
|
|
||||||
河南卫视,http://222.71.90.218:8888/newlive/live/hls/38/live.m3u8
|
|
||||||
云南卫视,http://222.71.90.218:8888/newlive/live/hls/39/live.m3u8
|
|
||||||
广西卫视,http://222.71.90.218:8888/newlive/live/hls/40/live.m3u8
|
|
||||||
吉林卫视,http://222.71.90.218:8888/newlive/live/hls/41/live.m3u8
|
|
||||||
宁夏卫视,http://222.71.90.218:8888/newlive/live/hls/42/live.m3u8
|
|
||||||
青海卫视,http://222.71.90.218:8888/newlive/live/hls/43/live.m3u8
|
|
||||||
西藏卫视,http://222.71.90.218:8888/newlive/live/hls/44/live.m3u8
|
|
||||||
陕西卫视,http://222.71.90.218:8888/newlive/live/hls/45/live.m3u8
|
|
||||||
内蒙古卫视,http://222.71.90.218:8888/newlive/live/hls/46/live.m3u8
|
|
||||||
新疆卫视,http://222.71.90.218:8888/newlive/live/hls/47/live.m3u8
|
|
||||||
CETV1,http://222.71.90.218:8888/newlive/live/hls/48/live.m3u8
|
|
||||||
金鹰纪实,http://222.71.90.218:8888/newlive/live/hls/49/live.m3u8
|
|
||||||
北京卡酷少儿,http://222.71.90.218:8888/newlive/live/hls/50/live.m3u8
|
|
||||||
都市,http://222.71.90.218:8888/newlive/live/hls/51/live.m3u8
|
|
||||||
哈哈炫动,http://222.71.90.218:8888/newlive/live/hls/52/live.m3u8
|
|
||||||
东方影视,http://222.71.90.218:8888/newlive/live/hls/53/live.m3u8
|
|
||||||
纪实人文,http://222.71.90.218:8888/newlive/live/hls/54/live.m3u8
|
|
||||||
新闻综合,http://222.71.90.218:8888/newlive/live/hls/55/live.m3u8
|
|
||||||
五星体育,http://222.71.90.218:8888/newlive/live/hls/56/live.m3u8
|
|
||||||
第一财经,http://222.71.90.218:8888/newlive/live/hls/57/live.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
香港,#genre#
|
香港,#genre#
|
||||||
翡翠台,http://r.jdshipin.com/qClQf
|
翡翠台,http://r.jdshipin.com/qClQf
|
||||||
明珠台,http://r.jdshipin.com/ZQ4kN
|
明珠台,http://r.jdshipin.com/ZQ4kN
|
||||||
|
凤凰中文台,http://pi.0472.org/tv/cbn.php?id=xfjcHD
|
||||||
凤凰中文台,http://r.jdshipin.com/cCCzW
|
凤凰中文台,http://r.jdshipin.com/cCCzW
|
||||||
凤凰资讯台,http://r.jdshipin.com/0Rp07
|
凤凰资讯台,http://r.jdshipin.com/0Rp07
|
||||||
凤凰资讯台,http://kkwk1122.top/fh.php?id=fhzx
|
凤凰资讯台,http://kkwk1122.top/fh.php?id=fhzx
|
||||||
凤凰中文台,http://kkwk1122.top/fh.php?id=fhzw
|
凤凰中文台,http://kkwk1122.top/fh.php?id=fhzw
|
||||||
凤凰香港台,http://kkwk1122.top/fh.php?id=fhhk
|
香港卫视,http://zhibo.hkstv.tv/livestream/mutfysrq/playlist.m3u8
|
||||||
TVBS星河,http://r.jdshipin.com/sXuuD
|
RTHK32,https://rthktv32-live.akamaized.net/hls/live/2036819/RTHKTV32/stream2/streamPlaylist.m3u8
|
||||||
翡翠台,http://r.jdshipin.com/n90gt
|
翡翠台,http://r.jdshipin.com/n90gt
|
||||||
翡翠台,http://r.jdshipin.com/62WM7
|
翡翠台,http://r.jdshipin.com/62WM7
|
||||||
翡翠台,http://r.jdshipin.com/qrfbg
|
翡翠台,http://r.jdshipin.com/qrfbg
|
||||||
翡翠台,http://113.117.74.20:8081/hls/25/index.m3u8
|
翡翠台,http://113.117.74.20:8081/hls/25/index.m3u8
|
||||||
香港32,https://rthktv32-live.akamaized.net/hls/live/2036819/RTHKTV32/stream5/streamPlaylist.m3u8
|
澳门莲花,https://cntv.sbs/tv/lhws.php
|
||||||
澳門蓮花,https://p.ggiptv.com/v/macaulotustv.php
|
澳门莲花,https://p.ggiptv.com/v/macaulotustv.php
|
||||||
澳門蓮花,http://anren.live/HK/BiIOU11uLA.m3u8
|
澳门莲花,http://anren.live/HK/BiIOU11uLA.m3u8
|
||||||
澳門蓮花,http://nettvpro.live/hls/lotustv.php?zgangd
|
澳门莲花,http://nettvpro.live/hls/lotustv.php?zgangd
|
||||||
|
|
||||||
|
|
||||||
浙江,#genre#
|
浙江,#genre#
|
||||||
义乌新闻综合,https://44911.hlsplay.aodianyun.com/tv_radio_44911/tv_channel_1796.m3u8?auth_key=4830573978-0-0-92824c2c03f95906a3c49a4aa28f1709&extra_key=Yc1XsmxOKy2UBoPM4Wy5vCPsEYqnj06taCR2SRB2Xrg2w28NPilH03KdIbbM5wgSql-VBohSnoO9AOKl94q2t2DWMftz-XB-2qUX-UjXcS80StcSZahBFjrKLivXaRjiY5r2NOMKWMKFbv-S0Bz2G6iEXgCK8yGjtrFHDcPfAQEE0pvXq0Bwy34b7We8zARN&ali_ffmpeg_version=mpengine
|
义乌新闻综合,https://44911.hlsplay.aodianyun.com/tv_radio_44911/tv_channel_1796.m3u8?auth_key=4830573978-0-0-92824c2c03f95906a3c49a4aa28f1709&extra_key=Yc1XsmxOKy2UBoPM4Wy5vCPsEYqnj06taCR2SRB2Xrg2w28NPilH03KdIbbM5wgSql-VBohSnoO9AOKl94q2t2DWMftz-XB-2qUX-UjXcS80StcSZahBFjrKLivXaRjiY5r2NOMKWMKFbv-S0Bz2G6iEXgCK8yGjtrFHDcPfAQEE0pvXq0Bwy34b7We8zARN&ali_ffmpeg_version=mpengine
|
||||||
|
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/1080p.m3u8
|
||||||
|
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/1080p.m3u8
|
||||||
|
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/1080p.m3u8
|
||||||
|
浙江影视娱乐,http://hw-m-l.cztv.com/channels/lantian/channel05/1080p.m3u8
|
||||||
|
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/1080p.m3u8
|
||||||
|
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/1080p.m3u8
|
||||||
|
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel08/1080p.m3u8
|
||||||
|
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/1080p.m3u8
|
||||||
|
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/1080p.m3u8
|
||||||
|
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8?zzhed
|
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8?zzhed
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/720p.m3u8?zzhed
|
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/360p.m3u8?zzhed
|
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8?zzhed
|
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8?zzhed
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/720p.m3u8?zzhed
|
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/360p.m3u8?zzhed
|
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8?zzhed
|
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8?zzhed
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/720p.m3u8?zzhed
|
浙江影视娱乐,http://hw-m-l.cztv.com/channels/lantian/channel005/1080p.m3u8?zzhed
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/360p.m3u8?zzhed
|
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8?zzhed
|
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8?zzhed
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/720p.m3u8?zzhed
|
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/360p.m3u8?zzhed
|
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8?zzhed
|
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8?zzhed
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/720p.m3u8?zzhed
|
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/360p.m3u8?zzhed
|
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8?zzhed
|
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8?zzhed
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/720p.m3u8?zzhed
|
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/360p.m3u8?zzhed
|
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8?zzhed
|
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8?zzhed
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/720p.m3u8?zzhed
|
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/360p.m3u8?zzhed
|
|
||||||
|
|
||||||
HTV-2明珠,http://183.129.242.178:3333/tsfile/live/1016_1.m3u8
|
HTV-2明珠,http://183.129.242.178:3333/tsfile/live/1016_1.m3u8
|
||||||
HTV-3生活,http://183.129.242.178:3333/tsfile/live/1017_1.m3u8
|
HTV-3生活,http://183.129.242.178:3333/tsfile/live/1017_1.m3u8
|
||||||
|
|||||||
Binary file not shown.
@@ -41,8 +41,6 @@ CCTV-5,http://222.71.90.218:8888/newlive/live/hls/6/live.m3u8
|
|||||||
CCTV-6,http://222.71.90.218:8888/newlive/live/hls/7/live.m3u8
|
CCTV-6,http://222.71.90.218:8888/newlive/live/hls/7/live.m3u8
|
||||||
CCTV-10,http://222.71.90.218:8888/newlive/live/hls/11/live.m3u8
|
CCTV-10,http://222.71.90.218:8888/newlive/live/hls/11/live.m3u8
|
||||||
CCTV-14,http://222.71.90.218:8888/newlive/live/hls/15/live.m3u8
|
CCTV-14,http://222.71.90.218:8888/newlive/live/hls/15/live.m3u8
|
||||||
CCTV-4,http://jycb.f3322.net:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV-5+,http://jycb.f3322.net:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CETV-1,http://txycsbl.centv.cn/zb/0628cetv1.m3u8
|
CETV-1,http://txycsbl.centv.cn/zb/0628cetv1.m3u8
|
||||||
CETV-2,http://txycsbl.centv.cn/zb/0822cetv2.m3u8
|
CETV-2,http://txycsbl.centv.cn/zb/0822cetv2.m3u8
|
||||||
CETV-3,http://txycsbl.centv.cn/zb/0822cetv3.m3u8
|
CETV-3,http://txycsbl.centv.cn/zb/0822cetv3.m3u8
|
||||||
@@ -67,23 +65,6 @@ CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390
|
|||||||
CCTV16,https://live.goodiptv.club/api/bestv.php?id=cctv16hd8m/8000000
|
CCTV16,https://live.goodiptv.club/api/bestv.php?id=cctv16hd8m/8000000
|
||||||
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
||||||
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
||||||
CCTV1,http://cyz32.livehbindex.hbcatv.cn/live/50000020935c4d59965a1cbf159c9be9.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV2,http://cyz32.livehbindex.hbcatv.cn/live/50000020d7ae404dbd55b5d0ba6fe735.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV3,http://cyz32.livehbindex.hbcatv.cn/live/50000020425540c3b4e7c41ca3eabb76.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV4,http://cyz32.livehbindex.hbcatv.cn/live/5b0dff5235e94ba8bff8731427145289.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV5,http://cyz32.livehbindex.hbcatv.cn/live/500000206cd748d58f41b13aa2754139.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV5+,http://cyz32.livehbindex.hbcatv.cn/live/50000020484943edba96ac9f93f858ce.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV6,http://cyz32.livehbindex.hbcatv.cn/live/50000020da6d4c40a2ca3b1bdc786016.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV7,http://cyz32.livehbindex.hbcatv.cn/live/500000204daa45af99b5800a528fac21.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV8,http://cyz32.livehbindex.hbcatv.cn/live/500000202d8c4f56ba03e623caa09f1b.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV9,http://cyz32.livehbindex.hbcatv.cn/live/50000020edf54f6c92778d0ccdfcca30.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV10,http://cyz32.livehbindex.hbcatv.cn/live/a66832f3323643189c3a0e91f9fad3e3.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV11,http://cyz32.livehbindex.hbcatv.cn/live/5000002086444f0886ad7032ad8f756b.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV12,http://cyz32.livehbindex.hbcatv.cn/live/fbe7688bc539461da71ff649e4ba1d75.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV13,http://cyz32.livehbindex.hbcatv.cn/live/5000002081f5478882f00a0f9be4b01f.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV14,http://cyz32.livehbindex.hbcatv.cn/live/8a22035194884b1eb5515aac434c313c.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV15,http://cyz32.livehbindex.hbcatv.cn/live/50000020f44f4f4b8aa33925dba216df.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV17,http://cyz32.livehbindex.hbcatv.cn/live/500000208b8d41c4b436ef32428c229d.m3u8?bitrate=2300&pt=5
|
|
||||||
|
|
||||||
|
|
||||||
卫视频道,#genre#
|
卫视频道,#genre#
|
||||||
@@ -699,7 +680,6 @@ CHC家庭影院,http://111.20.40.170/PLTV/88888893/224/3221226462/index.m3u8
|
|||||||
浙江影视,https://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8
|
浙江影视,https://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8
|
||||||
吉林影视,http://stream1.jlntv.cn/yspd/sd/live.m3u8?_upt=f6b685651648171016
|
吉林影视,http://stream1.jlntv.cn/yspd/sd/live.m3u8?_upt=f6b685651648171016
|
||||||
隆化影视,http://hblh.chinashadt.com:2036/live/stream:lh2.stream/HasBahCa.m3u8
|
隆化影视,http://hblh.chinashadt.com:2036/live/stream:lh2.stream/HasBahCa.m3u8
|
||||||
石河子影视,http://202.107.188.141:5002/shiheziyinshiwenti_hdgq.m3u8?token=guoziyun
|
|
||||||
烟台影视,http://live.yantaitv.cn/live/e9f1d9045d474c31884d13fa4ffbbd16/a4a9b3704d854756907845107cc56129-1.m3u8
|
烟台影视,http://live.yantaitv.cn/live/e9f1d9045d474c31884d13fa4ffbbd16/a4a9b3704d854756907845107cc56129-1.m3u8
|
||||||
影视频道,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8
|
影视频道,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8
|
||||||
美丽中国说,http://hls.cntv.myhwcdn.cn/asp/hls/4000/0303000a/3/default/8cdd688b04e4495ba1635e218419d6f9/4000.m3u8
|
美丽中国说,http://hls.cntv.myhwcdn.cn/asp/hls/4000/0303000a/3/default/8cdd688b04e4495ba1635e218419d6f9/4000.m3u8
|
||||||
@@ -998,7 +978,6 @@ CCTV5-高清,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/32
|
|||||||
宜兴新闻频道,http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_xw.m3u8?zjiangsd
|
宜兴新闻频道,http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_xw.m3u8?zjiangsd
|
||||||
宜兴紫砂频道,http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_zs.m3u8?zjiangsd
|
宜兴紫砂频道,http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_zs.m3u8?zjiangsd
|
||||||
淮阴综合频道,http://huaiyin-tv-hls.cm.jstv.com/huaiyin-tv/huaiyinf.m3u8?zjiangsd
|
淮阴综合频道,http://huaiyin-tv-hls.cm.jstv.com/huaiyin-tv/huaiyinf.m3u8?zjiangsd
|
||||||
淮阴影院频道,http://huaiyin-tv-hls.cm.jstv.com/huaiyin-tv/hyys.m3u8?zjiangsd
|
|
||||||
金湖新闻综合,http://jinhu-tv-hls.cm.jstv.com/jinhu-tv/jinhuzh.m3u8?zjiangsd
|
金湖新闻综合,http://jinhu-tv-hls.cm.jstv.com/jinhu-tv/jinhuzh.m3u8?zjiangsd
|
||||||
金坛新闻频道,http://jintan-tv-ori-hls.jstv.com/jintan-tv-ori/jintan_xw.m3u8?zjiangsd
|
金坛新闻频道,http://jintan-tv-ori-hls.jstv.com/jintan-tv-ori/jintan_xw.m3u8?zjiangsd
|
||||||
海安新闻综合,http://haian-tv-hls.cm.jstv.com/haian-tv/haaxwzh.m3u8?zjiangsd
|
海安新闻综合,http://haian-tv-hls.cm.jstv.com/haian-tv/haaxwzh.m3u8?zjiangsd
|
||||||
@@ -1041,12 +1020,10 @@ CCTV5-高清,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/32
|
|||||||
|
|
||||||
|
|
||||||
四川综合,#genre#
|
四川综合,#genre#
|
||||||
广元综合,http://tv.dzsm.com:8100/chan/ch1.flv?zsicd
|
|
||||||
广元综合,https://m3u8.channel.dzsm.com/cms/videos/nmip-media/channellive/channel1/playlist.m3u8?zsicd
|
广元综合,https://m3u8.channel.dzsm.com/cms/videos/nmip-media/channellive/channel1/playlist.m3u8?zsicd
|
||||||
广元公共,https://m3u8.channel.dzsm.com/cms/videos/nmip-media/channellive/channel2/playlist.m3u8?zsicd
|
广元公共,https://m3u8.channel.dzsm.com/cms/videos/nmip-media/channellive/channel2/playlist.m3u8?zsicd
|
||||||
凉山新闻综合,http://file.yizu.tv/nmip-media/channellive/channel106606/playlist.m3u8?zsicd
|
凉山新闻综合,http://file.yizu.tv/nmip-media/channellive/channel106606/playlist.m3u8?zsicd
|
||||||
凉山语,http://file.yizu.tv/nmip-media/channellive/channel107323/playlist.m3u8?zsicd
|
凉山语,http://file.yizu.tv/nmip-media/channellive/channel107323/playlist.m3u8?zsicd
|
||||||
自贡综合,http://110.189.153.160:1001/zhpd.flv?zsicd
|
|
||||||
德阳新闻综合,http://scdytv.cn:1935/live/m_xwpd_livevideo/playlist.m3u8?zsicd
|
德阳新闻综合,http://scdytv.cn:1935/live/m_xwpd_livevideo/playlist.m3u8?zsicd
|
||||||
攀枝花新闻综合,http://zb.pzhgd.com:9095/live/xwzh.m3u8?zsicd
|
攀枝花新闻综合,http://zb.pzhgd.com:9095/live/xwzh.m3u8?zsicd
|
||||||
攀枝花公共,http://zb.pzhgd.com:9095/live/ggpd.m3u8?zsicd
|
攀枝花公共,http://zb.pzhgd.com:9095/live/ggpd.m3u8?zsicd
|
||||||
@@ -1135,7 +1112,6 @@ CCTV5-高清,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/32
|
|||||||
孝感生活,http://xiaogan-live21.cjyun.org/10139/s10139-shpd.m3u8?auth_key=1704038399-0-0-38258db7eb010303cb33988874a75a9f
|
孝感生活,http://xiaogan-live21.cjyun.org/10139/s10139-shpd.m3u8?auth_key=1704038399-0-0-38258db7eb010303cb33988874a75a9f
|
||||||
孝昌新闻党建,http://xiaochang-live21.cjyun.org/10128/s10128-xcxw.m3u8?auth_key=1704038399-0-0-66730340ff88177724aa0e28999d1aab
|
孝昌新闻党建,http://xiaochang-live21.cjyun.org/10128/s10128-xcxw.m3u8?auth_key=1704038399-0-0-66730340ff88177724aa0e28999d1aab
|
||||||
应城新闻党建,https://yingcheng-live21.cjyun.org/10135/s10135-YCZH.m3u8?auth_key=1704038399-0-0-183e4f22e93e62e3d5853726af611aed
|
应城新闻党建,https://yingcheng-live21.cjyun.org/10135/s10135-YCZH.m3u8?auth_key=1704038399-0-0-183e4f22e93e62e3d5853726af611aed
|
||||||
应城生活,https://yingcheng-live21.cjyun.org/10135/s10135-YCDJ.m3u8?auth_key=1704038399-0-0-f5dd91c5873e2e3a99f0ce5a4714f709
|
|
||||||
荆州新闻,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv01.m3u8?auth_key=1704038399-0-0-9b2442b7b11f661edfe71bc7a3a3a5a2
|
荆州新闻,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv01.m3u8?auth_key=1704038399-0-0-9b2442b7b11f661edfe71bc7a3a3a5a2
|
||||||
荆州垄上,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv03.m3u8?auth_key=1704038399-0-0-a0b56187fea04cf4f776c0b23cf5f547
|
荆州垄上,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv03.m3u8?auth_key=1704038399-0-0-a0b56187fea04cf4f776c0b23cf5f547
|
||||||
荆州公共,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv02.m3u8?auth_key=1704038399-0-0-35f354ebd7cf85af1104fa76d623c1c6
|
荆州公共,http://jingzhou-live21.cjyun.org/10085/s10085-jingzhou-tv02.m3u8?auth_key=1704038399-0-0-35f354ebd7cf85af1104fa76d623c1c6
|
||||||
@@ -1667,9 +1643,6 @@ Soda东南亚之旅,https://vdse.bdstatic.com//b6295e9776c2cd347716fc2447e27fac.
|
|||||||
文山州新闻综合,http://tvdrs.wsrtv.com.cn:8100/channellive/ch1.flv?zyund
|
文山州新闻综合,http://tvdrs.wsrtv.com.cn:8100/channellive/ch1.flv?zyund
|
||||||
文山州新闻综合,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8?zyund
|
文山州新闻综合,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8?zyund
|
||||||
文山州公共,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel8/playlist.m3u8?zyund
|
文山州公共,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel8/playlist.m3u8?zyund
|
||||||
普洱新闻综合,http://file.pebtv.cn:8101/cms/videos/nmip-media/channellive/channel12/playlist.m3u8?zyund
|
|
||||||
普洱公共频道,http://file.pebtv.cn:8101/cms/videos/nmip-media/channellive/channel27/playlist.m3u8?zyund
|
|
||||||
普洱科教频道,http://file.pebtv.cn:8101/cms/videos/nmip-media/channellive/channel28/playlist.m3u8?zyund
|
|
||||||
西双版纳综合,http://file.xsbnrtv.cn/vms/videos/nmip-media/channellive/channel1/playlist.m3u8?zyund
|
西双版纳综合,http://file.xsbnrtv.cn/vms/videos/nmip-media/channellive/channel1/playlist.m3u8?zyund
|
||||||
西双版纳公共,http://file.xsbnrtv.cn/vms/videos/nmip-media/channellive/channel3/playlist.m3u8?zyund
|
西双版纳公共,http://file.xsbnrtv.cn/vms/videos/nmip-media/channellive/channel3/playlist.m3u8?zyund
|
||||||
怒江新闻综合,http://livebroadcast.ccwb.cn/live/w1620805130988936.m3u8?zyund
|
怒江新闻综合,http://livebroadcast.ccwb.cn/live/w1620805130988936.m3u8?zyund
|
||||||
@@ -1855,7 +1828,6 @@ Soda东南亚之旅,https://vdse.bdstatic.com//b6295e9776c2cd347716fc2447e27fac.
|
|||||||
鸣沙山山门,http://gcksc.v.kcdnvip.com/gc/dhyyqyyq_1/index.m3u8
|
鸣沙山山门,http://gcksc.v.kcdnvip.com/gc/dhyyqyyq_1/index.m3u8
|
||||||
月牙泉,http://gcksc.v.kcdnvip.com/gc/dhyyqsm_1/index.m3u8
|
月牙泉,http://gcksc.v.kcdnvip.com/gc/dhyyqsm_1/index.m3u8
|
||||||
五彩池,http://gcksc.v.kcdnvip.com/gc/hlwcc_1/index.m3u8
|
五彩池,http://gcksc.v.kcdnvip.com/gc/hlwcc_1/index.m3u8
|
||||||
五彩池,http://gccncc.v.wscdns.com/gc/hlwcc_1/index.m3u8
|
|
||||||
黄龙,http://gcksc.v.kcdnvip.com/gc/hlzycc_1/index.m3u8
|
黄龙,http://gcksc.v.kcdnvip.com/gc/hlzycc_1/index.m3u8
|
||||||
望乡台,http://gcksc.v.kcdnvip.com/gc/hlwxt_1/index.m3u8
|
望乡台,http://gcksc.v.kcdnvip.com/gc/hlwxt_1/index.m3u8
|
||||||
洗身洞,http://gcksc.v.kcdnvip.com/gc/hlxsd_1/index.m3u8
|
洗身洞,http://gcksc.v.kcdnvip.com/gc/hlxsd_1/index.m3u8
|
||||||
|
|||||||
+180
-473
@@ -1,4 +1,4 @@
|
|||||||
//关注微信公众号:奇奇老友汇,发送“本地包”,获取本地包更新链接与图文教程。
|
//关注微信公众号:奇奇乐分享,发送“本地包”,获取本地包更新链接与图文教程。
|
||||||
|
|
||||||
{
|
{
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"ext": "http://127.0.0.1:9978/file/tvfan/token.json$$$http://tvfan.xxooo.cf/",
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt$$$https://www.wogg.xyz/",
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -83,6 +83,17 @@
|
|||||||
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt",
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt",
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "小纸条_cli",
|
||||||
|
"name": "俊于 | 小纸条[T4]",
|
||||||
|
"type": 4,
|
||||||
|
"api": "http://home.jundie.top:9520/spider/cli_gitCafe",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "http://127.0.0.1:9978/file/tvboxqq/token.txt",
|
||||||
|
"timeout": 30
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "荐片",
|
"key": "荐片",
|
||||||
"name": "俊于 | 荐片[T4]",
|
"name": "俊于 | 荐片[T4]",
|
||||||
@@ -104,21 +115,12 @@
|
|||||||
"api": "./lf_p2p2_min.js",
|
"api": "./lf_p2p2_min.js",
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "lf_js_ikanbot",
|
|
||||||
"name": "路飞 | 点播[js]",
|
|
||||||
"type": 3,
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"api": "./lf_ikanbot_min.js"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "lf_js_lf_live",
|
"key": "lf_js_lf_live",
|
||||||
"name": "路飞 | 直播[js]",
|
"name": "路飞 | 直播[js]",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./lf_live_min.js",
|
"api": "./lf_live_min.js",
|
||||||
|
"recordable": 0,
|
||||||
"style": {
|
"style": {
|
||||||
"type": "oval"
|
"type": "oval"
|
||||||
},
|
},
|
||||||
@@ -128,46 +130,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./txt/lf_live.txt"
|
"ext": "./txt/lf_live.txt"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "移动云盘",
|
|
||||||
"name": "移动 | 云盘[T1]",
|
|
||||||
"type": 1,
|
|
||||||
"playerType": 1,
|
|
||||||
"api": "http://xn--yetu07f.xn--yetu07f.icu:66/api.php/provide/vod/?ac=list",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"timeout": 30
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "drpy_js_爱看机器人",
|
|
||||||
"name": "影视 | 爱看机器人[js]",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"ext": "./js/爱看机器人.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "drpy_js_ikanbot2",
|
|
||||||
"name": "影视 | 爱看机器人2[js]",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"ext": "./js/ikanbot2.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "drpy_js_ikanbot3",
|
|
||||||
"name": "影视 | 爱看机器人3[js]",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./drpy2.min.js",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"ext": "./js/ikanbot3.js"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "drpy_js_荐片",
|
"key": "drpy_js_荐片",
|
||||||
"name": "影视 | 荐片[js]",
|
"name": "影视 | 荐片[js]",
|
||||||
@@ -205,7 +167,7 @@
|
|||||||
"name": "影视 | 低端[js]",
|
"name": "影视 | 低端[js]",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpy2.min.js",
|
"api": "./drpy2.min.js",
|
||||||
"ext": "./js/ddys.js"
|
"ext": "./js/ddys_d.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "drpy_js_南瓜影视",
|
"key": "drpy_js_南瓜影视",
|
||||||
@@ -530,6 +492,17 @@
|
|||||||
"ext": "./json/token.json",
|
"ext": "./json/token.json",
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_Hdhive",
|
||||||
|
"name": "阿里 | Hdhive[jar]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Hdhive",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "./json/token.json",
|
||||||
|
"timeout": 30
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "七夜",
|
"key": "七夜",
|
||||||
"name": "阿里 | 七夜[jar]",
|
"name": "阿里 | 七夜[jar]",
|
||||||
@@ -568,14 +541,6 @@
|
|||||||
"ext": "./json/token.json",
|
"ext": "./json/token.json",
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "土狗",
|
|
||||||
"name": "阿里 | 土狗[jar]",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_TuGou",
|
|
||||||
"ext": "./json/token.json",
|
|
||||||
"timeout": 30
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "盘搜",
|
"key": "盘搜",
|
||||||
"name": "阿里 | 盘搜[jar]",
|
"name": "阿里 | 盘搜[jar]",
|
||||||
@@ -592,14 +557,6 @@
|
|||||||
"ext": "./json/token.json",
|
"ext": "./json/token.json",
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "Sean",
|
|
||||||
"name": "阿里 | Sean[jar]",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Sean",
|
|
||||||
"ext": "./json/token.json",
|
|
||||||
"timeout": 30
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "drpy_js_4KHDR",
|
"key": "drpy_js_4KHDR",
|
||||||
"name": "磁力 | 4KHDR[js]",
|
"name": "磁力 | 4KHDR[js]",
|
||||||
@@ -681,34 +638,61 @@
|
|||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "drpy_js_极影网P",
|
"key": "drpy_js_ddys",
|
||||||
"name": "磁力 | 极影网P[js]",
|
"name": "影视 | 低端影视[js]",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpy2.min.js",
|
"api": "./drpy2.min.js",
|
||||||
"ext": "./js/jiyingwp.js",
|
"ext": "./js/ddys.js",
|
||||||
"playerType": "1",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "drpy_js_磁力熊p",
|
"key": "drpy_js_libvio",
|
||||||
"name": "磁力 | 磁力熊p[js]",
|
"name": "影视 | libvio[js]",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpy2.min.js",
|
"api": "./drpy2.min.js",
|
||||||
"ext": "./js/cilixiongp.js",
|
"ext": "./js/libvio.js",
|
||||||
"searchable": 0,
|
"quickSearch": 1,
|
||||||
"quickSearch": 0,
|
|
||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "drpy_js_美剧迷p",
|
"key": "drpy_js_tzfile",
|
||||||
"name": "磁力 | 美剧迷p[js]",
|
"name": "影视 | 团长影视[js]",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpy2.min.js",
|
"api": "./drpy2.min.js",
|
||||||
"ext": "./js/meijumip.js",
|
"ext": "./js/tzfile.js",
|
||||||
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"timeout": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_dydhhy",
|
||||||
|
"name": "影视 | dydhhy[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/dydhhy.js",
|
||||||
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"timeout": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_97tvs",
|
||||||
|
"name": "影视 | 97tvs[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/97tvs.js",
|
||||||
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"timeout": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_rrdyw",
|
||||||
|
"name": "影视 | rrdyw[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/rrdyw.js",
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
@@ -733,6 +717,26 @@
|
|||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"timeout": 30
|
"timeout": 30
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_yyets",
|
||||||
|
"name": "夸克 | 人人影视搜[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/yyets.js",
|
||||||
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"timeout": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_奇妙搜[夸]",
|
||||||
|
"name": "夸克 | 奇妙搜[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"ext": "./js/qimiao.js",
|
||||||
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"timeout": 30
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "drpy_js_愛盤搜",
|
"key": "drpy_js_愛盤搜",
|
||||||
"name": "夸克 | 爱盘搜[js]",
|
"name": "夸克 | 爱盘搜[js]",
|
||||||
@@ -827,6 +831,7 @@
|
|||||||
"name": "弹幕 | 哔哩合集[js]",
|
"name": "弹幕 | 哔哩合集[js]",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./drpy2.min.js",
|
"api": "./drpy2.min.js",
|
||||||
|
"recordable": 0,
|
||||||
"style": {
|
"style": {
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"ratio": 1.597
|
"ratio": 1.597
|
||||||
@@ -947,6 +952,7 @@
|
|||||||
"name": "电视 | 直播大全[js]",
|
"name": "电视 | 直播大全[js]",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "./live2cms.js",
|
"api": "./live2cms.js",
|
||||||
|
"recordable": 0,
|
||||||
"style": {
|
"style": {
|
||||||
"type": "oval"
|
"type": "oval"
|
||||||
},
|
},
|
||||||
@@ -1384,6 +1390,36 @@
|
|||||||
},
|
},
|
||||||
"ext": "./js/音悦网.js"
|
"ext": "./js/音悦网.js"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_爱看机器人",
|
||||||
|
"name": "影视 | 爱看机器人[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"ext": "./js/爱看机器人.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_ikanbot2",
|
||||||
|
"name": "影视 | 爱看机器人2[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"ext": "./js/ikanbot2.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "drpy_js_ikanbot3",
|
||||||
|
"name": "影视 | 爱看机器人3[js]",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./drpy2.min.js",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"ext": "./js/ikanbot3.js"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "drpy_js_007影视",
|
"key": "drpy_js_007影视",
|
||||||
"name": "影视 | 007影视[js]",
|
"name": "影视 | 007影视[js]",
|
||||||
@@ -2165,9 +2201,66 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "小新",
|
"name": "黄黄",
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"url": "http://xiaoxin.1080p.fun/home/api?type=ys&uid=91198&key=bhntuwyAJLMTUY1478&url="
|
"url": "http://110.42.2.247:880/analysis/json/?uid=2449&my=acfgikquvzFGJRW459&format=data&url=",
|
||||||
|
"ext": {
|
||||||
|
"flag": [
|
||||||
|
"mgtv",
|
||||||
|
"qiyi",
|
||||||
|
"imgo",
|
||||||
|
"爱奇艺",
|
||||||
|
"奇艺",
|
||||||
|
"qq",
|
||||||
|
"腾讯",
|
||||||
|
"youku",
|
||||||
|
"优酷",
|
||||||
|
"pptv",
|
||||||
|
"PPTV",
|
||||||
|
"letv",
|
||||||
|
"乐视",
|
||||||
|
"leshi",
|
||||||
|
"bilibili",
|
||||||
|
"哔哩哔哩",
|
||||||
|
"哔哩",
|
||||||
|
"mgtv"
|
||||||
|
],
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "okhttp/3.12.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "稻香",
|
||||||
|
"type": 1,
|
||||||
|
"url": "http://27.124.4.42:4567//jhjson//ceshi.php?url=",
|
||||||
|
"ext": {
|
||||||
|
"flag": [
|
||||||
|
"mgtv",
|
||||||
|
"qiyi",
|
||||||
|
"imgo",
|
||||||
|
"爱奇艺",
|
||||||
|
"奇艺",
|
||||||
|
"qq",
|
||||||
|
"腾讯",
|
||||||
|
"youku",
|
||||||
|
"优酷",
|
||||||
|
"pptv",
|
||||||
|
"PPTV",
|
||||||
|
"letv",
|
||||||
|
"乐视",
|
||||||
|
"leshi",
|
||||||
|
"bilibili",
|
||||||
|
"哔哩哔哩",
|
||||||
|
"哔哩",
|
||||||
|
"mgtv",
|
||||||
|
"芒果",
|
||||||
|
"芒果"
|
||||||
|
],
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "okhttp/3.12.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "饭",
|
"name": "饭",
|
||||||
@@ -2179,80 +2272,6 @@
|
|||||||
"type": 1,
|
"type": 1,
|
||||||
"url": "http://110.42.2.247:880/analysis/json/?uid=2449&my=acfgikquvzFGJRW459&url="
|
"url": "http://110.42.2.247:880/analysis/json/?uid=2449&my=acfgikquvzFGJRW459&url="
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "91",
|
|
||||||
"url": "http://91fanli.top/m3u8/?url=",
|
|
||||||
"type": 0,
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qiyi",
|
|
||||||
"imgo",
|
|
||||||
"爱奇艺",
|
|
||||||
"奇艺",
|
|
||||||
"qq",
|
|
||||||
"腾讯",
|
|
||||||
"youku",
|
|
||||||
"优酷",
|
|
||||||
"pptv",
|
|
||||||
"PPTV",
|
|
||||||
"letv",
|
|
||||||
"乐视",
|
|
||||||
"leshi",
|
|
||||||
"bilibili",
|
|
||||||
"哔哩哔哩",
|
|
||||||
"哔哩",
|
|
||||||
"mgtv",
|
|
||||||
"芒果",
|
|
||||||
"sohu",
|
|
||||||
"xigua",
|
|
||||||
"fun",
|
|
||||||
"风行"
|
|
||||||
],
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "解析la",
|
|
||||||
"url": "https://api.jiexi.la/?url=",
|
|
||||||
"type": 0,
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qiyi",
|
|
||||||
"imgo",
|
|
||||||
"爱奇艺",
|
|
||||||
"奇艺",
|
|
||||||
"qq",
|
|
||||||
"腾讯",
|
|
||||||
"youku",
|
|
||||||
"优酷",
|
|
||||||
"pptv",
|
|
||||||
"PPTV",
|
|
||||||
"letv",
|
|
||||||
"乐视",
|
|
||||||
"leshi",
|
|
||||||
"bilibili",
|
|
||||||
"哔哩哔哩",
|
|
||||||
"哔哩",
|
|
||||||
"mgtv",
|
|
||||||
"芒果",
|
|
||||||
"sohu",
|
|
||||||
"xigua",
|
|
||||||
"fun",
|
|
||||||
"风行"
|
|
||||||
],
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "PM",
|
"name": "PM",
|
||||||
"url": "https://www.playm3u8.cn/jiexi.php?url=",
|
"url": "https://www.playm3u8.cn/jiexi.php?url=",
|
||||||
@@ -2290,149 +2309,11 @@
|
|||||||
"User-Agent": "Mozilla/5.0"
|
"User-Agent": "Mozilla/5.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "ccabc",
|
|
||||||
"type": 1,
|
|
||||||
"url": "https://jx.ccabc.cc/xc/?key=5567332json&url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "飞云",
|
|
||||||
"type": 1,
|
|
||||||
"url": "https://daina.hk/api/?key=507ebdc402a6314e35f950c4c40fdf27&url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "杰森",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://jx.jsonplayer.com/player/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "365",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://chaxun.truechat365.com/?url=",
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qq",
|
|
||||||
"腾讯",
|
|
||||||
"qiyi",
|
|
||||||
"iqiyi",
|
|
||||||
"爱奇艺",
|
|
||||||
"奇艺",
|
|
||||||
"youku",
|
|
||||||
"优酷",
|
|
||||||
"mgtv",
|
|
||||||
"芒果",
|
|
||||||
"letv",
|
|
||||||
"乐视",
|
|
||||||
"pptv",
|
|
||||||
"PPTV",
|
|
||||||
"sohu",
|
|
||||||
"bilibili",
|
|
||||||
"哔哩哔哩",
|
|
||||||
"哔哩"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "爱酷解析",
|
"name": "爱酷解析",
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"url": "https://jx.zhanlangbu.com/?url="
|
"url": "https://jx.zhanlangbu.com/?url="
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "爱酷",
|
|
||||||
"type": 1,
|
|
||||||
"url": "http://jxapi.wutao7.top/XL/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "UM",
|
|
||||||
"type": 1,
|
|
||||||
"url": "https://b.umkan.cc/API.php?url=",
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qq",
|
|
||||||
"腾讯",
|
|
||||||
"企鹅",
|
|
||||||
"IQiYi",
|
|
||||||
"qiyi",
|
|
||||||
"imgo",
|
|
||||||
"爱奇艺",
|
|
||||||
"奇艺",
|
|
||||||
"youku",
|
|
||||||
"YouKu",
|
|
||||||
"优酷",
|
|
||||||
"sohu",
|
|
||||||
"SoHu",
|
|
||||||
"搜狐",
|
|
||||||
"letv",
|
|
||||||
"LeShi",
|
|
||||||
"乐视",
|
|
||||||
"imgo",
|
|
||||||
"mgtv",
|
|
||||||
"MangGuo",
|
|
||||||
"芒果",
|
|
||||||
"SLYS4k",
|
|
||||||
"BYGA",
|
|
||||||
"luanzi",
|
|
||||||
"AliS",
|
|
||||||
"dxzy",
|
|
||||||
"bilibili",
|
|
||||||
"QEYSS",
|
|
||||||
"xigua",
|
|
||||||
"西瓜视频",
|
|
||||||
"腾讯视频",
|
|
||||||
"奇艺视频",
|
|
||||||
"优酷视频",
|
|
||||||
"芒果视频",
|
|
||||||
"乐视视频"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "星辰云解析",
|
|
||||||
"type": 1,
|
|
||||||
"url": "http://xn--wnup5g.xn--z7x900a.love:63/Art0425/analysis.php?v="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "菜妮丝",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://jx.cainisi.cf/?v="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "盘古",
|
|
||||||
"url": "https://www.pangujiexi.cc/jiexi.php?url=",
|
|
||||||
"type": 0,
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qiyi",
|
|
||||||
"imgo",
|
|
||||||
"爱奇艺",
|
|
||||||
"奇艺",
|
|
||||||
"qq",
|
|
||||||
"腾讯",
|
|
||||||
"youku",
|
|
||||||
"优酷",
|
|
||||||
"pptv",
|
|
||||||
"PPTV",
|
|
||||||
"letv",
|
|
||||||
"乐视",
|
|
||||||
"leshi",
|
|
||||||
"bilibili",
|
|
||||||
"哔哩哔哩",
|
|
||||||
"哔哩",
|
|
||||||
"mgtv",
|
|
||||||
"芒果",
|
|
||||||
"sohu",
|
|
||||||
"xigua",
|
|
||||||
"fun",
|
|
||||||
"风行"
|
|
||||||
],
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "全民",
|
"name": "全民",
|
||||||
"url": "http://api.wpsseo.cn/?v=",
|
"url": "http://api.wpsseo.cn/?v=",
|
||||||
@@ -2512,190 +2393,15 @@
|
|||||||
"User-Agent": "Mozilla/5.0"
|
"User-Agent": "Mozilla/5.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "夜幕",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://www.yemu.xyz/?url=",
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qq",
|
|
||||||
"腾讯",
|
|
||||||
"qiyi",
|
|
||||||
"iqiyi",
|
|
||||||
"爱奇艺",
|
|
||||||
"奇艺",
|
|
||||||
"youku",
|
|
||||||
"优酷",
|
|
||||||
"mgtv",
|
|
||||||
"芒果",
|
|
||||||
"letv",
|
|
||||||
"乐视",
|
|
||||||
"pptv",
|
|
||||||
"PPTV",
|
|
||||||
"sohu",
|
|
||||||
"bilibili",
|
|
||||||
"哔哩哔哩",
|
|
||||||
"哔哩"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "麒麟",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://www.cygqw.com/jiexi/jiekou-2/?url="
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "zui",
|
"name": "zui",
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"url": "https://jx.zui.cm/?url=",
|
"url": "https://jx.zui.cm/?url="
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"ltnb"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "风起陇西",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://hxys.tv/bfq/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "风起兖州",
|
|
||||||
"type": 0,
|
|
||||||
"url": "http://jx.gbxy.net.cn/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "m2090",
|
|
||||||
"url": "https://m2090.com/?url=",
|
|
||||||
"type": 0,
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qiyi",
|
|
||||||
"imgo",
|
|
||||||
"爱奇艺",
|
|
||||||
"奇艺",
|
|
||||||
"qq",
|
|
||||||
"腾讯",
|
|
||||||
"youku",
|
|
||||||
"优酷",
|
|
||||||
"pptv",
|
|
||||||
"PPTV",
|
|
||||||
"letv",
|
|
||||||
"乐视",
|
|
||||||
"leshi",
|
|
||||||
"bilibili",
|
|
||||||
"哔哩哔哩",
|
|
||||||
"哔哩",
|
|
||||||
"mgtv",
|
|
||||||
"芒果",
|
|
||||||
"sohu",
|
|
||||||
"xigua",
|
|
||||||
"fun",
|
|
||||||
"风行"
|
|
||||||
],
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "1717云",
|
|
||||||
"url": "https://www.1717yun.com/jx/ty.php?url=",
|
|
||||||
"type": 0,
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qiyi",
|
|
||||||
"imgo",
|
|
||||||
"爱奇艺",
|
|
||||||
"奇艺",
|
|
||||||
"qq",
|
|
||||||
"腾讯",
|
|
||||||
"youku",
|
|
||||||
"优酷",
|
|
||||||
"pptv",
|
|
||||||
"PPTV",
|
|
||||||
"letv",
|
|
||||||
"乐视",
|
|
||||||
"leshi",
|
|
||||||
"bilibili",
|
|
||||||
"哔哩哔哩",
|
|
||||||
"哔哩",
|
|
||||||
"mgtv",
|
|
||||||
"芒果",
|
|
||||||
"sohu",
|
|
||||||
"xigua",
|
|
||||||
"fun",
|
|
||||||
"风行"
|
|
||||||
],
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"User-Agent": "Mozilla/5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "云星解析",
|
|
||||||
"type": 1,
|
|
||||||
"url": "https://chaloli.cn/api/?key=63bad951f0ada1d236062b7a3632f81e&url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ok",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://okjx.cc/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "不累",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://blbfq.f3322.net/player/analysis.php?v=",
|
|
||||||
"ext": {
|
|
||||||
"flag": [
|
|
||||||
"qiyi",
|
|
||||||
"qq",
|
|
||||||
"letv",
|
|
||||||
"sohu",
|
|
||||||
"youku",
|
|
||||||
"mgtv",
|
|
||||||
"bilibili",
|
|
||||||
"wasu",
|
|
||||||
"xigua",
|
|
||||||
"1905"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "cod",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://ksksl.codjx.com/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "byg解析",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://byg.ziqj5.shop/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "26db",
|
|
||||||
"type": 0,
|
|
||||||
"url": "http://vip.26db.cn/g/?url="
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "看看",
|
"name": "看看",
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"url": "https://jx.m3u8.pw/?url="
|
"url": "https://jx.m3u8.pw/?url="
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "FreeOK",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://play.86516.tk/OKPlayer/?url="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "free",
|
|
||||||
"type": 0,
|
|
||||||
"url": "https://h5.freejson.xyz/player/?url="
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"rules": [
|
"rules": [
|
||||||
@@ -2703,7 +2409,8 @@
|
|||||||
"name": "lz",
|
"name": "lz",
|
||||||
"hosts": [
|
"hosts": [
|
||||||
"vip.lz",
|
"vip.lz",
|
||||||
"hd.lz"
|
"hd.lz",
|
||||||
|
"v.cdnlz"
|
||||||
],
|
],
|
||||||
"regex": [
|
"regex": [
|
||||||
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.433333,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.433333,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||||
|
|||||||
@@ -45,9 +45,9 @@ let tabse = false;
|
|||||||
d.forEach(function(it) {
|
d.forEach(function(it) {
|
||||||
let burl = pdfh(it, 'a&&href');
|
let burl = pdfh(it, 'a&&href');
|
||||||
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
tabsa.push("阿里云盤");
|
tabsa.push("阿里雲盤");
|
||||||
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
tabsq.push("夸克云盤");
|
tabsq.push("夸克網盤");
|
||||||
}else if (burl.startsWith("magnet")){
|
}else if (burl.startsWith("magnet")){
|
||||||
tabsm = true;
|
tabsm = true;
|
||||||
}else if (burl.startsWith("ed2k")){
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
|||||||
@@ -0,0 +1,203 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'高清MP4吧',
|
||||||
|
host:'https://www.97tvs.com',
|
||||||
|
homeUrl: '/',
|
||||||
|
url: '/fyclass/page/fypage?',
|
||||||
|
filter_url:'{{fl.class}}',
|
||||||
|
filter:{
|
||||||
|
},
|
||||||
|
searchUrl: '/?s=**',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent': 'PC_UA',
|
||||||
|
'Cookie':'',
|
||||||
|
'Referer': 'http://www.97tvs.com/'
|
||||||
|
},
|
||||||
|
图片来源:'@Headers={"Accept":"*/*","Referer":"https://www.97tvs.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"}',
|
||||||
|
timeout:5000,
|
||||||
|
class_name: "动作片&科幻片&爱情片&喜剧片&剧情片&惊悚片&战争片&灾难片&罪案片&动画片&综艺&电视剧",
|
||||||
|
class_url: "action&science&love&comedy&story&thriller&war&disaster&crime&cartoon&variety&sitcoms",
|
||||||
|
play_parse:true,
|
||||||
|
play_json:[{
|
||||||
|
re:'*',
|
||||||
|
json:{
|
||||||
|
parse:0,
|
||||||
|
jx:0
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
推荐:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
let d = [];
|
||||||
|
let html = request(input);
|
||||||
|
let list = pdfa(html, 'div.mainleft ul#post_container li');
|
||||||
|
list.forEach(it => {
|
||||||
|
d.push({
|
||||||
|
title: pdfh(it, 'div.thumbnail img&&alt'),
|
||||||
|
desc: pdfh(it, 'div.info&&span.info_date&&Text') + ' / ' + pdfh(it, 'div.info&&span.info_category&&Text'),
|
||||||
|
pic_url: pd(it, 'div.thumbnail img&&src', HOST),
|
||||||
|
url: pd(it, 'div.thumbnail&&a&&href',HOST)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
一级:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
let d = [];
|
||||||
|
let html = request(input);
|
||||||
|
let list = pdfa(html, 'div.mainleft ul#post_container li');
|
||||||
|
list.forEach(it => {
|
||||||
|
d.push({
|
||||||
|
title: pdfh(it, 'div.thumbnail img&&alt'),
|
||||||
|
desc: pdfh(it, 'div.info&&span.info_date&&Text') + ' / ' + pdfh(it, 'div.info&&span.info_category&&Text'),
|
||||||
|
pic_url: pd(it, 'div.thumbnail img&&src', HOST),
|
||||||
|
url: pd(it, 'div.thumbnail&&a&&href',HOST)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
二级:{
|
||||||
|
title:"div.article_container h1&&Text",
|
||||||
|
img:"div#post_content img&&src",
|
||||||
|
desc:"div#post_content&&Text",
|
||||||
|
content:"div#post_content&&Text",
|
||||||
|
tabs:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
TABS=[]
|
||||||
|
let d = pdfa(html, 'div#post_content p');
|
||||||
|
let tabsa = [];
|
||||||
|
let tabsq = [];
|
||||||
|
let tabsm = false;
|
||||||
|
let tabse = false;
|
||||||
|
let tabm3u8 = [];
|
||||||
|
d.forEach(function(it) {
|
||||||
|
let burl = pdfh(it, 'a&&href');
|
||||||
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
|
tabsa.push("阿里雲盤");
|
||||||
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
|
tabsq.push("夸克網盤");
|
||||||
|
}else if (burl.startsWith("magnet")){
|
||||||
|
tabsm = true;
|
||||||
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
tabse = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (tabsm === true){
|
||||||
|
TABS.push("磁力");
|
||||||
|
}
|
||||||
|
if (tabse === true){
|
||||||
|
TABS.push("電驢");
|
||||||
|
}
|
||||||
|
let tmpIndex;
|
||||||
|
tmpIndex=1;
|
||||||
|
tabsa.forEach(function(it){
|
||||||
|
TABS.push(it + tmpIndex);
|
||||||
|
tmpIndex = tmpIndex + 1;
|
||||||
|
});
|
||||||
|
tmpIndex=1;
|
||||||
|
tabsq.forEach(function(it){
|
||||||
|
TABS.push(it + tmpIndex);
|
||||||
|
tmpIndex = tmpIndex + 1;
|
||||||
|
});
|
||||||
|
tabm3u8.forEach(function(it){
|
||||||
|
TABS.push(it);
|
||||||
|
});
|
||||||
|
log('97tvs TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
||||||
|
`,
|
||||||
|
lists:`js:
|
||||||
|
log(TABS);
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
LISTS = [];
|
||||||
|
let d = pdfa(html, 'div#post_content p');
|
||||||
|
let lista = [];
|
||||||
|
let listq = [];
|
||||||
|
let listm = [];
|
||||||
|
let liste = [];
|
||||||
|
let listm3u8 = {};
|
||||||
|
d.forEach(function(it){
|
||||||
|
let burl = pdfh(it, 'a&&href');
|
||||||
|
let title = pdfh(it, 'a&&Text');
|
||||||
|
log('97tvs title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
|
||||||
|
log('97tvs burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
|
||||||
|
let loopresult = title + '$' + burl;
|
||||||
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
|
if (true){
|
||||||
|
if (TABS.length==1){
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&confirm=0&url=" + encodeURIComponent(burl);
|
||||||
|
}else{
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&url=" + encodeURIComponent(burl);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
burl = "push://" + burl;
|
||||||
|
}
|
||||||
|
loopresult = title + '$' + burl;
|
||||||
|
lista.push(loopresult);
|
||||||
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
|
if (true){
|
||||||
|
if (TABS.length==1){
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&confirm=0&url=" + encodeURIComponent(burl);
|
||||||
|
}else{
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&url=" + encodeURIComponent(burl);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
burl = "push://" + burl;
|
||||||
|
}
|
||||||
|
loopresult = title + '$' + burl;
|
||||||
|
listq.push(loopresult);
|
||||||
|
}else if (burl.startsWith("magnet")){
|
||||||
|
listm.push(loopresult);
|
||||||
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
liste.push(loopresult);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (listm.length>0){
|
||||||
|
LISTS.push(listm);
|
||||||
|
}
|
||||||
|
if (liste.length>0){
|
||||||
|
LISTS.push(liste);
|
||||||
|
}
|
||||||
|
lista.forEach(function(it){
|
||||||
|
LISTS.push([it]);
|
||||||
|
});
|
||||||
|
listq.forEach(function(it){
|
||||||
|
LISTS.push([it]);
|
||||||
|
});
|
||||||
|
for ( const key in listm3u8 ){
|
||||||
|
if (listm3u8.hasOwnProperty(key)){
|
||||||
|
LISTS.push(listm3u8[key]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
`,
|
||||||
|
|
||||||
|
},
|
||||||
|
搜索:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
let search_html = request(input)
|
||||||
|
//log("97tvs search result>>>>>>>>>>>>>>>" + search_html);
|
||||||
|
let d=[];
|
||||||
|
let dlist = pdfa(search_html, 'div.mainleft ul#post_container li');
|
||||||
|
dlist.forEach(function(it){
|
||||||
|
let title = pdfh(it, 'div.thumbnail img&&alt').replace( /(<([^>]+)>)/ig, '');
|
||||||
|
if (searchObj.quick === true){
|
||||||
|
if (false && title.includes(KEY)){
|
||||||
|
title = KEY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let img = pd(it, 'div.thumbnail img&&src', HOST);
|
||||||
|
let content = pdfh(it, 'div.article div.entry_post&&Text');
|
||||||
|
let desc = pdfh(it, 'div.info&&span.info_date&&Text');
|
||||||
|
let url = pd(it, 'div.thumbnail&&a&&href', HOST);
|
||||||
|
d.push({
|
||||||
|
title:title,
|
||||||
|
img:img,
|
||||||
|
content:content,
|
||||||
|
desc:desc,
|
||||||
|
url:url
|
||||||
|
});
|
||||||
|
});
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
}
|
||||||
@@ -6,8 +6,8 @@ var rule = {
|
|||||||
title:'LIBVIO',
|
title:'LIBVIO',
|
||||||
模板:'首图2',
|
模板:'首图2',
|
||||||
// host:'https://tv.libvio.cc',
|
// host:'https://tv.libvio.cc',
|
||||||
host:'https://libvio.app',
|
host:'https://tv.libvio.cc',
|
||||||
hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src=jsp.pdfh(html,"li:eq(0)&&a:eq(0)&&href");print(src);HOST=src',
|
//hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src=jsp.pdfh(html,"li:eq(0)&&a:eq(0)&&href");print(src);HOST=src',
|
||||||
// url:'/type/fyclass-fypage.html',
|
// url:'/type/fyclass-fypage.html',
|
||||||
url:'/show/fyclassfyfilter.html',
|
url:'/show/fyclassfyfilter.html',
|
||||||
// url:'/show_fyclassfyfilter.html',
|
// url:'/show_fyclassfyfilter.html',
|
||||||
@@ -26,14 +26,98 @@ var rule = {
|
|||||||
},
|
},
|
||||||
class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
|
class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
|
||||||
// class_parse:'.stui-header__menu li;a&&Text;a&&href;/.*_(\\d+).html',
|
// class_parse:'.stui-header__menu li;a&&Text;a&&href;/.*_(\\d+).html',
|
||||||
tab_exclude:'夸克网盘|百度云盘',
|
tab_exclude: '百度',
|
||||||
pagecount:{"27":1},
|
pagecount:{"27":1},
|
||||||
lazy:`js: var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
|
二级: {
|
||||||
|
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
|
||||||
|
"img": ".stui-content__thumb .lazyload&&data-original",
|
||||||
|
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
|
||||||
|
"content": ".detail&&Text",
|
||||||
|
"tabs": `js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
TABS=[];
|
||||||
|
let tabsq=[];
|
||||||
|
let tabsm3u8=[];
|
||||||
|
let d = pdfa(html, 'div.stui-vodlist__head');
|
||||||
|
d.forEach(function(it) {
|
||||||
|
let name = pdfh(it, 'h3&&Text');
|
||||||
|
if (!/(猜你|喜欢|剧情|热播)/.test(name)){
|
||||||
|
log("libvio tabs name>>>>>>>>>>>>>>>" + name);
|
||||||
|
if (name.includes("夸克")){
|
||||||
|
tabsq.push("夸克網盤");
|
||||||
|
}else if (name.includes("阿里")){
|
||||||
|
tabsq.push("阿里雲盤");
|
||||||
|
}else{
|
||||||
|
tabsm3u8.push(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (tabsq.length==1){
|
||||||
|
TABS=TABS.concat(tabsq);
|
||||||
|
}else{
|
||||||
|
let tmpIndex=1;
|
||||||
|
tabsq.forEach(function(it){
|
||||||
|
TABS.push(it+tmpIndex);
|
||||||
|
tmpIndex++;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
TABS=TABS.concat(tabsm3u8);
|
||||||
|
log('libvio TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
||||||
|
`,
|
||||||
|
"lists":`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
LISTS = [];
|
||||||
|
let listq=[];
|
||||||
|
let listm3u8=[];
|
||||||
|
let d = pdfa(html, 'div.stui-vodlist__head');
|
||||||
|
d.forEach(function(it){
|
||||||
|
let name = pdfh(it, 'h3&&Text');
|
||||||
|
if (!/(猜你|喜欢|剧情|热播)/.test(name)){
|
||||||
|
log("libvio tabs name>>>>>>>>>>>>>>>" + name);
|
||||||
|
let durl = pdfa(it, 'ul li');
|
||||||
|
let dd = [];
|
||||||
|
durl.forEach(function(it1){
|
||||||
|
let dhref = pd(it1, 'a&&href', HOST);
|
||||||
|
let dname = pdfh(it1, 'a&&Text');
|
||||||
|
dd.push(dname + "$" + dhref);
|
||||||
|
});
|
||||||
|
if (/(夸克|阿里)/.test(name)){
|
||||||
|
listq.push(dd);
|
||||||
|
}else{
|
||||||
|
listm3u8.push(dd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
LISTS=LISTS.concat(listq);
|
||||||
|
LISTS=LISTS.concat(listm3u8);
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
lazy:`js:
|
||||||
|
log("libvio lazy player input>>>>>>>>>>>>"+input);
|
||||||
|
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
|
||||||
|
log("libvio lazy player json>>>>>>>>>>>>"+JSON.stringify(html));
|
||||||
var url = html.url;
|
var url = html.url;
|
||||||
var from = html.from;
|
var from = html.from;
|
||||||
var next = html.link_next;
|
var next = html.link_next;
|
||||||
var id = html.id;
|
var id = html.id;
|
||||||
var nid = html.nid;
|
var nid = html.nid;
|
||||||
|
if (/(www.aliyundrive.com|pan.quark.cn)/.test(url)){
|
||||||
|
let confirm = "";
|
||||||
|
if (TABS.length==1){
|
||||||
|
confirm="&confirm=0";
|
||||||
|
}
|
||||||
|
let type="ali";
|
||||||
|
if (url.includes("www.aliyundrive.com")){
|
||||||
|
type = "ali";
|
||||||
|
}else if (url.includes("pan.quark.cn")){
|
||||||
|
type = "quark";
|
||||||
|
}
|
||||||
|
input = {
|
||||||
|
jx: 0,
|
||||||
|
url: 'http://127.0.0.1:9978/proxy?do=' + type +'&type=push' + confirm + '&url=' + encodeURIComponent(url),
|
||||||
|
parse: 0
|
||||||
|
}
|
||||||
|
}else{
|
||||||
var paurl = request("https://libvio.cc/static/player/" + from + ".js").match(/ src="(.*?)'/)[1];
|
var paurl = request("https://libvio.cc/static/player/" + from + ".js").match(/ src="(.*?)'/)[1];
|
||||||
if (/https/.test(paurl)) {
|
if (/https/.test(paurl)) {
|
||||||
var purl = paurl + url + "&next=" + next + "&id=" + id + "&nid=" + nid;
|
var purl = paurl + url + "&next=" + next + "&id=" + id + "&nid=" + nid;
|
||||||
@@ -42,7 +126,9 @@ if (/https/.test(paurl)) {
|
|||||||
url: request(purl).match(/var .* = '(.*?)'/)[1],
|
url: request(purl).match(/var .* = '(.*?)'/)[1],
|
||||||
parse: 0
|
parse: 0
|
||||||
}
|
}
|
||||||
}`,
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
searchUrl:'/index.php/ajax/suggest?mid=1&wd=**&limit=50',
|
searchUrl:'/index.php/ajax/suggest?mid=1&wd=**&limit=50',
|
||||||
detailUrl:'/detail/fyid.html', //非必填,二级详情拼接链接
|
detailUrl:'/detail/fyid.html', //非必填,二级详情拼接链接
|
||||||
// detailUrl:'/detail_fyid.html', //非必填,二级详情拼接链接
|
// detailUrl:'/detail_fyid.html', //非必填,二级详情拼接链接
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ var rule = {
|
|||||||
tabs:`js:
|
tabs:`js:
|
||||||
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
TABS=[]
|
TABS=[]
|
||||||
TABS.push("夸克雲盤");
|
TABS.push("夸克網盤");
|
||||||
log('meijumi TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
log('meijumi TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
||||||
`,
|
`,
|
||||||
lists:`js:
|
lists:`js:
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ if (typeof play_url === "undefined") {
|
|||||||
var play_url = ""
|
var play_url = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
function getLists(html) {
|
function getLists(html)
|
||||||
|
{
|
||||||
let src = pdfh(html, ".wp-playlist-script&&Html");
|
let src = pdfh(html, ".wp-playlist-script&&Html");
|
||||||
src = JSON.parse(src).tracks;
|
src = JSON.parse(src).tracks;
|
||||||
let list1 = [];
|
let list1 = [];
|
||||||
@@ -41,7 +42,9 @@ var data = getLists(html);
|
|||||||
var list1 = data.list1;
|
var list1 = data.list1;
|
||||||
var list2 = data.list2;
|
var list2 = data.list2;
|
||||||
let nums = pdfa(html, "body&&.post-page-numbers");
|
let nums = pdfa(html, "body&&.post-page-numbers");
|
||||||
nums.forEach(function(it) {
|
nums.forEach
|
||||||
|
(function(it)
|
||||||
|
{
|
||||||
let num = pdfh(it, "body&&Text");
|
let num = pdfh(it, "body&&Text");
|
||||||
log(num);
|
log(num);
|
||||||
let nurl = input + num + "/";
|
let nurl = input + num + "/";
|
||||||
@@ -54,13 +57,29 @@ nums.forEach(function(it) {
|
|||||||
list1 = list1.concat(data.list1);
|
list1 = list1.concat(data.list1);
|
||||||
list2 = list2.concat(data.list2)
|
list2 = list2.concat(data.list2)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
list1 = list1.map(function(item) {
|
list1 = list1.map(function(item) {
|
||||||
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
|
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
|
||||||
});
|
});
|
||||||
list2 = list2.map(function(item) {
|
list2 = list2.map(function(item) {
|
||||||
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
|
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
|
||||||
});
|
});
|
||||||
LISTS = [list1, list2];
|
LISTS=[];
|
||||||
|
let dd = pdfa(html, 'div.wp-playlist~a');
|
||||||
|
dd.forEach(function(it){
|
||||||
|
let burl = pd(it, 'a&&href', HOST);
|
||||||
|
if (/(pan.quark.cn|www.aliyundrive.com)/.test(burl)){
|
||||||
|
let type="ali";
|
||||||
|
if (burl.includes("www.aliyundrive.com")){
|
||||||
|
type = "ali";
|
||||||
|
}else if (burl.includes("pan.quark.cn")){
|
||||||
|
type = "quark";
|
||||||
|
}
|
||||||
|
LISTS.push([burl+ '$' + play_url + urlencode('http://127.0.0.1:9978/proxy?do='+type+'&type=push&url='+encodeURIComponent(burl)) + '||']);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
LISTS = LISTS.concat([list1, list2]);
|
||||||
`;
|
`;
|
||||||
|
|
||||||
var lazy = `js:
|
var lazy = `js:
|
||||||
@@ -126,10 +145,29 @@ var rule={
|
|||||||
"img":".doulist-item&&img&&data-cfsrc",
|
"img":".doulist-item&&img&&data-cfsrc",
|
||||||
"desc":".published&&Text",
|
"desc":".published&&Text",
|
||||||
"content":".abstract&&Text",
|
"content":".abstract&&Text",
|
||||||
// "tabs":"js:TABS=['国内','海外(貌似不能播放)']",
|
"tabs":`js:
|
||||||
"tabs":"js:TABS=['国内(改Exo播放器)','国内2']",
|
TABS=[];
|
||||||
// "lists":"js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url===\"undefined\"){var play_url=\"\"}function getLists(html){let src=pdfh(html,\".wp-playlist-script&&Html\");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1=\"https://ddys.tv/getvddr/video?id=\"+src1+\"&dim=1080P+&type=mix\";let url2=\"https://w.ddys.tv\"+src0+\"?ddrkey=\"+src2;let zm=\"https://ddys.tv/subddr/\"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,\"body&&.post-page-numbers\");nums.forEach(function(it){let num=pdfh(it,\"body&&Text\");log(num);let nurl=input+num+\"/\";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+\"$\"+play_url+urlencode(item.url+\"|\"+input+\"|\"+item.desc)});list2=list2.map(function(item){return item.title+\"$\"+play_url+urlencode(item.url+\"|\"+input+\"|\"+item.desc)});LISTS=[list1,list2];",
|
let d = pdfa(html, 'div.wp-playlist~a');
|
||||||
// lists:'js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url==="undefined"){var play_url=""}function getLists(html){let src=pdfh(html,".wp-playlist-script&&Html");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1="https://ddys.pro/getvddr/video?id="+src1+"&dim=1080P+&type=mix";let url2="https://w.ddys.pro"+src0+"?ddrkey="+src2;let zm="https://ddys.pro/subddr/"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,"body&&.post-page-numbers");nums.forEach(function(it){let num=pdfh(it,"body&&Text");log(num);let nurl=input+num+"/";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});list2=list2.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});LISTS=[list1,list2];',
|
let tabsq=[];
|
||||||
|
d.forEach(function(it){
|
||||||
|
let burl = pd(it, 'a&&href', HOST);
|
||||||
|
if (burl.includes("pan.quark.cn")){
|
||||||
|
tabsq.push("夸克網盤");
|
||||||
|
}else if (burl.includes("www.aliyundrive.com")){
|
||||||
|
tabsq.push("阿里雲盤");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (tabsq.length == 1){
|
||||||
|
TABS=TABS.concat(tabsq);
|
||||||
|
}else{
|
||||||
|
let tmpIndex=1;
|
||||||
|
tabsq.forEach(function(it){
|
||||||
|
TABS.push(it+tmpIndex);
|
||||||
|
tmpIndex++;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
TABS=TABS.concat(['国内(改Exo播放器)','国内2']);
|
||||||
|
`,
|
||||||
"lists":lists
|
"lists":lists
|
||||||
},
|
},
|
||||||
搜索:'#main&&article;.post-title&&Text;;.published&&Text;a&&href'
|
搜索:'#main&&article;.post-title&&Text;;.published&&Text;a&&href'
|
||||||
|
|||||||
@@ -0,0 +1,136 @@
|
|||||||
|
var lists = `js:
|
||||||
|
log(TABS);
|
||||||
|
let d = [];
|
||||||
|
pdfh = jsp.pdfh;
|
||||||
|
pdfa = jsp.pdfa;
|
||||||
|
if (typeof play_url === "undefined") {
|
||||||
|
var play_url = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLists(html) {
|
||||||
|
let src = pdfh(html, ".wp-playlist-script&&Html");
|
||||||
|
src = JSON.parse(src).tracks;
|
||||||
|
let list1 = [];
|
||||||
|
let list2 = [];
|
||||||
|
let url1 = "";
|
||||||
|
let url2 = "";
|
||||||
|
src.forEach(function(it) {
|
||||||
|
let src0 = it.src0;
|
||||||
|
let src1 = it.src1;
|
||||||
|
let title = it.caption;
|
||||||
|
url1 = "https://v.ddys.pro" + src0;
|
||||||
|
url2 = "https://ddys.pro/getvddr2/video?id=" + src1 + "&type=mix";
|
||||||
|
let zm = "https://ddys.pro/subddr/" + it.subsrc;
|
||||||
|
list1.push({
|
||||||
|
title: title,
|
||||||
|
url: url1,
|
||||||
|
desc: zm
|
||||||
|
});
|
||||||
|
list2.push({
|
||||||
|
title: title,
|
||||||
|
url: url2,
|
||||||
|
desc: zm
|
||||||
|
})
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
list1: list1,
|
||||||
|
list2: list2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var data = getLists(html);
|
||||||
|
var list1 = data.list1;
|
||||||
|
var list2 = data.list2;
|
||||||
|
let nums = pdfa(html, "body&&.post-page-numbers");
|
||||||
|
nums.forEach(function(it) {
|
||||||
|
let num = pdfh(it, "body&&Text");
|
||||||
|
log(num);
|
||||||
|
let nurl = input + num + "/";
|
||||||
|
if (num == 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log(nurl);
|
||||||
|
let html = request(nurl);
|
||||||
|
let data = getLists(html);
|
||||||
|
list1 = list1.concat(data.list1);
|
||||||
|
list2 = list2.concat(data.list2)
|
||||||
|
});
|
||||||
|
list1 = list1.map(function(item) {
|
||||||
|
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
|
||||||
|
});
|
||||||
|
list2 = list2.map(function(item) {
|
||||||
|
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
|
||||||
|
});
|
||||||
|
LISTS = [list1, list2];
|
||||||
|
`;
|
||||||
|
|
||||||
|
var lazy = `js:
|
||||||
|
let purl = input.split("|")[0];
|
||||||
|
let referer = input.split("|")[1];
|
||||||
|
let zm = input.split("|")[2];
|
||||||
|
print("purl:" + purl);
|
||||||
|
print("referer:" + referer);
|
||||||
|
print("zm:" + zm);
|
||||||
|
if (/getvddr/.test(purl)) {
|
||||||
|
let html = request(purl, {
|
||||||
|
headers: {
|
||||||
|
Referer: HOST,
|
||||||
|
"User-Agent": MOBILE_UA
|
||||||
|
}
|
||||||
|
});
|
||||||
|
print(html);
|
||||||
|
try {
|
||||||
|
input = {jx:0,url:JSON.parse(html).url,parse:0} || {}
|
||||||
|
} catch (e) {
|
||||||
|
input = purl
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
input = {
|
||||||
|
jx: 0,
|
||||||
|
url: purl,
|
||||||
|
parse: 0,
|
||||||
|
header: JSON.stringify({
|
||||||
|
'user-agent': MOBILE_UA,
|
||||||
|
'referer': HOST
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 网址发布页 https://ddys.site
|
||||||
|
// 网址发布页 https://ddys.wiki
|
||||||
|
var rule={
|
||||||
|
title:'ddys',
|
||||||
|
// host:'https://ddys.wiki',
|
||||||
|
// hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":MOBILE_UA}});HOST = jsp.pdfh(html,"a:eq(1)&&href")',
|
||||||
|
host:'https://ddys.pro',
|
||||||
|
// host:'https://ddys.mov',
|
||||||
|
url:'/fyclass/page/fypage/',
|
||||||
|
searchUrl:'/?s=**&post_type=post',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA',
|
||||||
|
},
|
||||||
|
class_parse:'#primary-menu li.menu-item;a&&Text;a&&href;\.pro/(.*)',
|
||||||
|
cate_exclude:'站长|^其他$|关于|^电影$|^剧集$|^类型$',
|
||||||
|
play_parse:true,
|
||||||
|
// lazy:'js:let purl=input.split("|")[0];let referer=input.split("|")[1];let zm=input.split("|")[2];print("purl:"+purl);print("referer:"+referer);print("zm:"+zm);let myua="okhttp/3.15";if(/ddrkey/.test(purl)){let ret=request(purl,{Referer:referer,withHeaders:true,"User-Agent":myua});log(ret);input=purl}else{let html=request(purl,{headers:{Referer:referer,"User-Agent":myua}});print(html);try{input=JSON.parse(html).url||{}}catch(e){input=purl}}',
|
||||||
|
lazy:lazy,
|
||||||
|
limit:6,
|
||||||
|
推荐:'*',
|
||||||
|
double:true, // 推荐内容是否双层定位
|
||||||
|
一级:'.post-box-list&&article;a:eq(-1)&&Text;.post-box-image&&style;a:eq(0)&&Text;a:eq(-1)&&href',
|
||||||
|
二级:{
|
||||||
|
"title":".post-title&&Text;.cat-links&&Text",
|
||||||
|
"img":".doulist-item&&img&&data-cfsrc",
|
||||||
|
"desc":".published&&Text",
|
||||||
|
"content":".abstract&&Text",
|
||||||
|
// "tabs":"js:TABS=['国内','海外(貌似不能播放)']",
|
||||||
|
"tabs":"js:TABS=['国内(改Exo播放器)','国内2']",
|
||||||
|
// "lists":"js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url===\"undefined\"){var play_url=\"\"}function getLists(html){let src=pdfh(html,\".wp-playlist-script&&Html\");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1=\"https://ddys.tv/getvddr/video?id=\"+src1+\"&dim=1080P+&type=mix\";let url2=\"https://w.ddys.tv\"+src0+\"?ddrkey=\"+src2;let zm=\"https://ddys.tv/subddr/\"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,\"body&&.post-page-numbers\");nums.forEach(function(it){let num=pdfh(it,\"body&&Text\");log(num);let nurl=input+num+\"/\";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+\"$\"+play_url+urlencode(item.url+\"|\"+input+\"|\"+item.desc)});list2=list2.map(function(item){return item.title+\"$\"+play_url+urlencode(item.url+\"|\"+input+\"|\"+item.desc)});LISTS=[list1,list2];",
|
||||||
|
// lists:'js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url==="undefined"){var play_url=""}function getLists(html){let src=pdfh(html,".wp-playlist-script&&Html");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1="https://ddys.pro/getvddr/video?id="+src1+"&dim=1080P+&type=mix";let url2="https://w.ddys.pro"+src0+"?ddrkey="+src2;let zm="https://ddys.pro/subddr/"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,"body&&.post-page-numbers");nums.forEach(function(it){let num=pdfh(it,"body&&Text");log(num);let nurl=input+num+"/";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});list2=list2.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});LISTS=[list1,list2];',
|
||||||
|
"lists":lists
|
||||||
|
},
|
||||||
|
搜索:'#main&&article;.post-title&&Text;;.published&&Text;a&&href'
|
||||||
|
}
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
var rule = {
|
||||||
|
title: 'dydhhy',
|
||||||
|
host: 'http://www.dydhhy.com',
|
||||||
|
homeUrl: '/',
|
||||||
|
url: '/tag/fyclass/page/fypage?',
|
||||||
|
filter_url: '{{fl.class}}',
|
||||||
|
filter: {},
|
||||||
|
searchUrl: '/?s=**',
|
||||||
|
searchable: 2,
|
||||||
|
quickSearch: 1,
|
||||||
|
filterable: 0,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
'Cookie': ''
|
||||||
|
},
|
||||||
|
timeout: 5000,
|
||||||
|
class_name: '电视剧&电影&美剧&韩剧&日剧&英剧&2023&2022&2021',
|
||||||
|
class_url: 'tv&movie&美剧&韩剧&日剧&英剧&2023&2022&2021',
|
||||||
|
play_parse: true,
|
||||||
|
play_json: [{
|
||||||
|
re: '*',
|
||||||
|
json: {
|
||||||
|
parse: 0,
|
||||||
|
jx: 0
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: 'div.clear:gt(1):has(img);.entry-title&&Text;img&&src;;a&&href',
|
||||||
|
一级: 'div.clear:gt(1):has(img);.entry-title&&Text;img&&src;;a&&href',
|
||||||
|
二级: {
|
||||||
|
title: ".single-excerpt&&Text",
|
||||||
|
img: "img&&src",
|
||||||
|
desc: ".entry-date&&Text",
|
||||||
|
content: "p&&Text",
|
||||||
|
tabs: `js: pdfh = jsp.pdfh;
|
||||||
|
pdfa = jsp.pdfa;
|
||||||
|
pd = jsp.pd;
|
||||||
|
TABS=[]
|
||||||
|
let d = pdfa(html, 'fieldset p a');
|
||||||
|
let tabsa = [];
|
||||||
|
let tabsq = [];
|
||||||
|
let tabsm = false;
|
||||||
|
let tabse = false;
|
||||||
|
d.forEach(function(it) {
|
||||||
|
let burl = pdfh(it, 'a&&href');
|
||||||
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
|
tabsa.push("阿里雲盤");
|
||||||
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
|
tabsq.push("夸克網盤");
|
||||||
|
}else if (burl.startsWith("magnet")){
|
||||||
|
tabsm = true;
|
||||||
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
tabse = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (tabsm === true){
|
||||||
|
TABS.push("磁力");
|
||||||
|
}
|
||||||
|
if (tabse === true){
|
||||||
|
TABS.push("電驢");
|
||||||
|
}
|
||||||
|
if (false && tabsa.length + tabsq.length > 1){
|
||||||
|
TABS.push("選擇右側綫路");
|
||||||
|
}
|
||||||
|
let tmpIndex;
|
||||||
|
tmpIndex=1;
|
||||||
|
tabsa.forEach(function(it){
|
||||||
|
TABS.push(it + tmpIndex);
|
||||||
|
tmpIndex = tmpIndex + 1;
|
||||||
|
});
|
||||||
|
tmpIndex=1;
|
||||||
|
tabsq.forEach(function(it){
|
||||||
|
TABS.push(it + tmpIndex);
|
||||||
|
tmpIndex = tmpIndex + 1;
|
||||||
|
});
|
||||||
|
log('xzys TABS >>>>>>>>>>>>>>>>>>' + TABS);`,
|
||||||
|
lists: `js: log(TABS);
|
||||||
|
pdfh = jsp.pdfh;
|
||||||
|
pdfa = jsp.pdfa;
|
||||||
|
pd = jsp.pd;
|
||||||
|
LISTS = [];
|
||||||
|
let d = pdfa(html, 'fieldset p a');
|
||||||
|
let lista = [];
|
||||||
|
let listq = [];
|
||||||
|
let listm = [];
|
||||||
|
let liste = [];
|
||||||
|
d.forEach(function(it){
|
||||||
|
let burl = pdfh(it, 'a&&href');
|
||||||
|
let title = pdfh(it, 'a&&Text');
|
||||||
|
log('dygang title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
|
||||||
|
log('dygang burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
|
||||||
|
let loopresult = title + '$' + burl;
|
||||||
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
|
if (true){
|
||||||
|
if (TABS.length==1){
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&confirm=0&url=" + encodeURIComponent(burl);
|
||||||
|
}else{
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&url=" + encodeURIComponent(burl);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
burl = "push://" + burl;
|
||||||
|
}
|
||||||
|
loopresult = title + '$' + burl;
|
||||||
|
lista.push(loopresult);
|
||||||
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
|
if (true){
|
||||||
|
if (TABS.length==1){
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&confirm=0&url=" + encodeURIComponent(burl);
|
||||||
|
}else{
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&url=" + encodeURIComponent(burl);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
burl = "push://" + burl;
|
||||||
|
}
|
||||||
|
loopresult = title + '$' + burl;
|
||||||
|
listq.push(loopresult);
|
||||||
|
}else if (burl.startsWith("magnet")){
|
||||||
|
listm.push(loopresult);
|
||||||
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
liste.push(loopresult);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (listm.length>0){
|
||||||
|
LISTS.push(listm);
|
||||||
|
}
|
||||||
|
if (liste.length>0){
|
||||||
|
LISTS.push(liste);
|
||||||
|
}
|
||||||
|
if (false && lista.length + listq.length > 1){
|
||||||
|
LISTS.push(["選擇右側綫路,或3秒後自動跳過$http://127.0.0.1:10079/delay/"]);
|
||||||
|
}
|
||||||
|
lista.forEach(function(it){
|
||||||
|
LISTS.push([it]);
|
||||||
|
});
|
||||||
|
listq.forEach(function(it){
|
||||||
|
LISTS.push([it]);
|
||||||
|
|
||||||
|
});`,
|
||||||
|
|
||||||
|
}, 搜索: 'div.clear:gt(0):has(img);img&&alt;img&&data-src;;a&&href',
|
||||||
|
}
|
||||||
@@ -58,18 +58,18 @@ var rule = {
|
|||||||
tabs:`js:
|
tabs:`js:
|
||||||
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
TABS=[]
|
TABS=[]
|
||||||
let d = pdfa(html, '#dede_content table tbody tr a');
|
let d = pdfa(html, '#dede_content table tbody tr');
|
||||||
let tabsa = [];
|
let tabsa = [];
|
||||||
let tabsq = [];
|
let tabsq = [];
|
||||||
let tabsm = false;
|
let tabsm = false;
|
||||||
let tabse = false;
|
let tabse = false;
|
||||||
let tabm3u8 = [];
|
let tabm3u8 = [];
|
||||||
d.forEach(function(it) {
|
d.forEach(function(it) {
|
||||||
let burl = pdfh(it, 'a&&href');
|
let burl = pd(it, 'a&&href',HOST);
|
||||||
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
tabsa.push("阿里云盤");
|
tabsa.push("阿里雲盤");
|
||||||
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
tabsq.push("夸克云盤");
|
tabsq.push("夸克網盤");
|
||||||
}else if (burl.startsWith("magnet")){
|
}else if (burl.startsWith("magnet")){
|
||||||
tabsm = true;
|
tabsm = true;
|
||||||
}else if (burl.startsWith("ed2k")){
|
}else if (burl.startsWith("ed2k")){
|
||||||
@@ -111,14 +111,14 @@ log('dygang TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
|||||||
log(TABS);
|
log(TABS);
|
||||||
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
LISTS = [];
|
LISTS = [];
|
||||||
let d = pdfa(html, '#dede_content table tbody tr a');
|
let d = pdfa(html, '#dede_content table tbody tr');
|
||||||
let lista = [];
|
let lista = [];
|
||||||
let listq = [];
|
let listq = [];
|
||||||
let listm = [];
|
let listm = [];
|
||||||
let liste = [];
|
let liste = [];
|
||||||
let listm3u8 = {};
|
let listm3u8 = {};
|
||||||
d.forEach(function(it){
|
d.forEach(function(it){
|
||||||
let burl = pdfh(it, 'a&&href');
|
let burl = pd(it, 'a&&href',HOST);
|
||||||
let title = pdfh(it, 'a&&Text');
|
let title = pdfh(it, 'a&&Text');
|
||||||
log('dygang title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
|
log('dygang title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
|
||||||
log('dygang burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
|
log('dygang burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
|
||||||
@@ -153,51 +153,12 @@ d.forEach(function(it){
|
|||||||
liste.push(loopresult);
|
liste.push(loopresult);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (false){
|
|
||||||
d = pdfa(html, 'div:has(>div#post_content) div.widget:has(>h3)');
|
|
||||||
d.forEach(function(it){
|
|
||||||
let index = pdfh(it, 'h3&&Text');
|
|
||||||
let burl = pd(it, 'a&&href', HOST);
|
|
||||||
let title = pdfh(it, 'a&&Text');
|
|
||||||
log('xb6v title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
|
|
||||||
log('xb6v burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
|
|
||||||
let m3u8_html = request(burl);
|
|
||||||
let playerUrl = pd(m3u8_html, 'div.video&&iframe&&src', HOST);
|
|
||||||
log('xb6v playerUrl >>>>>>>>>>>>>>>>>>>>>>>>>>' + playerUrl);
|
|
||||||
if (!listm3u8.hasOwnProperty(index)){
|
|
||||||
listm3u8[index] = [];
|
|
||||||
}
|
|
||||||
let loopresult = title + '$' + ' ';
|
|
||||||
if (/(\/player\/|\/share\/)/.test(playerUrl)){
|
|
||||||
let player_html = request(playerUrl);
|
|
||||||
let m3u8Url="";
|
|
||||||
try{
|
|
||||||
m3u8Url = player_html.match(/'([^']*.m3u8)'/)[1];
|
|
||||||
}catch(e){
|
|
||||||
try{
|
|
||||||
m3u8Url = player_html.match(/"([^"]*.m3u8)"/)[1];
|
|
||||||
}catch(e){
|
|
||||||
m3u8Url = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (m3u8Url !== ""){
|
|
||||||
m3u8Url = urljoin2(playerUrl, m3u8Url);
|
|
||||||
log('xb6v m3u8Url >>>>>>>>>>>>>>>>>>>>>>>>>>' + m3u8Url);
|
|
||||||
loopresult = title + '$' + m3u8Url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
listm3u8[index].push(loopresult);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (listm.length>0){
|
if (listm.length>0){
|
||||||
LISTS.push(listm);
|
LISTS.push(listm);
|
||||||
}
|
}
|
||||||
if (liste.length>0){
|
if (liste.length>0){
|
||||||
LISTS.push(liste);
|
LISTS.push(liste);
|
||||||
}
|
}
|
||||||
if (false && lista.length + listq.length > 1){
|
|
||||||
LISTS.push(["選擇右側綫路,或3秒後自動跳過$http://127.0.0.1:10079/delay/"]);
|
|
||||||
}
|
|
||||||
lista.forEach(function(it){
|
lista.forEach(function(it){
|
||||||
LISTS.push([it]);
|
LISTS.push([it]);
|
||||||
});
|
});
|
||||||
@@ -230,7 +191,7 @@ let dlist = pdfa(search_html, 'table.border1');
|
|||||||
dlist.forEach(function(it){
|
dlist.forEach(function(it){
|
||||||
let title = pdfh(it, 'img&&alt');
|
let title = pdfh(it, 'img&&alt');
|
||||||
if (searchObj.quick === true){
|
if (searchObj.quick === true){
|
||||||
if (title.includes(KEY)){
|
if (false && title.includes(KEY)){
|
||||||
title = KEY;
|
title = KEY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ var rule = {
|
|||||||
推荐:'',
|
推荐:'',
|
||||||
一级:'',
|
一级:'',
|
||||||
二级:`js:
|
二级:`js:
|
||||||
VOD.vod_play_from = "夸克雲盤";
|
VOD.vod_play_from = "夸克網盤";
|
||||||
VOD.vod_remarks = detailUrl;
|
VOD.vod_remarks = detailUrl;
|
||||||
VOD.vod_actor = "沒有二級,只有一級鏈接直接推送播放";
|
VOD.vod_actor = "沒有二級,只有一級鏈接直接推送播放";
|
||||||
VOD.vod_content = MY_URL;
|
VOD.vod_content = MY_URL;
|
||||||
VOD.vod_play_url = "夸克雲盤$" + detailUrl;
|
VOD.vod_play_url = "夸克網盤$" + detailUrl;
|
||||||
`,
|
`,
|
||||||
搜索:`js:
|
搜索:`js:
|
||||||
let postJson = {
|
let postJson = {
|
||||||
|
|||||||
@@ -18,7 +18,11 @@ VOD.vod_name = pdfh(html1, "h2&&Text");
|
|||||||
VOD.vod_director = "";
|
VOD.vod_director = "";
|
||||||
VOD.vod_content = "";
|
VOD.vod_content = "";
|
||||||
log(VOD);
|
log(VOD);
|
||||||
input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2";
|
var v_tks = '';
|
||||||
|
let script = pdfa(html1,'script').find(it=>it.includes('v_tks+=')).replace(/<script>|<\\/script>/g,'');
|
||||||
|
eval(script);
|
||||||
|
input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2"+"&token="+v_tks;
|
||||||
|
// input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2";
|
||||||
let html = request(input, {
|
let html = request(input, {
|
||||||
headers: {
|
headers: {
|
||||||
'User-Agent':'PC_UA',
|
'User-Agent':'PC_UA',
|
||||||
@@ -63,7 +67,8 @@ var rule = {
|
|||||||
host:'https://www.ikanbot.com',
|
host:'https://www.ikanbot.com',
|
||||||
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
||||||
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
||||||
searchUrl:'/search?q=**&p=fypage',
|
// searchUrl:'/search?q=**&p=fypage',
|
||||||
|
searchUrl:'/search?q=**',
|
||||||
searchable:2,
|
searchable:2,
|
||||||
quickSearch:0,
|
quickSearch:0,
|
||||||
filterable:1,
|
filterable:1,
|
||||||
|
|||||||
@@ -17,7 +17,11 @@ try {
|
|||||||
VOD.vod_director = "";
|
VOD.vod_director = "";
|
||||||
VOD.vod_content = "";
|
VOD.vod_content = "";
|
||||||
log(VOD);
|
log(VOD);
|
||||||
input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2";
|
var v_tks = '';
|
||||||
|
let script = pdfa(html1,'script').find(it=>it.includes('v_tks+=')).replace(/<script>|<\\/script>/g,'');
|
||||||
|
eval(script);
|
||||||
|
input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2"+"&token="+v_tks;
|
||||||
|
// input = "https://www.ikanbot.com/api/getResN?videoId=" + input.split("/").pop() + "&mtype=2";
|
||||||
let html = request(input, {
|
let html = request(input, {
|
||||||
headers: {
|
headers: {
|
||||||
'User-Agent':'PC_UA',
|
'User-Agent':'PC_UA',
|
||||||
@@ -106,7 +110,8 @@ var rule = {
|
|||||||
host:'https://www.ikanbot.com',
|
host:'https://www.ikanbot.com',
|
||||||
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
||||||
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
||||||
searchUrl:'/search?q=**&p=fypage',
|
// searchUrl:'/search?q=**&p=fypage',
|
||||||
|
searchUrl:'/search?q=**',
|
||||||
searchable:2,
|
searchable:2,
|
||||||
quickSearch:0,
|
quickSearch:0,
|
||||||
filterable:1,
|
filterable:1,
|
||||||
|
|||||||
@@ -51,9 +51,9 @@ let d = pdfa(html, '#post_content p a');
|
|||||||
d.forEach(function(it) {
|
d.forEach(function(it) {
|
||||||
let burl = pdfh(it, 'a&&href');
|
let burl = pdfh(it, 'a&&href');
|
||||||
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
tabsa.push("阿里云盤");
|
tabsa.push("阿里雲盤");
|
||||||
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
tabsq.push("夸克云盤");
|
tabsq.push("夸克網盤");
|
||||||
}else if (burl.startsWith("magnet")){
|
}else if (burl.startsWith("magnet")){
|
||||||
tabsm = true;
|
tabsm = true;
|
||||||
}else if (burl.startsWith("ed2k")){
|
}else if (burl.startsWith("ed2k")){
|
||||||
@@ -64,9 +64,9 @@ d = pdfa(html, 'div#down p.down-list3 a');
|
|||||||
d.forEach(function(it) {
|
d.forEach(function(it) {
|
||||||
let burl = pdfh(it, 'a&&href');
|
let burl = pdfh(it, 'a&&href');
|
||||||
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
tabsa.push("阿里云盤");
|
tabsa.push("阿里雲盤");
|
||||||
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
tabsq.push("夸克云盤");
|
tabsq.push("夸克網盤");
|
||||||
}else if (burl.startsWith("magnet")){
|
}else if (burl.startsWith("magnet")){
|
||||||
tabsm = true;
|
tabsm = true;
|
||||||
}else if (burl.startsWith("ed2k")){
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ var rule = {
|
|||||||
lazy:'',
|
lazy:'',
|
||||||
limit:6,
|
limit:6,
|
||||||
推荐:'',
|
推荐:'',
|
||||||
一级:'',
|
|
||||||
一级:`js:
|
一级:`js:
|
||||||
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
let d = [];
|
let d = [];
|
||||||
@@ -64,7 +63,7 @@ if (false && d.length>1){
|
|||||||
TABS.push("選擇右側綫路");
|
TABS.push("選擇右側綫路");
|
||||||
}
|
}
|
||||||
d.forEach(function(it) {
|
d.forEach(function(it) {
|
||||||
TABS.push("夸克雲盤" + index);
|
TABS.push("夸克網盤" + index);
|
||||||
index = index + 1;
|
index = index + 1;
|
||||||
});
|
});
|
||||||
log('meijumi TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
log('meijumi TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ playGroups.forEach(function (it) {
|
|||||||
haveDelay = true;
|
haveDelay = true;
|
||||||
TABS.push("選擇右側綫路");
|
TABS.push("選擇右側綫路");
|
||||||
}
|
}
|
||||||
TABS.push("夸克雲盤" + groupIndex);
|
TABS.push("夸克網盤" + groupIndex);
|
||||||
}
|
}
|
||||||
groupIndex = groupIndex + 1;
|
groupIndex = groupIndex + 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,9 +45,9 @@ let tabse = false;
|
|||||||
d.forEach(function(it) {
|
d.forEach(function(it) {
|
||||||
let burl = pdfh(it, 'a&&href');
|
let burl = pdfh(it, 'a&&href');
|
||||||
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
tabsa.push("阿里云盤");
|
tabsa.push("阿里雲盤");
|
||||||
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
tabsq.push("夸克云盤");
|
tabsq.push("夸克網盤");
|
||||||
}else if (burl.startsWith("magnet")){
|
}else if (burl.startsWith("magnet")){
|
||||||
tabsm = true;
|
tabsm = true;
|
||||||
}else if (burl.startsWith("ed2k")){
|
}else if (burl.startsWith("ed2k")){
|
||||||
@@ -157,7 +157,7 @@ let dlist = pdfa(search_html, 'div#list_all li');
|
|||||||
dlist.forEach(function(it){
|
dlist.forEach(function(it){
|
||||||
let title = pdfh(it, 'img.lazy&&alt');
|
let title = pdfh(it, 'img.lazy&&alt');
|
||||||
if (searchObj.quick === true){
|
if (searchObj.quick === true){
|
||||||
if (title.includes(KEY)){
|
if (false && title.includes(KEY)){
|
||||||
title = KEY;
|
title = KEY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'奇妙搜[夸]',
|
||||||
|
host:'https://www.magicalsearch.top',
|
||||||
|
homeUrl:'/',
|
||||||
|
url: '/search?',
|
||||||
|
filter_url:'{{fl.class}}',
|
||||||
|
filter:{
|
||||||
|
},
|
||||||
|
搜索编码: 'utf-8',
|
||||||
|
searchUrl: '/api/pshou/getData?type=%E9%98%BF%E9%87%8C%E7%BD%91%E7%9B%98&word=**',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent': PC_UA,
|
||||||
|
'Accept': '*/*',
|
||||||
|
'Referer': 'https://www.magicalsearch.top/'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
class_name:'',
|
||||||
|
class_url:'',
|
||||||
|
play_parse:true,
|
||||||
|
play_json:[{
|
||||||
|
re:'*',
|
||||||
|
json:{
|
||||||
|
parse:0,
|
||||||
|
jx:0
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
推荐:'',
|
||||||
|
一级:'',
|
||||||
|
二级:`js:
|
||||||
|
VOD.vod_play_from = "網盤";
|
||||||
|
VOD.vod_remarks = detailUrl;
|
||||||
|
VOD.vod_actor = "沒有二級,只有一級鏈接直接推送播放";
|
||||||
|
VOD.vod_content = MY_URL;
|
||||||
|
VOD.vod_play_url = "播放$" + detailUrl;
|
||||||
|
`,
|
||||||
|
搜索:`js:
|
||||||
|
let new_html=request(input);
|
||||||
|
//log("qimiao search result>>>>>>>>>>>>>>>" + new_html);
|
||||||
|
let json=JSON.parse(JSON.parse(new_html));
|
||||||
|
json = json.result.items;
|
||||||
|
let d=[];
|
||||||
|
for(const it in json){
|
||||||
|
if (json.hasOwnProperty(it)){
|
||||||
|
log("qimiao search it>>>>>>>>>>>>>>>" + JSON.stringify(json[it]));
|
||||||
|
if (json[it].title.includes(KEY)){
|
||||||
|
d.push({
|
||||||
|
title:json[it].title,
|
||||||
|
img:'',
|
||||||
|
content:json[it].content.title,
|
||||||
|
desc:json[it].insert_time,
|
||||||
|
url:'push://'+json[it].page_url
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
}
|
||||||
@@ -0,0 +1,130 @@
|
|||||||
|
var rule = {
|
||||||
|
title: 'RRDY網',
|
||||||
|
host: 'https://www.rrdynb.com',
|
||||||
|
homeUrl: '/',
|
||||||
|
url: '/fyclass_fypage.html?',
|
||||||
|
filter_url: '{{fl.class}}',
|
||||||
|
filter: {},
|
||||||
|
searchUrl: '/plus/search.php?q=**&pagesize=10&submit=',
|
||||||
|
searchable: 2,
|
||||||
|
quickSearch: 1,
|
||||||
|
filterable: 0,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'PC_UA',
|
||||||
|
'Cookie': ''
|
||||||
|
},
|
||||||
|
timeout: 5000,
|
||||||
|
class_name: '影视&電視劇&老電影&動漫',
|
||||||
|
class_url: 'movie/list_2&dianshiju/list_6&zongyi/list_10&dongman/list_13',
|
||||||
|
play_parse: true,
|
||||||
|
play_json: [{
|
||||||
|
re: '*',
|
||||||
|
json: {
|
||||||
|
parse: 0,
|
||||||
|
jx: 0
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: '',
|
||||||
|
一级: 'li:has(img);img&&alt;img&&data-original;;a&&href',
|
||||||
|
二级: {
|
||||||
|
title: "h1&&Text",
|
||||||
|
img: "img&&src",
|
||||||
|
desc: "",
|
||||||
|
content: "span&&Text",
|
||||||
|
tabs: `js: pdfh = jsp.pdfh;
|
||||||
|
pdfa = jsp.pdfa;
|
||||||
|
pd = jsp.pd;
|
||||||
|
TABS = []
|
||||||
|
let d = pdfa(html, 'span a');
|
||||||
|
let tabsa = [];
|
||||||
|
let tabsq = [];
|
||||||
|
let tabsm = false;
|
||||||
|
let tabse = false;
|
||||||
|
d.forEach(function(it) {
|
||||||
|
let burl = pdfh(it, 'a&&href');
|
||||||
|
if (burl.startsWith("https://www.aliyundrive.com/s/")) {
|
||||||
|
tabsa.push("阿里雲盤");
|
||||||
|
} else if (burl.startsWith("https://pan.quark.cn/s/")) {
|
||||||
|
tabsq.push("夸克網盤");
|
||||||
|
} else if (burl.startsWith("magnet")) {
|
||||||
|
tabsm = true;
|
||||||
|
} else if (burl.startsWith("ed2k")) {
|
||||||
|
tabse = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (tabsm === true) {
|
||||||
|
TABS.push("磁力");
|
||||||
|
}
|
||||||
|
if (tabse === true) {
|
||||||
|
TABS.push("電驢");
|
||||||
|
}
|
||||||
|
let tmpIndex;
|
||||||
|
tmpIndex = 1;
|
||||||
|
tabsa.forEach(function(it) {
|
||||||
|
TABS.push(it + tmpIndex);
|
||||||
|
tmpIndex = tmpIndex + 1;
|
||||||
|
});
|
||||||
|
tmpIndex = 1;
|
||||||
|
tabsq.forEach(function(it) {
|
||||||
|
TABS.push(it + tmpIndex);
|
||||||
|
tmpIndex = tmpIndex + 1;
|
||||||
|
});
|
||||||
|
log('alyps TABS >>>>>>>>>>>>>>>>>>' + TABS);`,
|
||||||
|
lists: `js: log(TABS);
|
||||||
|
pdfh = jsp.pdfh;
|
||||||
|
pdfa = jsp.pdfa;
|
||||||
|
pd = jsp.pd;
|
||||||
|
LISTS = [];
|
||||||
|
let d = pdfa(html, 'span a');
|
||||||
|
let lista = [];
|
||||||
|
let listq = [];
|
||||||
|
let listm = [];
|
||||||
|
let liste = [];
|
||||||
|
d.forEach(function(it) {
|
||||||
|
let burl = pdfh(it, 'a&&href');
|
||||||
|
let title = pdfh(it, 'a&&Text');
|
||||||
|
log('alyps title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
|
||||||
|
log('alyps burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
|
||||||
|
let loopresult = title + '$' + burl;
|
||||||
|
if (burl.startsWith("https://www.aliyundrive.com/s/")) {
|
||||||
|
if (TABS.length == 1) {
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&confirm=0&url=" + encodeURIComponent(burl);
|
||||||
|
} else {
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&url=" + encodeURIComponent(burl);
|
||||||
|
}
|
||||||
|
loopresult = title + '$' + burl;
|
||||||
|
lista.push(loopresult);
|
||||||
|
} else if (burl.startsWith("https://pan.quark.cn/s/")) {
|
||||||
|
if (TABS.length == 1) {
|
||||||
|
burl = burl.replace("?entry=sjss", ""),
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&confirm=0&url=" + encodeURIComponent(burl);
|
||||||
|
} else {
|
||||||
|
burl = burl.replace("?entry=sjss", ""),
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&url=" + encodeURIComponent(burl);
|
||||||
|
}
|
||||||
|
loopresult = title + '$' + burl;
|
||||||
|
listq.push(loopresult);
|
||||||
|
} else if (burl.startsWith("magnet")) {
|
||||||
|
listm.push(loopresult);
|
||||||
|
} else if (burl.startsWith("ed2k")) {
|
||||||
|
liste.push(loopresult);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (listm.length > 0) {
|
||||||
|
LISTS.push(listm.reverse());
|
||||||
|
}
|
||||||
|
if (liste.length > 0) {
|
||||||
|
LISTS.push(liste.reverse());
|
||||||
|
}
|
||||||
|
lista.forEach(function(it) {
|
||||||
|
LISTS.push([it]);
|
||||||
|
});
|
||||||
|
listq.forEach(function(it) {
|
||||||
|
LISTS.push([it]);
|
||||||
|
});`,
|
||||||
|
|
||||||
|
},
|
||||||
|
搜索: 'li:has(img);h2&&Text;img&&data-original;.tags&&Text;a&&href',
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'团长资源',
|
||||||
|
host:'https://t-rex.tzfile.com',
|
||||||
|
homeUrl:'/',
|
||||||
|
url: '/fyclass/page/fypage?',
|
||||||
|
filter_url:'{{fl.class}}',
|
||||||
|
filter:{
|
||||||
|
},
|
||||||
|
searchUrl: '/?s=**&type=post',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent': 'PC_UA',
|
||||||
|
'Accept': '*/*',
|
||||||
|
'Referer': 'https://t-rex.tzfile.com/'
|
||||||
|
},
|
||||||
|
图片来源:'@Headers={"Accept":"*/*","Referer":"https://t-rex.tzfile.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"}',
|
||||||
|
timeout:5000,
|
||||||
|
class_name:'电影&电视剧&动画&纪录片演唱会&真人秀综艺',
|
||||||
|
class_url:'movies&tvshow&animation&faction&show',
|
||||||
|
play_parse:true,
|
||||||
|
play_json:[{
|
||||||
|
re:'*',
|
||||||
|
json:{
|
||||||
|
parse:0,
|
||||||
|
jx:0
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
推荐:'*',
|
||||||
|
一级:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
let d = [];
|
||||||
|
log("tzfiles input>>>>>>>>>>>>>>"+input);
|
||||||
|
let html = request(input);
|
||||||
|
//log("tzfiles 1level html>>>>>>>>>>>>>>"+html);
|
||||||
|
let list = pdfa(html, '#primary-home ul li:has(img)');
|
||||||
|
list.forEach(function(it) {
|
||||||
|
d.push({
|
||||||
|
title: pdfh(it, 'img&&alt'),
|
||||||
|
desc: pdfh(it, 'div.post-info div.list-footer time.b2timeago&&Text') + '/' + pdfh(it, 'div.post-info div.list-footer a&&Text'),
|
||||||
|
pic_url: 'http://127.0.0.1:10079/i/0/s/'+pd(it, 'img&&src', HOST),
|
||||||
|
url: pd(it, 'a&&href', HOST)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
二级:{
|
||||||
|
title:"#primary-home h1&&Text",
|
||||||
|
img:"#primary-home article div.entry-content img&&src",
|
||||||
|
desc:"#primary-home .post-meta li.single-date&&Text",
|
||||||
|
content:"#primary-home article .entry-content&&Text",
|
||||||
|
tabs:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
TABS=[];
|
||||||
|
let d = pdfa(html, '#primary-home article div.entry-content p');
|
||||||
|
let tabsq=[];
|
||||||
|
d.forEach(function(it) {
|
||||||
|
let purl = pd(it, 'a&&href', HOST);
|
||||||
|
if (purl.includes("pan.quark.cn")){
|
||||||
|
tabsq.push("夸克網盤");
|
||||||
|
} else if (purl.includes("www.aliyundrive.com")){
|
||||||
|
tabsq.push("阿里雲盤");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (tabsq.length==1){
|
||||||
|
TABS=tabsq;
|
||||||
|
}else{
|
||||||
|
let tmpIndex=1;
|
||||||
|
tabsq.forEach(function(it){
|
||||||
|
TABS.push(it+tmpIndex);
|
||||||
|
tmpIndex++;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
log('tzfile TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
||||||
|
`,
|
||||||
|
lists:`js:
|
||||||
|
log(TABS);
|
||||||
|
LISTS=[];
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
let d = pdfa(html, '#primary-home article div.entry-content p');
|
||||||
|
d.forEach(function(it) {
|
||||||
|
let purl = pd(it, 'a&&href', HOST);
|
||||||
|
if (/(pan.quark.cn|www.aliyundrive.com)/.test(purl)){
|
||||||
|
let type="ali";
|
||||||
|
if (purl.includes("pan.quark.cn")){
|
||||||
|
type="quark";
|
||||||
|
} else if (purl.includes("www.aliyundrive.com")){
|
||||||
|
type="ali";
|
||||||
|
}
|
||||||
|
let confirm="";
|
||||||
|
if (TABS.length==1){
|
||||||
|
confirm="&confirm=0";
|
||||||
|
}
|
||||||
|
LISTS.push([purl+'$'+'http://127.0.0.1:9978/proxy?do='+type+'&type=push'+confirm+'&url='+encodeURIComponent(purl)]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
`,
|
||||||
|
|
||||||
|
},
|
||||||
|
搜索:'#primary-home ul li:has(img);img&&alt;img&&src;div.post-info div.list-fotter time.b2timeago&&Text;a&&href',
|
||||||
|
}
|
||||||
@@ -27,7 +27,6 @@ var rule = {
|
|||||||
}],
|
}],
|
||||||
lazy:'',
|
lazy:'',
|
||||||
limit:6,
|
limit:6,
|
||||||
推荐:'',
|
|
||||||
推荐:`js:
|
推荐:`js:
|
||||||
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
let d = [];
|
let d = [];
|
||||||
@@ -95,9 +94,9 @@ let tabm3u8 = [];
|
|||||||
d.forEach(function(it) {
|
d.forEach(function(it) {
|
||||||
let burl = pdfh(it, 'a&&href');
|
let burl = pdfh(it, 'a&&href');
|
||||||
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
tabsa.push("阿里云盤");
|
tabsa.push("阿里雲盤");
|
||||||
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
tabsq.push("夸克云盤");
|
tabsq.push("夸克網盤");
|
||||||
}else if (burl.startsWith("magnet")){
|
}else if (burl.startsWith("magnet")){
|
||||||
tabsm = true;
|
tabsm = true;
|
||||||
}else if (burl.startsWith("ed2k")){
|
}else if (burl.startsWith("ed2k")){
|
||||||
@@ -181,42 +180,6 @@ d.forEach(function(it){
|
|||||||
liste.push(loopresult);
|
liste.push(loopresult);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (false){
|
|
||||||
d = pdfa(html, 'div:has(>div#post_content) div.widget:has(>h3)');
|
|
||||||
d.forEach(function(it){
|
|
||||||
let index = pdfh(it, 'h3&&Text');
|
|
||||||
let burl = pd(it, 'a&&href', HOST);
|
|
||||||
let title = pdfh(it, 'a&&Text');
|
|
||||||
log('xb6v title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
|
|
||||||
log('xb6v burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
|
|
||||||
let m3u8_html = request(burl);
|
|
||||||
let playerUrl = pd(m3u8_html, 'div.video&&iframe&&src', HOST);
|
|
||||||
log('xb6v playerUrl >>>>>>>>>>>>>>>>>>>>>>>>>>' + playerUrl);
|
|
||||||
if (!listm3u8.hasOwnProperty(index)){
|
|
||||||
listm3u8[index] = [];
|
|
||||||
}
|
|
||||||
let loopresult = title + '$' + ' ';
|
|
||||||
if (/(\\/player\\/|\\/share\\/)/.test(playerUrl)){
|
|
||||||
let player_html = request(playerUrl);
|
|
||||||
let m3u8Url="";
|
|
||||||
try{
|
|
||||||
m3u8Url = player_html.match(/'([^']*.m3u8)'/)[1];
|
|
||||||
}catch(e){
|
|
||||||
try{
|
|
||||||
m3u8Url = player_html.match(/"([^"]*.m3u8)"/)[1];
|
|
||||||
}catch(e){
|
|
||||||
m3u8Url = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (m3u8Url !== ""){
|
|
||||||
m3u8Url = urljoin2(playerUrl, m3u8Url);
|
|
||||||
log('xb6v m3u8Url >>>>>>>>>>>>>>>>>>>>>>>>>>' + m3u8Url);
|
|
||||||
loopresult = title + '$' + m3u8Url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
listm3u8[index].push(loopresult);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (listm.length>0){
|
if (listm.length>0){
|
||||||
LISTS.push(listm);
|
LISTS.push(listm);
|
||||||
}
|
}
|
||||||
@@ -256,9 +219,9 @@ let search_html = request( HOST + '/e/search/index.php', _fetch_params, true);
|
|||||||
let d=[];
|
let d=[];
|
||||||
let dlist = pdfa(search_html, 'div.mainleft&&ul#post_container&&li');
|
let dlist = pdfa(search_html, 'div.mainleft&&ul#post_container&&li');
|
||||||
dlist.forEach(function(it){
|
dlist.forEach(function(it){
|
||||||
let title = pdfh(it, 'div.thumbnail img&&alt');
|
let title = pdfh(it, 'div.thumbnail img&&alt').replace( /(<([^>]+)>)/ig, '');
|
||||||
if (searchObj.quick === true){
|
if (searchObj.quick === true){
|
||||||
if (title.includes(KEY)){
|
if (false && title.includes(KEY)){
|
||||||
title = KEY;
|
title = KEY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,9 +45,9 @@ let tabse = false;
|
|||||||
d.forEach(function(it) {
|
d.forEach(function(it) {
|
||||||
let burl = pdfh(it, 'a&&href');
|
let burl = pdfh(it, 'a&&href');
|
||||||
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
tabsa.push("阿里云盤");
|
tabsa.push("阿里雲盤");
|
||||||
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
tabsq.push("夸克云盤");
|
tabsq.push("夸克網盤");
|
||||||
}else if (burl.startsWith("magnet")){
|
}else if (burl.startsWith("magnet")){
|
||||||
tabsm = true;
|
tabsm = true;
|
||||||
}else if (burl.startsWith("ed2k")){
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
|||||||
@@ -0,0 +1,102 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'人人影视[搜]',
|
||||||
|
host:'https://yyets.click',
|
||||||
|
homeUrl:'/',
|
||||||
|
url:'*',
|
||||||
|
filter_url:'{{fl.class}}',
|
||||||
|
filter:{
|
||||||
|
},
|
||||||
|
searchUrl: '*',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent': PC_UA,
|
||||||
|
'Accept': '*/*',
|
||||||
|
'Referer': 'https://yyets.click/',
|
||||||
|
'Cookie':'http://127.0.0.1:9978/file:///tvbox/JS/lib/yyets.txt',
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
class_name:'',
|
||||||
|
class_url:'',
|
||||||
|
play_parse:true,
|
||||||
|
play_json:[{
|
||||||
|
re:'*',
|
||||||
|
json:{
|
||||||
|
parse:0,
|
||||||
|
jx:0
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
推荐:'',
|
||||||
|
一级:'',
|
||||||
|
二级:`js:
|
||||||
|
VOD.vod_play_from = "雲盤";
|
||||||
|
VOD.vod_remarks = detailUrl;
|
||||||
|
VOD.vod_actor = "沒有二級,只有一級鏈接直接推送播放";
|
||||||
|
VOD.vod_content = MY_URL;
|
||||||
|
VOD.vod_play_url = "雲盤$" + detailUrl;
|
||||||
|
`,
|
||||||
|
搜索:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
if (rule_fetch_params.headers.Cookie.startsWith("http")){
|
||||||
|
rule_fetch_params.headers.Cookie=fetch(rule_fetch_params.headers.Cookie);
|
||||||
|
let cookie = rule_fetch_params.headers.Cookie;
|
||||||
|
setItem(RULE_CK, cookie);
|
||||||
|
};
|
||||||
|
log('yyets search cookie>>>>>>>>>>>>>>>' + rule_fetch_params.headers.Cookie);
|
||||||
|
let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
|
||||||
|
_fetch_params.headers.Referer = 'http://yyets.click/search?keyword=' + encodeURIComponent(KEY) + '&type=default';
|
||||||
|
log('yyets search params>>>>>>>>>>>>>>>' + JSON.stringify(_fetch_params));
|
||||||
|
let new_html=request(rule.homeUrl + 'api/resource?keyword=' + encodeURIComponent(KEY) + '&type=default', _fetch_params);
|
||||||
|
//log("yyets search result>>>>>>>>>>>>>>>" + new_html);
|
||||||
|
let json=JSON.parse(new_html);
|
||||||
|
let d=[];
|
||||||
|
for(const it in json.comment){
|
||||||
|
if (json.comment.hasOwnProperty(it)){
|
||||||
|
log("yyets search it>>>>>>>>>>>>>>>" + JSON.stringify(json.comment[it]));
|
||||||
|
if (/(www.aliyundrive.com|pan.quark.cn)/.test(json.comment[it].comment)){
|
||||||
|
let its = json.comment[it].comment.split("\\n");
|
||||||
|
let i=0;
|
||||||
|
while(i<its.length){
|
||||||
|
let title=its[i].trim().replaceAll(/\\s+/g," ");
|
||||||
|
if (title.length==0){
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let urls=[];
|
||||||
|
log("yyets search title>>>>>>>>>>>>>>>" + title);
|
||||||
|
while(++i<its.length){
|
||||||
|
log("yyets search url>>>>>>>>>>>>>>>" + its[i]);
|
||||||
|
let burl = its[i].trim().split(" ")[0];
|
||||||
|
if (burl.length==0){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (burl.includes("https://")){
|
||||||
|
urls.push("https:"+burl.split("https:")[1]);
|
||||||
|
}else{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (urls.length>0){
|
||||||
|
log("yyets search title,urls>>>>>>>>>>>>>>>" + title + ",[" + JSON.stringify(urls) + "]");
|
||||||
|
if (title.includes(KEY)){
|
||||||
|
urls.forEach(function (url) {
|
||||||
|
d.push({
|
||||||
|
title:title,
|
||||||
|
img:'',
|
||||||
|
content:json.comment[it].comment,
|
||||||
|
desc:json.comment[it].date,
|
||||||
|
url:'push://'+url
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@ var rule = {
|
|||||||
headers:{
|
headers:{
|
||||||
'User-Agent':'PC_UA',
|
'User-Agent':'PC_UA',
|
||||||
"Referer": "https://www.bilibili.com",
|
"Referer": "https://www.bilibili.com",
|
||||||
"Cookie":"$bili_cookie"
|
"Cookie":"http://127.0.0.1:9978/file/tvfan/cookie.txt"
|
||||||
},
|
},
|
||||||
timeout:5000,
|
timeout:5000,
|
||||||
class_name:'番剧&国创&电影&电视剧&纪录片&综艺&全部&追番&追剧&时间表',
|
class_name:'番剧&国创&电影&电视剧&纪录片&综艺&全部&追番&追剧&时间表',
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ var rule = {
|
|||||||
"User-Agent":"PC_UA",
|
"User-Agent":"PC_UA",
|
||||||
"Referer": "https://www.bilibili.com",
|
"Referer": "https://www.bilibili.com",
|
||||||
// "Cookie":"$bili_cookie"
|
// "Cookie":"$bili_cookie"
|
||||||
"Cookie":"https://ghproxy.net/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/txt/cookie.txt"
|
"Cookie":"http://127.0.0.1:9978/file/tvfan/cookie.txt"
|
||||||
},
|
},
|
||||||
timeout:5000,
|
timeout:5000,
|
||||||
limit:8,
|
limit:8,
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ var rule = {
|
|||||||
"Referer": "https://www.bilibili.com",
|
"Referer": "https://www.bilibili.com",
|
||||||
// "Cookie":"$bili_cookie"
|
// "Cookie":"$bili_cookie"
|
||||||
// "Cookie":"https://ghproxy.net/https://github.com/FongMi/CatVodSpider/raw/main/txt/cookie.txt"
|
// "Cookie":"https://ghproxy.net/https://github.com/FongMi/CatVodSpider/raw/main/txt/cookie.txt"
|
||||||
"cookie": "SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7"
|
"cookie": "http://127.0.0.1:9978/file/tvfan/cookie.txt"
|
||||||
},
|
},
|
||||||
timeout:5000,
|
timeout:5000,
|
||||||
limit:8,
|
limit:8,
|
||||||
|
|||||||
@@ -62,7 +62,8 @@ var rule = {
|
|||||||
host:'https://www.ikanbot.com',
|
host:'https://www.ikanbot.com',
|
||||||
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
|
||||||
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
//https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
|
||||||
searchUrl:'/search?q=**&p=fypage',
|
// searchUrl:'/search?q=**&p=fypage',
|
||||||
|
searchUrl:'/search?q=**',
|
||||||
searchable:2,
|
searchable:2,
|
||||||
quickSearch:0,
|
quickSearch:0,
|
||||||
filterable:1,
|
filterable:1,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
{"name":"范明明•综合","url":"https://ghproxy.com/https://raw.githubusercontent.com/fanmingming/live/main/tv/m3u/global.m3u"},
|
{"name":"范明明•综合","url":"https://ghproxy.com/https://raw.githubusercontent.com/fanmingming/live/main/tv/m3u/global.m3u"},
|
||||||
{"name":"YueChan•综合","url":"https://ghproxy.com/https://raw.githubusercontent.com/YueChan/Live/main/IPTV.m3u"},
|
{"name":"YueChan•综合","url":"https://ghproxy.com/https://raw.githubusercontent.com/YueChan/Live/main/IPTV.m3u"},
|
||||||
{"name":"Yoursmile•综合","url":"https://agit.ai/Yoursmile7/TVBox/raw/branch/master/live.txt"},
|
{"name":"Yoursmile•综合","url":"https://agit.ai/Yoursmile7/TVBox/raw/branch/master/live.txt"},
|
||||||
|
{"name":"饭太硬•综合","url":"https://agit.ai/fantaiying/0/raw/branch/main/tvlive.txt"},
|
||||||
{"name":"Ray•综合","url":"https://xhdwc.tk/tvlive.txt"},
|
{"name":"Ray•综合","url":"https://xhdwc.tk/tvlive.txt"},
|
||||||
{"name":"俊于•综合","url":"http://home.jundie.top:81/Cat/tv/live.txt"},
|
{"name":"俊于•综合","url":"http://home.jundie.top:81/Cat/tv/live.txt"},
|
||||||
{"name":"初秋语•电台","url":"https://ghproxy.com/https:/raw.githubusercontent.com/gaotianliuyun/gao/master/radio.txt"},
|
{"name":"初秋语•电台","url":"https://ghproxy.com/https:/raw.githubusercontent.com/gaotianliuyun/gao/master/radio.txt"},
|
||||||
|
|||||||
+81
-196
@@ -10,22 +10,43 @@ CCTV7,http://hms284nc1972679584.live.aikan.miguvideo.com/wh7f454c46tw4211155753_
|
|||||||
CCTV8,http://hms84nc1972679564.live.aikan.miguvideo.com/wh7f454c46tw2243817462_1836799824/wd_r2/ocn/cctv8hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115084753&ContentId=265667466&timezone=UTC&mtv_session=077374df50cdebf0ab55b2ec30d2f01a&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=8b9b358180e9e344fe45e67912ce6985
|
CCTV8,http://hms84nc1972679564.live.aikan.miguvideo.com/wh7f454c46tw2243817462_1836799824/wd_r2/ocn/cctv8hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115084753&ContentId=265667466&timezone=UTC&mtv_session=077374df50cdebf0ab55b2ec30d2f01a&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=8b9b358180e9e344fe45e67912ce6985
|
||||||
CCTV9,http://hms444nc1972679601.live.aikan.miguvideo.com/wh7f454c46tw4260577431_-1084507862/migu/kailu/20200324/cctv9hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208131044&ContentId=265667202&timezone=UTC&mtv_session=9444a4df4cb7524a1ec85c4d44200abc&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=efdbccd2a72ff1ba2eabbf08f475f7c6
|
CCTV9,http://hms444nc1972679601.live.aikan.miguvideo.com/wh7f454c46tw4260577431_-1084507862/migu/kailu/20200324/cctv9hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208131044&ContentId=265667202&timezone=UTC&mtv_session=9444a4df4cb7524a1ec85c4d44200abc&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=efdbccd2a72ff1ba2eabbf08f475f7c6
|
||||||
CCTV10,http://hms424nc1972679599.live.aikan.miguvideo.com/wh7f454c46tw2383135402_1265174830/wd_r2/ocn/cctv10hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115085013&ContentId=265667631&timezone=UTC&mtv_session=451a79654bec6f8926b5017302146772&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=e74690616e29be77ff1a1992b303b861
|
CCTV10,http://hms424nc1972679599.live.aikan.miguvideo.com/wh7f454c46tw2383135402_1265174830/wd_r2/ocn/cctv10hd/3000/01.m3u8?msisdn=19115966146&Channel_ID=0119_04102000-99000_400300000040002&client_ip=182.149.232.3×tamp=20230115085013&ContentId=265667631&timezone=UTC&mtv_session=451a79654bec6f8926b5017302146772&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=e74690616e29be77ff1a1992b303b861
|
||||||
CCTV11,http://61.138.167.36:9901/tsfile/live/0011_1.m3u8
|
|
||||||
CCTV11,http://cyz32.livehbindex.hbcatv.cn/live/5000002086444f0886ad7032ad8f756b.m3u8?bitrate=2300&pt=5
|
CCTV11,https://live.goodiptv.club/api/cqyx.php?id=cctv11HD
|
||||||
|
CCTV11,http://120.196.232.124:8088/rrs03.hw.gmcc.net/PLTV/651/224/3221226714/1.m3u8?
|
||||||
|
|
||||||
CCTV12,http://hms204nc1972679577.live.aikan.miguvideo.com/wh7f454c46tw1174495643_-1245391177/migu/kailu/20200324/cctv12hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020243&ContentId=265667607&timezone=UTC&mtv_session=7581c6271c0379b8ca8b268ff7804765&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=3906a8574a42ff13aba3e255be4cd8e3
|
CCTV12,http://hms204nc1972679577.live.aikan.miguvideo.com/wh7f454c46tw1174495643_-1245391177/migu/kailu/20200324/cctv12hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020243&ContentId=265667607&timezone=UTC&mtv_session=7581c6271c0379b8ca8b268ff7804765&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=3906a8574a42ff13aba3e255be4cd8e3
|
||||||
CCTV13,http://hms184nc1972679575.live.aikan.miguvideo.com/wh7f454c46tw946205927_-649996709/envivo_x/2018/SD/cctv13/2000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208132705&ContentId=265667474&timezone=UTC&mtv_session=36bf599c0c4bc785fd46aaf0ba40ffe7&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=91a8a1c4652526079a5b0e294d5bc18d
|
CCTV13,http://hms184nc1972679575.live.aikan.miguvideo.com/wh7f454c46tw946205927_-649996709/envivo_x/2018/SD/cctv13/2000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208132705&ContentId=265667474&timezone=UTC&mtv_session=36bf599c0c4bc785fd46aaf0ba40ffe7&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=91a8a1c4652526079a5b0e294d5bc18d
|
||||||
CCTV14,http://hms344nc1972679590.live.aikan.miguvideo.com/wh7f454c46tw1297666621_-728046298/wd_r2/ocn/cctv14hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020446&ContentId=265667325&timezone=UTC&mtv_session=ad6cfd6b6dabe31801ca54a4c87f1bac&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=2757ab80a8dee98edfcfd1ee767a17b8
|
CCTV14,http://hms344nc1972679590.live.aikan.miguvideo.com/wh7f454c46tw1297666621_-728046298/wd_r2/ocn/cctv14hd/3000/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020446&ContentId=265667325&timezone=UTC&mtv_session=ad6cfd6b6dabe31801ca54a4c87f1bac&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=2757ab80a8dee98edfcfd1ee767a17b8
|
||||||
CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390_1468621622/migu/kailu/20200324/cctv15hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020617&ContentId=265667535&timezone=UTC&mtv_session=e1254803553b7cace3a119612bf266d8&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=7ba98a3a39d853487109bebe5ed31c43
|
CCTV15,http://hms504nc1972679606.live.aikan.miguvideo.com/wh7f454c46tw1387986390_1468621622/migu/kailu/20200324/cctv15hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=59.49.185.88×tamp=20230311020617&ContentId=265667535&timezone=UTC&mtv_session=e1254803553b7cace3a119612bf266d8&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=7ba98a3a39d853487109bebe5ed31c43
|
||||||
|
|
||||||
|
CCTV16,https://live.goodiptv.club/api/cqyx.php?id=cctv16HD
|
||||||
|
CCTV16,http://120.196.232.124:8088/rrs03.hw.gmcc.net/PLTV/651/224/3221226825/1.m3u8?$8M1080
|
||||||
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
CCTV16,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8?
|
||||||
|
|
||||||
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
CCTV17,http://hms224nc1972679578.live.aikan.miguvideo.com/wh7f454c46tw1594433061_461954091/migu/kailu/20200324/cctv17hd/57/01.m3u8?msisdn=guest&Channel_ID=0119_04102000-99000_400300000040002&client_ip=112.45.97.120×tamp=20230208133753&ContentId=265667526&timezone=UTC&mtv_session=2ab00b83c917e8ba1b1bb082711b8b77&HlsSubType=1&HlsProfileId=1&nphaid=0&encrypt=4c04c5308e4761e3cc4b36134b05b864
|
||||||
CCTV1,http://222.71.90.218:8888/newlive/live/hls/2/live.m3u8
|
|
||||||
CCTV5,http://222.71.90.218:8888/newlive/live/hls/6/live.m3u8
|
CCTV1,https://live.goodiptv.club/api/cqyx.php?id=cctv1HD
|
||||||
CCTV6,http://222.71.90.218:8888/newlive/live/hls/7/live.m3u8
|
CCTV2,https://live.goodiptv.club/api/cqyx.php?id=cctv2HD
|
||||||
CCTV10,http://222.71.90.218:8888/newlive/live/hls/11/live.m3u8
|
CCTV3,https://live.goodiptv.club/api/cqyx.php?id=cctv3HD
|
||||||
CCTV14,http://222.71.90.218:8888/newlive/live/hls/15/live.m3u8
|
CCTV4,https://live.goodiptv.club/api/cqyx.php?id=cctv4HD
|
||||||
CCTV17,http://222.71.90.218:8888/newlive/live/hls/58/live.m3u8
|
CCTV5,https://live.goodiptv.club/api/cqyx.php?id=cctv5HD
|
||||||
|
CCTV6,https://live.goodiptv.club/api/cqyx.php?id=cctv6HD
|
||||||
|
CCTV7,https://live.goodiptv.club/api/cqyx.php?id=cctv7HD
|
||||||
|
CCTV8,https://live.goodiptv.club/api/cqyx.php?id=cctv8HD
|
||||||
|
CCTV9,https://live.goodiptv.club/api/cqyx.php?id=cctv9HD
|
||||||
|
CCTV10,https://live.goodiptv.club/api/cqyx.php?id=cctv10HD
|
||||||
|
CCTV11,https://live.goodiptv.club/api/cqyx.php?id=cctv11HD
|
||||||
|
CCTV12,https://live.goodiptv.club/api/cqyx.php?id=cctv12HD
|
||||||
|
CCTV13,https://live.goodiptv.club/api/cqyx.php?id=cctv13HD
|
||||||
|
CCTV14,https://live.goodiptv.club/api/cqyx.php?id=cctv14HD
|
||||||
|
CCTV15,https://live.goodiptv.club/api/cqyx.php?id=cctv15HD
|
||||||
|
CCTV16,https://live.goodiptv.club/api/cqyx.php?id=cctv16HD
|
||||||
|
CCTV17,https://live.goodiptv.club/api/cqyx.php?id=cctv17HD
|
||||||
|
CCTV5+,https://live.goodiptv.club/api/cqyx.php?id=cctv5SportHD
|
||||||
|
CCTV4K,https://live.goodiptv.club/api/cqyx.php?id=CCTV4K
|
||||||
|
CCTV16 4K,https://live.goodiptv.club/api/cqyx.php?id=CCTV16_4K
|
||||||
|
|
||||||
|
|
||||||
CCTV1,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225804/index.m3u8
|
CCTV1,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225804/index.m3u8
|
||||||
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226195/index.m3u8
|
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226195/index.m3u8
|
||||||
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226224/index.m3u8
|
CCTV2,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226224/index.m3u8
|
||||||
@@ -41,110 +62,53 @@ CCTV15,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/32212257
|
|||||||
CCTV4,http://jycb.f3322.net:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV4,http://jycb.f3322.net:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV5+,http://jycb.f3322.net:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV5+,http://jycb.f3322.net:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
|
||||||
CCTV1,http://cyz32.livehbindex.hbcatv.cn/live/50000020935c4d59965a1cbf159c9be9.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV2,http://cyz32.livehbindex.hbcatv.cn/live/50000020d7ae404dbd55b5d0ba6fe735.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV3,http://cyz32.livehbindex.hbcatv.cn/live/50000020425540c3b4e7c41ca3eabb76.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV4,http://cyz32.livehbindex.hbcatv.cn/live/5b0dff5235e94ba8bff8731427145289.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV5,http://cyz32.livehbindex.hbcatv.cn/live/500000206cd748d58f41b13aa2754139.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV5+,http://cyz32.livehbindex.hbcatv.cn/live/50000020484943edba96ac9f93f858ce.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV6,http://cyz32.livehbindex.hbcatv.cn/live/50000020da6d4c40a2ca3b1bdc786016.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV7,http://cyz32.livehbindex.hbcatv.cn/live/500000204daa45af99b5800a528fac21.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV8,http://cyz32.livehbindex.hbcatv.cn/live/500000202d8c4f56ba03e623caa09f1b.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV9,http://cyz32.livehbindex.hbcatv.cn/live/50000020edf54f6c92778d0ccdfcca30.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV10,http://cyz32.livehbindex.hbcatv.cn/live/a66832f3323643189c3a0e91f9fad3e3.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV11,http://cyz32.livehbindex.hbcatv.cn/live/5000002086444f0886ad7032ad8f756b.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV12,http://cyz32.livehbindex.hbcatv.cn/live/fbe7688bc539461da71ff649e4ba1d75.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV13,http://cyz32.livehbindex.hbcatv.cn/live/5000002081f5478882f00a0f9be4b01f.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV14,http://cyz32.livehbindex.hbcatv.cn/live/8a22035194884b1eb5515aac434c313c.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV15,http://cyz32.livehbindex.hbcatv.cn/live/50000020f44f4f4b8aa33925dba216df.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV16,http://cyz32.livehbindex.hbcatv.cn/live/50000020c65d4a6b9b4e278405124734.m3u8?bitrate=2300&pt=5
|
|
||||||
CCTV17,http://cyz32.livehbindex.hbcatv.cn/live/500000208b8d41c4b436ef32428c229d.m3u8?bitrate=2300&pt=5
|
|
||||||
|
|
||||||
CCTV1,http://61.138.167.36:9901/tsfile/live/0001_1.m3u8
|
|
||||||
CCTV2,http://61.138.167.36:9901/tsfile/live/0002_1.m3u8
|
|
||||||
CCTV3,http://61.138.167.36:9901/tsfile/live/0003_1.m3u8
|
|
||||||
CCTV4,http://61.138.167.36:9901/tsfile/live/0004_1.m3u8
|
|
||||||
CCTV5,http://61.138.167.36:9901/tsfile/live/0005_1.m3u8
|
|
||||||
CCTV6,http://61.138.167.36:9901/tsfile/live/0006_1.m3u8
|
|
||||||
CCTV7,http://61.138.167.36:9901/tsfile/live/0007_1.m3u8
|
|
||||||
CCTV8,http://61.138.167.36:9901/tsfile/live/0008_1.m3u8
|
|
||||||
CCTV9,http://61.138.167.36:9901/tsfile/live/0009_1.m3u8
|
|
||||||
CCTV10,http://61.138.167.36:9901/tsfile/live/0010_1.m3u8
|
|
||||||
CCTV11,http://61.138.167.36:9901/tsfile/live/0011_1.m3u8
|
|
||||||
CCTV12,http://61.138.167.36:9901/tsfile/live/0012_1.m3u8
|
|
||||||
CCTV13,http://61.138.167.36:9901/tsfile/live/0013_1.m3u8
|
|
||||||
CCTV14,http://61.138.167.36:9901/tsfile/live/0014_1.m3u8
|
|
||||||
CCTV15,http://61.138.167.36:9901/tsfile/live/0015_1.m3u8
|
|
||||||
CCTV16,http://61.138.167.36:9901/tsfile/live/1061_1.m3u8
|
|
||||||
CCTV16-4K,http://61.138.167.36:9901/tsfile/live/1053_1.m3u8
|
|
||||||
CCTV17,http://61.138.167.36:9901/tsfile/live/1042_1.m3u8
|
|
||||||
CCTV5+,http://61.138.167.36:9901/tsfile/live/0016_1.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
地方,#genre#
|
地方,#genre#
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
浙江卫视,http://hw-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
||||||
|
|
||||||
不是人卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002045414da0bcca7fb08fd34c8a.m3u8?bitrate=2300&pt=5
|
湖南卫视,https://live.goodiptv.club/api/cqyx.php?id=hunanHD
|
||||||
湖南卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020c9ea4ce4bf3cfbbb7f8b8bb7.m3u8?bitrate=2300&pt=5
|
重庆卫视,https://live.goodiptv.club/api/cqyx.php?id=chongqingHD
|
||||||
江苏卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000201708473e9f4e1dbb0361de6b.m3u8?bitrate=2300&pt=5
|
江苏卫视,https://live.goodiptv.club/api/cqyx.php?id=jiangsuHD
|
||||||
东方卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000203860417eb7f08f9270fc1155.m3u8?bitrate=2300&pt=5
|
北京卫视,https://live.goodiptv.club/api/cqyx.php?id=beijingHD
|
||||||
北京卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020539e48f392fbcbba5cf7f245.m3u8?bitrate=2300&pt=5
|
浙江卫视,https://live.goodiptv.club/api/cqyx.php?id=zhejiangHD
|
||||||
安徽卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020d0ab40578faaa8a023ce4d5c.m3u8?bitrate=2300&pt=5
|
东方卫视,https://live.goodiptv.club/api/cqyx.php?id=shanghaiHD
|
||||||
广东卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000206bc6413cb38dc9ca586ffe3f.m3u8?bitrate=2300&pt=5
|
深圳卫视,https://live.goodiptv.club/api/cqyx.php?id=shenzhenHD
|
||||||
东南卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020c18c4f03a2107aa78ced8fff.m3u8?bitrate=2300&pt=5
|
辽宁卫视,https://live.goodiptv.club/api/cqyx.php?id=liaoningHD
|
||||||
海南卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020741c4046820cd89d5ecbd401.m3u8?bitrate=2300&pt=5
|
天津卫视,https://live.goodiptv.club/api/cqyx.php?id=tianjinHD
|
||||||
河北卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020d6be4c4ba70a4e3261b14544.m3u8?bitrate=2300&pt=5
|
贵州卫视,https://live.goodiptv.club/api/cqyx.php?id=guizhouHD
|
||||||
河南卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000201d7c47a8b9b127d69fb816ac.m3u8?bitrate=2300&pt=5
|
四川卫视,https://live.goodiptv.club/api/cqyx.php?id=sichuanHD
|
||||||
黑龙江卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020281749ed995f2824759051fa.m3u8?bitrate=2300&pt=5
|
东南卫视,https://live.goodiptv.club/api/cqyx.php?id=dongnanHD
|
||||||
湖北卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020273747628129718a5717b2dd.m3u8?bitrate=2300&pt=5
|
黑龙江卫视,https://live.goodiptv.club/api/cqyx.php?id=heilongjiangHD
|
||||||
吉林卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000205c15461b956f19f9b6896ad6.m3u8?bitrate=2300&pt=5
|
江西卫视,https://live.goodiptv.club/api/cqyx.php?id=jiangxiHD
|
||||||
江西卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020728a439baf65ce94f8cf3e30.m3u8?bitrate=2300&pt=5
|
吉林卫视,https://live.goodiptv.club/api/cqyx.php?id=jilinHD
|
||||||
辽宁卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002019d84b0ba201007677bbf28c.m3u8?bitrate=2300&pt=5
|
广西卫视,https://live.goodiptv.club/api/cqyx.php?id=guangxiHD
|
||||||
内蒙古卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020eeba44449d4f4913a2897e4e.m3u8?bitrate=2300&pt=5
|
广东卫视,https://live.goodiptv.club/api/cqyx.php?id=guangdongHD
|
||||||
宁夏卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000205dfa4e06bf7243e30e5182c8.m3u8?bitrate=2300&pt=5
|
东南卫视,https://live.goodiptv.club/api/cqyx.php?id=henanHD
|
||||||
青海卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020abdd46bb8007f3d793b418f2.m3u8?bitrate=2300&pt=5
|
第一剧场,https://live.goodiptv.club/api/cqyx.php?id=diyijuchangHD
|
||||||
山东卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002013f84d40a0393b8549e48805.m3u8?bitrate=2300&pt=5
|
都市剧场,https://live.goodiptv.club/api/cqyx.php?id=dsjcHD
|
||||||
山西卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020ed0a4b74afc7e496c1bcc45c.m3u8?bitrate=2300&pt=5
|
动漫秀场,https://live.goodiptv.club/api/cqyx.php?id=dmxcHD
|
||||||
陕西卫视,http://cyz32.livehbindex.hbcatv.cn/live/5000002019984c0fa29ae0d57380da3a.m3u8?bitrate=2300&pt=5
|
魅力足球,https://live.goodiptv.club/api/cqyx.php?id=mlzqHD
|
||||||
深圳卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020289041678b7585eb32637331.m3u8?bitrate=2300&pt=5
|
风云剧场,https://live.goodiptv.club/api/cqyx.php?id=fyjcHD
|
||||||
四川卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020407a4a109f5dfc6f26dbf5eb.m3u8?bitrate=2300&pt=5
|
求索纪录,https://live.goodiptv.club/api/cqyx.php?id=qsjlHD
|
||||||
天津卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020bbc84ee1afd7177a073393d7.m3u8?bitrate=2300&pt=5
|
兵器科技,https://live.goodiptv.club/api/cqyx.php?id=bqkjHD
|
||||||
西藏卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020816449349b10593cfdde8311.m3u8?bitrate=2300&pt=5
|
游戏风云,https://live.goodiptv.club/api/cqyx.php?id=yxfyHD
|
||||||
新疆卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000201e484cbeb064a31201e3dd05.m3u8?bitrate=2300&pt=5
|
怀旧剧场,https://live.goodiptv.club/api/cqyx.php?id=hjjcHD
|
||||||
云南卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020a2f74b03928347fb0b02768b.m3u8?bitrate=2300&pt=5
|
风云音乐,https://live.goodiptv.club/api/cqyx.php?id=fyyyHD
|
||||||
甘肃卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000206da44fde810a98a3d7848f82.m3u8?bitrate=2300&pt=5
|
央视台球,https://live.goodiptv.club/api/cqyx.php?id=ystqHD
|
||||||
广西卫视,http://cyz32.livehbindex.hbcatv.cn/live/50000020731348f098457f0080cdf72c.m3u8?bitrate=2300&pt=5
|
风云足球,https://live.goodiptv.club/api/cqyx.php?id=fyzqHD
|
||||||
北京卡酷少儿,http://cyz32.livehbindex.hbcatv.cn/live/500000203cd4401ea738b3bc79d39dfa.m3u8?bitrate=2300&pt=5
|
文化精品,https://live.goodiptv.club/api/cqyx.php?id=yswhHD
|
||||||
兵团卫视,http://cyz32.livehbindex.hbcatv.cn/live/500000200a7e4caf973012bf85f33406.m3u8?bitrate=2300&pt=5
|
高尔夫网球,https://live.goodiptv.club/api/cqyx.php?id=golfHD
|
||||||
|
早期教育,https://live.goodiptv.club/api/cqyx.php?id=zaojiaoHD
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
北京卡酷少儿,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225743/index.m3u8
|
|
||||||
CGTN,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225745/index.m3u8
|
|
||||||
深圳卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225752/index.m3u8
|
|
||||||
湖北卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225760/index.m3u8
|
|
||||||
山西卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225763/index.m3u8
|
|
||||||
天津卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225765/index.m3u8
|
|
||||||
海南卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225769/index.m3u8
|
|
||||||
重庆卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225791/index.m3u8
|
|
||||||
贵州卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225793/index.m3u8
|
|
||||||
大湾区卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226218/index.m3u8
|
|
||||||
江苏卫视,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226200/index.m3u8
|
江苏卫视,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226200/index.m3u8
|
||||||
深圳卫视,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226205/index.m3u8
|
深圳卫视,http://39.134.24.166/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226205/index.m3u8
|
||||||
北京卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225796/index.m3u8
|
北京卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225796/index.m3u8
|
||||||
黑龙江卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225802/index.m3u8
|
黑龙江卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225802/index.m3u8
|
||||||
西藏卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226212/index.m3u8
|
|
||||||
延边卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226220/index.m3u8
|
|
||||||
兵团卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226214/index.m3u8
|
|
||||||
农林卫视,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226229/index.m3u8
|
|
||||||
|
|
||||||
河北卫视,http://event.pull.hebtv.com/jishi/weishipindao.m3u8
|
河北卫视,http://event.pull.hebtv.com/jishi/weishipindao.m3u8
|
||||||
河南卫视,http://media.hndyjyfw.gov.cn/live/jz-hnweishi/live.m3u8
|
|
||||||
云南卫视,http://tvlive.ynradio.com/live/yunnanweishi/chunks.m3u8
|
云南卫视,http://tvlive.ynradio.com/live/yunnanweishi/chunks.m3u8
|
||||||
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
|
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8
|
|
||||||
不是人卫视,http://hw-m-l.cztv.com/channels/lantian/channel13/1080p.m3u8
|
|
||||||
三沙卫视,https://pullsstv90080111.ssws.tv/live/SSTV20220729.m3u8
|
三沙卫视,https://pullsstv90080111.ssws.tv/live/SSTV20220729.m3u8
|
||||||
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
|
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
|
||||||
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8
|
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8
|
||||||
@@ -152,125 +116,46 @@ CGTN,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225745
|
|||||||
南京少儿,http://live.nbs.cn/channels/njtv/sepd/500k.m3u8
|
南京少儿,http://live.nbs.cn/channels/njtv/sepd/500k.m3u8
|
||||||
南京少儿,http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8
|
南京少儿,http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8
|
||||||
|
|
||||||
|
|
||||||
东方卫视,http://61.138.167.36:9901/tsfile/live/0107_1.m3u8
|
|
||||||
吉林卫视,http://61.138.167.36:9901/tsfile/live/0116_1.m3u8
|
|
||||||
河北卫视,http://61.138.167.36:9901/tsfile/live/0117_1.m3u8
|
|
||||||
广西卫视,http://61.138.167.36:9901/tsfile/live/0119_1.m3u8
|
|
||||||
贵州卫视,http://61.138.167.36:9901/tsfile/live/0120_1.m3u8
|
|
||||||
辽宁卫视,http://61.138.167.36:9901/tsfile/live/0121_1.m3u8
|
|
||||||
北京卫视,http://61.138.167.36:9901/tsfile/live/0122_1.m3u8
|
|
||||||
四川卫视,http://61.138.167.36:9901/tsfile/live/0123_1.m3u8
|
|
||||||
不是人卫视,http://61.138.167.36:9901/tsfile/live/0124_1.m3u8
|
|
||||||
广东卫视,http://61.138.167.36:9901/tsfile/live/0125_1.m3u8
|
|
||||||
深圳卫视,http://61.138.167.36:9901/tsfile/live/0126_1.m3u8
|
|
||||||
江苏卫视,http://61.138.167.36:9901/tsfile/live/0127_1.m3u8
|
|
||||||
安徽卫视,http://61.138.167.36:9901/tsfile/live/0130_1.m3u8
|
|
||||||
山东卫视,http://61.138.167.36:9901/tsfile/live/0131_1.m3u8
|
|
||||||
湖北卫视,http://61.138.167.36:9901/tsfile/live/0132_1.m3u8
|
|
||||||
天津卫视,http://61.138.167.36:9901/tsfile/live/0135_1.m3u8
|
|
||||||
东南卫视,http://61.138.167.36:9901/tsfile/live/0137_1.m3u8
|
|
||||||
江西卫视,http://61.138.167.36:9901/tsfile/live/0138_1.m3u8
|
|
||||||
河南卫视,http://61.138.167.36:9901/tsfile/live/0139_1.m3u8
|
|
||||||
甘肃卫视,http://61.138.167.36:9901/tsfile/live/0141_1.m3u8
|
|
||||||
黑龙江卫视,http://61.138.167.36:9901/tsfile/live/0143_1.m3u8
|
|
||||||
CHC动作电影,http://61.138.167.36:9901/tsfile/live/1014_1.m3u8
|
|
||||||
CHC高清电影,http://61.138.167.36:9901/tsfile/live/1015_1.m3u8
|
|
||||||
CHC家庭影院,http://61.138.167.36:9901/tsfile/live/1016_1.m3u8
|
|
||||||
SiTV都市剧场,http://61.138.167.36:9901/tsfile/live/1005_1.m3u8
|
|
||||||
SiTV乐游,http://61.138.167.36:9901/tsfile/live/1017_1.m3u8
|
|
||||||
SiTV游戏风云,http://61.138.167.36:9901/tsfile/live/1019_1.m3u8
|
|
||||||
SiTV动漫秀场,http://61.138.167.36:9901/tsfile/live/1020_1.m3u8
|
|
||||||
SiTV生活时尚,http://61.138.167.36:9901/tsfile/live/1021_1.m3u8
|
|
||||||
SiTV金色学堂,http://61.138.167.36:9901/tsfile/live/1023_1.m3u8
|
|
||||||
SiTV法制天地,http://61.138.167.36:9901/tsfile/live/1024_1.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
北京卫视,http://222.71.90.218:8888/newlive/live/hls/18/live.m3u8
|
|
||||||
东方卫视,http://222.71.90.218:8888/newlive/live/hls/19/live.m3u8
|
|
||||||
不是人卫视,http://222.71.90.218:8888/newlive/live/hls/20/live.m3u8
|
|
||||||
江苏卫视,http://222.71.90.218:8888/newlive/live/hls/21/live.m3u8
|
|
||||||
湖南卫视,http://222.71.90.218:8888/newlive/live/hls/22/live.m3u8
|
|
||||||
广东卫视,http://222.71.90.218:8888/newlive/live/hls/23/live.m3u8
|
|
||||||
深圳卫视,http://222.71.90.218:8888/newlive/live/hls/24/live.m3u8
|
|
||||||
黑龙江卫视,http://222.71.90.218:8888/newlive/live/hls/25/live.m3u8
|
|
||||||
山东卫视,http://222.71.90.218:8888/newlive/live/hls/26/live.m3u8
|
|
||||||
湖北卫视,http://222.71.90.218:8888/newlive/live/hls/27/live.m3u8
|
|
||||||
安徽卫视,http://222.71.90.218:8888/newlive/live/hls/28/live.m3u8
|
|
||||||
东南卫视,http://222.71.90.218:8888/newlive/live/hls/29/live.m3u8
|
|
||||||
江西卫视,http://222.71.90.218:8888/newlive/live/hls/30/live.m3u8
|
|
||||||
辽宁卫视,http://222.71.90.218:8888/newlive/live/hls/31/live.m3u8
|
|
||||||
天津卫视,http://222.71.90.218:8888/newlive/live/hls/32/live.m3u8
|
|
||||||
四川卫视,http://222.71.90.218:8888/newlive/live/hls/33/live.m3u8
|
|
||||||
重庆卫视,http://222.71.90.218:8888/newlive/live/hls/34/live.m3u8
|
|
||||||
贵州卫视,http://222.71.90.218:8888/newlive/live/hls/35/live.m3u8
|
|
||||||
海南卫视,http://222.71.90.218:8888/newlive/live/hls/36/live.m3u8
|
|
||||||
河北卫视,http://222.71.90.218:8888/newlive/live/hls/37/live.m3u8
|
|
||||||
河南卫视,http://222.71.90.218:8888/newlive/live/hls/38/live.m3u8
|
|
||||||
云南卫视,http://222.71.90.218:8888/newlive/live/hls/39/live.m3u8
|
|
||||||
广西卫视,http://222.71.90.218:8888/newlive/live/hls/40/live.m3u8
|
|
||||||
吉林卫视,http://222.71.90.218:8888/newlive/live/hls/41/live.m3u8
|
|
||||||
宁夏卫视,http://222.71.90.218:8888/newlive/live/hls/42/live.m3u8
|
|
||||||
青海卫视,http://222.71.90.218:8888/newlive/live/hls/43/live.m3u8
|
|
||||||
西藏卫视,http://222.71.90.218:8888/newlive/live/hls/44/live.m3u8
|
|
||||||
陕西卫视,http://222.71.90.218:8888/newlive/live/hls/45/live.m3u8
|
|
||||||
内蒙古卫视,http://222.71.90.218:8888/newlive/live/hls/46/live.m3u8
|
|
||||||
新疆卫视,http://222.71.90.218:8888/newlive/live/hls/47/live.m3u8
|
|
||||||
CETV1,http://222.71.90.218:8888/newlive/live/hls/48/live.m3u8
|
|
||||||
金鹰纪实,http://222.71.90.218:8888/newlive/live/hls/49/live.m3u8
|
|
||||||
北京卡酷少儿,http://222.71.90.218:8888/newlive/live/hls/50/live.m3u8
|
|
||||||
都市,http://222.71.90.218:8888/newlive/live/hls/51/live.m3u8
|
|
||||||
哈哈炫动,http://222.71.90.218:8888/newlive/live/hls/52/live.m3u8
|
|
||||||
东方影视,http://222.71.90.218:8888/newlive/live/hls/53/live.m3u8
|
|
||||||
纪实人文,http://222.71.90.218:8888/newlive/live/hls/54/live.m3u8
|
|
||||||
新闻综合,http://222.71.90.218:8888/newlive/live/hls/55/live.m3u8
|
|
||||||
五星体育,http://222.71.90.218:8888/newlive/live/hls/56/live.m3u8
|
|
||||||
第一财经,http://222.71.90.218:8888/newlive/live/hls/57/live.m3u8
|
|
||||||
|
|
||||||
|
|
||||||
香港,#genre#
|
香港,#genre#
|
||||||
翡翠台,http://r.jdshipin.com/qClQf
|
翡翠台,http://r.jdshipin.com/qClQf
|
||||||
明珠台,http://r.jdshipin.com/ZQ4kN
|
明珠台,http://r.jdshipin.com/ZQ4kN
|
||||||
|
凤凰中文台,http://pi.0472.org/tv/cbn.php?id=xfjcHD
|
||||||
凤凰中文台,http://r.jdshipin.com/cCCzW
|
凤凰中文台,http://r.jdshipin.com/cCCzW
|
||||||
凤凰资讯台,http://r.jdshipin.com/0Rp07
|
凤凰资讯台,http://r.jdshipin.com/0Rp07
|
||||||
凤凰资讯台,http://kkwk1122.top/fh.php?id=fhzx
|
凤凰资讯台,http://kkwk1122.top/fh.php?id=fhzx
|
||||||
凤凰中文台,http://kkwk1122.top/fh.php?id=fhzw
|
凤凰中文台,http://kkwk1122.top/fh.php?id=fhzw
|
||||||
凤凰香港台,http://kkwk1122.top/fh.php?id=fhhk
|
香港卫视,http://zhibo.hkstv.tv/livestream/mutfysrq/playlist.m3u8
|
||||||
TVBS星河,http://r.jdshipin.com/sXuuD
|
RTHK32,https://rthktv32-live.akamaized.net/hls/live/2036819/RTHKTV32/stream2/streamPlaylist.m3u8
|
||||||
翡翠台,http://r.jdshipin.com/n90gt
|
翡翠台,http://r.jdshipin.com/n90gt
|
||||||
翡翠台,http://r.jdshipin.com/62WM7
|
翡翠台,http://r.jdshipin.com/62WM7
|
||||||
翡翠台,http://r.jdshipin.com/qrfbg
|
翡翠台,http://r.jdshipin.com/qrfbg
|
||||||
翡翠台,http://113.117.74.20:8081/hls/25/index.m3u8
|
翡翠台,http://113.117.74.20:8081/hls/25/index.m3u8
|
||||||
香港32,https://rthktv32-live.akamaized.net/hls/live/2036819/RTHKTV32/stream5/streamPlaylist.m3u8
|
澳门莲花,https://cntv.sbs/tv/lhws.php
|
||||||
澳門蓮花,https://p.ggiptv.com/v/macaulotustv.php
|
澳门莲花,https://p.ggiptv.com/v/macaulotustv.php
|
||||||
澳門蓮花,http://anren.live/HK/BiIOU11uLA.m3u8
|
澳门莲花,http://anren.live/HK/BiIOU11uLA.m3u8
|
||||||
澳門蓮花,http://nettvpro.live/hls/lotustv.php?zgangd
|
澳门莲花,http://nettvpro.live/hls/lotustv.php?zgangd
|
||||||
|
|
||||||
|
|
||||||
浙江,#genre#
|
浙江,#genre#
|
||||||
义乌新闻综合,https://44911.hlsplay.aodianyun.com/tv_radio_44911/tv_channel_1796.m3u8?auth_key=4830573978-0-0-92824c2c03f95906a3c49a4aa28f1709&extra_key=Yc1XsmxOKy2UBoPM4Wy5vCPsEYqnj06taCR2SRB2Xrg2w28NPilH03KdIbbM5wgSql-VBohSnoO9AOKl94q2t2DWMftz-XB-2qUX-UjXcS80StcSZahBFjrKLivXaRjiY5r2NOMKWMKFbv-S0Bz2G6iEXgCK8yGjtrFHDcPfAQEE0pvXq0Bwy34b7We8zARN&ali_ffmpeg_version=mpengine
|
义乌新闻综合,https://44911.hlsplay.aodianyun.com/tv_radio_44911/tv_channel_1796.m3u8?auth_key=4830573978-0-0-92824c2c03f95906a3c49a4aa28f1709&extra_key=Yc1XsmxOKy2UBoPM4Wy5vCPsEYqnj06taCR2SRB2Xrg2w28NPilH03KdIbbM5wgSql-VBohSnoO9AOKl94q2t2DWMftz-XB-2qUX-UjXcS80StcSZahBFjrKLivXaRjiY5r2NOMKWMKFbv-S0Bz2G6iEXgCK8yGjtrFHDcPfAQEE0pvXq0Bwy34b7We8zARN&ali_ffmpeg_version=mpengine
|
||||||
|
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/1080p.m3u8
|
||||||
|
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/1080p.m3u8
|
||||||
|
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/1080p.m3u8
|
||||||
|
浙江影视娱乐,http://hw-m-l.cztv.com/channels/lantian/channel05/1080p.m3u8
|
||||||
|
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/1080p.m3u8
|
||||||
|
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/1080p.m3u8
|
||||||
|
浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel08/1080p.m3u8
|
||||||
|
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/1080p.m3u8
|
||||||
|
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/1080p.m3u8
|
||||||
|
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8?zzhed
|
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8?zzhed
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/720p.m3u8?zzhed
|
|
||||||
浙江钱江都市,http://hw-m-l.cztv.com/channels/lantian/channel02/360p.m3u8?zzhed
|
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8?zzhed
|
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8?zzhed
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/720p.m3u8?zzhed
|
|
||||||
浙江经济生活,http://hw-m-l.cztv.com/channels/lantian/channel03/360p.m3u8?zzhed
|
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8?zzhed
|
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8?zzhed
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/720p.m3u8?zzhed
|
浙江影视娱乐,http://hw-m-l.cztv.com/channels/lantian/channel005/1080p.m3u8?zzhed
|
||||||
浙江教科影院,http://hw-m-l.cztv.com/channels/lantian/channel04/360p.m3u8?zzhed
|
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8?zzhed
|
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8?zzhed
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/720p.m3u8?zzhed
|
|
||||||
浙江民生休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/360p.m3u8?zzhed
|
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8?zzhed
|
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8?zzhed
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/720p.m3u8?zzhed
|
|
||||||
浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/360p.m3u8?zzhed
|
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8?zzhed
|
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8?zzhed
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/720p.m3u8?zzhed
|
|
||||||
浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/360p.m3u8?zzhed
|
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8?zzhed
|
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8?zzhed
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/720p.m3u8?zzhed
|
|
||||||
之江纪录,http://hw-m-l.cztv.com/channels/lantian/channel12/360p.m3u8?zzhed
|
|
||||||
|
|
||||||
HTV-2明珠,http://183.129.242.178:3333/tsfile/live/1016_1.m3u8
|
HTV-2明珠,http://183.129.242.178:3333/tsfile/live/1016_1.m3u8
|
||||||
HTV-3生活,http://183.129.242.178:3333/tsfile/live/1017_1.m3u8
|
HTV-3生活,http://183.129.242.178:3333/tsfile/live/1017_1.m3u8
|
||||||
|
|||||||
Binary file not shown.
@@ -7,7 +7,7 @@
|
|||||||
以/开头,存储卡的根目录
|
以/开头,存储卡的根目录
|
||||||
|
|
||||||
#初秋语•综合
|
#初秋语•综合
|
||||||
https://ghproxy.com/https:/raw.githubusercontent.com/gaotianliuyun/gao/master/list.txt
|
../list.txt
|
||||||
#YanG•综合
|
#YanG•综合
|
||||||
https://ghproxy.com/https://raw.githubusercontent.com/YanG-1989/m3u/main/Gather.m3u
|
https://ghproxy.com/https://raw.githubusercontent.com/YanG-1989/m3u/main/Gather.m3u
|
||||||
#范明明•综合
|
#范明明•综合
|
||||||
@@ -16,12 +16,14 @@ https://ghproxy.com/https://raw.githubusercontent.com/fanmingming/live/main/tv/m
|
|||||||
https://ghproxy.com/https://raw.githubusercontent.com/YueChan/Live/main/IPTV.m3u
|
https://ghproxy.com/https://raw.githubusercontent.com/YueChan/Live/main/IPTV.m3u
|
||||||
#Yoursmile•综合
|
#Yoursmile•综合
|
||||||
https://agit.ai/Yoursmile7/TVBox/raw/branch/master/live.txt
|
https://agit.ai/Yoursmile7/TVBox/raw/branch/master/live.txt
|
||||||
|
#饭太硬•综合
|
||||||
|
https://agit.ai/fantaiying/0/raw/branch/main/tvlive.txt
|
||||||
#Ray•综合
|
#Ray•综合
|
||||||
https://xhdwc.tk/tvlive.txt
|
https://xhdwc.tk/tvlive.txt
|
||||||
#俊于•综合
|
#俊于•综合
|
||||||
http://home.jundie.top:81/Cat/tv/live.txt
|
http://home.jundie.top:81/Cat/tv/live.txt
|
||||||
#初秋语•电台
|
#初秋语•电台
|
||||||
https://ghproxy.com/https:/raw.githubusercontent.com/gaotianliuyun/gao/master/radio.txt
|
../radio.txt
|
||||||
#范明明•电台
|
#范明明•电台
|
||||||
https://ghproxy.com/https://raw.githubusercontent.com/fanmingming/live/main/radio/m3u/index.m3u
|
https://ghproxy.com/https://raw.githubusercontent.com/fanmingming/live/main/radio/m3u/index.m3u
|
||||||
#肥羊•斗鱼
|
#肥羊•斗鱼
|
||||||
@@ -31,7 +33,7 @@ https://ghproxy.com/https://raw.githubusercontent.com/Ftindy/IPTV-URL/main/huyay
|
|||||||
#肥羊•YY
|
#肥羊•YY
|
||||||
https://ghproxy.com/https://raw.githubusercontent.com/Ftindy/IPTV-URL/main/yylunbo.m3u
|
https://ghproxy.com/https://raw.githubusercontent.com/Ftindy/IPTV-URL/main/yylunbo.m3u
|
||||||
#初秋语•哔哩
|
#初秋语•哔哩
|
||||||
https://ghproxy.com/https:/raw.githubusercontent.com/gaotianliuyun/gao/master/bili.m3u
|
../bili.m3u
|
||||||
#16万MV
|
#16万MV
|
||||||
https://ghproxy.com/https://raw.githubusercontent.com/lystv/short/main/影视/tvb/MTV.txt
|
https://ghproxy.com/https://raw.githubusercontent.com/lystv/short/main/影视/tvb/MTV.txt
|
||||||
#YuanHsing•油管
|
#YuanHsing•油管
|
||||||
|
|||||||
Reference in New Issue
Block a user