上传文件至 /
This commit is contained in:
parent
57df303272
commit
c1125b6a00
39
yousxxx.json
Normal file
39
yousxxx.json
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
"作者":"",
|
||||
"站名":"右手影院",
|
||||
"主页url":"https://youshou19.cc",
|
||||
"分类":"日韩爽片&国产精选&欧美激情&卡通动漫&另类乱伦&日韩无码&日韩精品&中文字幕&日韩伦理&日韩有码&制服诱惑&人妻系列&自拍偷拍&国产精品&主播大秀&美女自慰&3P合集&巨乳系列&会员&三级伦理&清纯萝莉",
|
||||
"分类值":"1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21",
|
||||
//"分类url":"https://youshou19.cc/vodtype/{cateId}-{catePg}.html",
|
||||
"分类url":"https://youshou19.cc/vodshow/{cateId}--{by}------{catePg}---{year}.html",
|
||||
"数组":"<a class=\"stui-vodlist__thumb&&</a>",
|
||||
"图片":"data-original=\"&&\"",
|
||||
"标题":"title=\"&&\"",
|
||||
"链接":"href=\"&&\"",
|
||||
"副标题":"<span class=\"pic-text text-right\">&&</span>",
|
||||
"搜索模式":"1",
|
||||
"搜索url":"https://youshou19.cc/vodsearch/{wd}----------{pg}---.html",
|
||||
"搜索数组":"<a class=\"stui-vodlist__thumb&&</a>",
|
||||
"搜索图片":"data-original=\"&&\"",
|
||||
"搜索标题":"title=\"&&\"",
|
||||
"搜索链接":"href=\"&&\"",
|
||||
"搜索副标题":"<span class=\"pic-text text-right\">&&</span>",
|
||||
"影片年代":"年份:&&</p>",
|
||||
"影片地区":"地区:&&<span",
|
||||
"影片类型":"类型:&&<span",
|
||||
"导演":"导演:&&</p>",
|
||||
"主演":"主演:&&</p>",
|
||||
"简介":"简介:&&</p>",
|
||||
"线路数组":"<ul class=\"tab-top play-tab clearfix\"&&</div>",
|
||||
"线路标题":"<h3>&&</h3>",
|
||||
"播放数组":"<ul class=\"stui-play__list clearfix\"&&</ul>",
|
||||
"播放列表":"<a&&/a>",
|
||||
"播放标题":">&&<",
|
||||
"播放链接":"href=\"&&\"",
|
||||
"类型":"0",
|
||||
"地区":"0",
|
||||
"剧情":"0",
|
||||
"年份":"1",
|
||||
"排序":"1",
|
||||
"筛选":"1"
|
||||
}
|
534
zhibo.js
Normal file
534
zhibo.js
Normal file
@ -0,0 +1,534 @@
|
||||
/**
|
||||
* live2cms.js
|
||||
* 配置设置 {"key":"Live2CMS","name":"直播转点播V2","type":3,"api":"{{host}}/libs/live2cms.js","searchable":2,"quickSearch":0,"filterable":0,"ext":"{{host}}/txt/json/live2mv_data.json"}
|
||||
* live2mv_data.json
|
||||
* 支持m3u类直播,支持线路归并。支持筛选切换显示模式
|
||||
[
|
||||
{"name": "甜蜜", "url": "http://zdir.kebedd69.repl.co/public/live.txt"},
|
||||
{"name": "俊于", "url": "http://home.jundie.top:81/Cat/tv/live.txt"},
|
||||
{"name": "菜妮丝", "url": "http://xn--ihqu10cn4c.xn--z7x900a.love:63/TV/tvzb.txt"},
|
||||
{"name": "布里m3u", "url": "http://jiexi.bulisite.top/m3u.php"},
|
||||
{"name": "吾爱", "url": "http://52bsj.vip:81/api/v3/file/get/763/live.txt?sign=87BTGT1_6AOry7FPwy_uuxFTv2Wcb9aDMj46rDdRTD8%3D%3A0"},
|
||||
{"name": "饭太硬", "url": "http://ftyyy.tk/live.txt"}
|
||||
]
|
||||
|
||||
* 提示 ext文件格式为json列表,name,url参数
|
||||
* 取消加密,减少性能问题
|
||||
*/
|
||||
String.prototype.rstrip = function (chars) {
|
||||
let regex = new RegExp(chars + "$");
|
||||
return this.replace(regex, "");
|
||||
};
|
||||
const request_timeout = 5000;
|
||||
const RKEY = 'live2cms'; // 源的唯一标识
|
||||
const VERSION = 'live2cms 20230619';
|
||||
const UA = 'Mozilla/5.0'; //默认请求ua
|
||||
const __ext = {data_dict:{}};
|
||||
const tips = `\n直播转点播js-当前版本${VERSION}`;
|
||||
const def_pic = 'https://agit.ai/susu123/ztv/raw/branch/main/sp/99.jpg';
|
||||
|
||||
/**
|
||||
* 存在数据库配置表里, key字段对应值value,没有就新增,有就更新,调用此方法会清除key对应的内存缓存
|
||||
* @param k 键
|
||||
* @param v 值
|
||||
*/
|
||||
function setItem(k,v){
|
||||
local.set(RKEY,k,v);
|
||||
console.log(`规则${RKEY}设置${k} => ${v}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据库配置表对应的key字段的value,没有这个key就返回value默认传参.需要有缓存,第一次获取后会存在内存里
|
||||
* @param k 键
|
||||
* @param v 值
|
||||
* @returns {*}
|
||||
*/
|
||||
function getItem(k,v){
|
||||
return local.get(RKEY,k) || v;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除数据库key对应的一条数据,并清除此key对应的内存缓存
|
||||
* @param k
|
||||
*/
|
||||
function clearItem(k){
|
||||
local.delete(RKEY,k);
|
||||
}
|
||||
|
||||
var showMode = getItem('showMode','groups'); // groups按组分类显示 all全部一条线路展示
|
||||
var groupDict = JSON.parse(getItem('groupDict','{}')); // 搜索分组字典
|
||||
|
||||
/**
|
||||
* 打印日志
|
||||
* @param any 任意变量
|
||||
*/
|
||||
function print(any){
|
||||
any = any||'';
|
||||
if(typeof(any)=='object'&&Object.keys(any).length>0){
|
||||
try {
|
||||
any = JSON.stringify(any);
|
||||
console.log(any);
|
||||
}catch (e) {
|
||||
// console.log('print:'+e.message);
|
||||
console.log(typeof(any)+':'+any.length);
|
||||
}
|
||||
}else if(typeof(any)=='object'&&Object.keys(any).length<1){
|
||||
console.log('null object');
|
||||
}else{
|
||||
console.log(any);
|
||||
}
|
||||
}
|
||||
|
||||
/*** js自封装的方法 ***/
|
||||
|
||||
/**
|
||||
* 获取链接的host(带http协议的完整链接)
|
||||
* @param url 任意一个正常完整的Url,自动提取根
|
||||
* @returns {string}
|
||||
*/
|
||||
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
|
||||
}
|
||||
|
||||
/**
|
||||
* m3u直播格式转一般直播格式
|
||||
* @param m3u
|
||||
* @returns {string}
|
||||
*/
|
||||
function convertM3uToNormal(m3u) {
|
||||
try {
|
||||
const lines = m3u.split('\n');
|
||||
let result = '';
|
||||
let TV='';
|
||||
// let flag='#genre#';
|
||||
let flag='#m3u#';
|
||||
let currentGroupTitle = '';
|
||||
lines.forEach((line) => {
|
||||
if (line.startsWith('#EXTINF:')) {
|
||||
const groupTitle = line.split('"')[1].trim();
|
||||
TV= line.split('"')[2].substring(1);
|
||||
if (currentGroupTitle !== groupTitle) {
|
||||
currentGroupTitle = groupTitle;
|
||||
result += `\n${currentGroupTitle},${flag}\n`;
|
||||
}
|
||||
} else if (line.startsWith('http')) {
|
||||
const splitLine = line.split(',');
|
||||
result += `${TV}\,${splitLine[0]}\n`;
|
||||
}
|
||||
});
|
||||
return result.trim();
|
||||
}catch (e) {
|
||||
print(`m3u直播转普通直播发生错误:${e.message}`);
|
||||
return m3u
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 线路归类
|
||||
* @param arr
|
||||
* @returns {*[][]}
|
||||
*/
|
||||
function merge(arr) {
|
||||
var parse = arguments[1] ? arguments[1] : '';
|
||||
var p = [];
|
||||
if (parse !== '' && typeof(parse)=="function") {
|
||||
p = arr.map(parse);
|
||||
}
|
||||
const createEmptyArrays = (length) => Array.from({
|
||||
length
|
||||
}, () => []);
|
||||
let lists = createEmptyArrays(arr.length);
|
||||
let sl = createEmptyArrays(arr.length);
|
||||
(p.length ? p : arr).forEach((k, index) => {
|
||||
var i = 0;
|
||||
while (sl[i].includes(k)) {
|
||||
i = i + 1
|
||||
}
|
||||
sl[i].push(k);
|
||||
lists[i].push(arr[index]);
|
||||
})
|
||||
lists=lists.filter(x=>x.some(k=>k.length));
|
||||
return lists
|
||||
}
|
||||
|
||||
/**
|
||||
* 线路归类/小棉袄算法
|
||||
* @param arr 数组
|
||||
* @param parse 解析式
|
||||
* @returns {[[*]]}
|
||||
*/
|
||||
function splitArray(arr,parse) {
|
||||
parse = parse&&typeof(parse)=='function'?parse:'';
|
||||
let result = [[arr[0]]];
|
||||
for (let i = 1; i < arr.length; i++) {
|
||||
let index = -1;
|
||||
for (let j = 0; j < result.length; j++) {
|
||||
if (parse&&result[j].map(parse).includes(parse(arr[i]))) {
|
||||
index = j;
|
||||
}else if((!parse) && result[j].includes(arr[i])){
|
||||
index = j;
|
||||
}
|
||||
}
|
||||
if (index >= result.length - 1) {
|
||||
result.push([]);
|
||||
result[result.length - 1].push(arr[i]);
|
||||
} else {
|
||||
result[index + 1].push(arr[i]);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 搜索结果生成分组字典
|
||||
* @param arr
|
||||
* @param parse x=>x.split(',')[0]
|
||||
* @returns {{}}
|
||||
*/
|
||||
function gen_group_dict(arr,parse){
|
||||
let dict = {};
|
||||
arr.forEach((it)=>{
|
||||
let k = it.split(',')[0];
|
||||
if(parse && typeof(parse)==='function'){
|
||||
k = parse(k);
|
||||
}
|
||||
if(!dict[k]){
|
||||
dict[k] = [it]
|
||||
}else{
|
||||
dict[k].push(it);
|
||||
}
|
||||
});
|
||||
return dict
|
||||
}
|
||||
|
||||
const http = function (url, options = {}) {
|
||||
if(options.method ==='POST' && options.data){
|
||||
options.body = JSON.stringify(options.data);
|
||||
options.headers = Object.assign({'content-type':'application/json'}, options.headers);
|
||||
}
|
||||
options.timeout = request_timeout;
|
||||
if(!options.headers){
|
||||
options.headers = {};
|
||||
}
|
||||
let keys = Object.keys(options.headers).map(it=>it.toLowerCase());
|
||||
if(!keys.includes('referer')){
|
||||
options.headers['Referer'] = getHome(url);
|
||||
}
|
||||
if(!keys.includes('user-agent')){
|
||||
options.headers['User-Agent'] = UA;
|
||||
}
|
||||
console.log(JSON.stringify(options.headers));
|
||||
try {
|
||||
const res = req(url, options);
|
||||
// if(options.headers['Authorization']){
|
||||
// console.log(res.content);
|
||||
// }
|
||||
res.json = () => res&&res.content ? JSON.parse(res.content) : null;
|
||||
res.text = () => res&&res.content ? res.content:'';
|
||||
return res
|
||||
}catch (e) {
|
||||
return {
|
||||
json() {
|
||||
return null
|
||||
}, text() {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
["get", "post"].forEach(method => {
|
||||
http[method] = function (url, options = {}) {
|
||||
return http(url, Object.assign(options, {method: method.toUpperCase()}));
|
||||
}
|
||||
});
|
||||
|
||||
function init(ext) {
|
||||
console.log("当前版本号:"+VERSION);
|
||||
let data;
|
||||
if (typeof ext == 'object'){
|
||||
data = ext;
|
||||
print('live ext:object');
|
||||
} else if (typeof ext == 'string') {
|
||||
if (ext.startsWith('http')) {
|
||||
let ext_paramas = ext.split(';');
|
||||
let data_url = ext_paramas[0];
|
||||
print(data_url);
|
||||
data = http.get(data_url).json();
|
||||
}
|
||||
}
|
||||
print(data);
|
||||
__ext.data = data;
|
||||
print('init执行完毕');
|
||||
}
|
||||
|
||||
function home(filter) {
|
||||
let classes = __ext.data.map(it => ({
|
||||
type_id: it.url,
|
||||
type_name: it.name,
|
||||
}));
|
||||
print("----home----");
|
||||
let filter_dict = {};
|
||||
let filters = [
|
||||
{'key': 'show', 'name': '播放展示', 'value': [{'n': '多线路分组', 'v': 'groups'},{'n': '单线路', 'v': 'all'}]}
|
||||
];
|
||||
classes.forEach(it=>{
|
||||
filter_dict[it.type_id] = filters;
|
||||
});
|
||||
print(classes);
|
||||
return JSON.stringify({ 'class': classes,'filters': filter_dict});
|
||||
}
|
||||
|
||||
function homeVod(params) {
|
||||
let _get_url = __ext.data[0].url;
|
||||
let html;
|
||||
if(__ext.data_dict[_get_url]){
|
||||
html = __ext.data_dict[_get_url];
|
||||
}else{
|
||||
html = http.get(_get_url).text();
|
||||
if(/#EXTM3U/.test(html)){
|
||||
html = convertM3uToNormal(html);
|
||||
}
|
||||
__ext.data_dict[_get_url] = html;
|
||||
}
|
||||
// let arr = html.match(/.*?,#[\s\S].*?#/g);
|
||||
let arr = html.match(/.*?[,,]#[\s\S].*?#/g); // 可能存在中文逗号
|
||||
let _list = [];
|
||||
try {
|
||||
arr.forEach(it=>{
|
||||
let vname = it.split(/[,,]/)[0];
|
||||
let vtab = it.match(/#(.*?)#/)[0];
|
||||
_list.push({
|
||||
vod_name:vname,
|
||||
vod_id:_get_url+'$'+vname,
|
||||
vod_pic:def_pic,
|
||||
vod_remarks:vtab,
|
||||
});
|
||||
});
|
||||
}catch (e) {
|
||||
print('Live2cms获取首页推荐发送错误:'+e.message);
|
||||
}
|
||||
return JSON.stringify({ 'list': _list });
|
||||
}
|
||||
|
||||
function category(tid, pg, filter, extend) {
|
||||
let fl = filter?extend:{};
|
||||
if(fl.show){
|
||||
showMode = fl.show;
|
||||
setItem('showMode',showMode);
|
||||
}
|
||||
if(parseInt(pg)>1){
|
||||
return JSON.stringify({
|
||||
'list': [],
|
||||
});
|
||||
}
|
||||
let _get_url = tid;
|
||||
let html;
|
||||
if(__ext.data_dict[_get_url]){
|
||||
html = __ext.data_dict[_get_url];
|
||||
}else{
|
||||
html = http.get(_get_url).text();
|
||||
if(/#EXTM3U/.test(html)){
|
||||
html = convertM3uToNormal(html);
|
||||
}
|
||||
__ext.data_dict[_get_url] = html;
|
||||
}
|
||||
// let arr = html.match(/.*?[,,]#[\s\S].*?#/g);
|
||||
let arr = html.match(/.*?[,,]#[\s\S].*?#/g); // 可能存在中文逗号
|
||||
let _list = [];
|
||||
try {
|
||||
arr.forEach(it=>{
|
||||
let vname = it.split(/[,,]/)[0];
|
||||
let vtab = it.match(/#(.*?)#/)[0];
|
||||
_list.push({
|
||||
// vod_name:it.split(',')[0],
|
||||
vod_name:vname,
|
||||
vod_id:_get_url+'$'+vname,
|
||||
vod_pic:def_pic,
|
||||
vod_remarks:vtab,
|
||||
});
|
||||
});
|
||||
}catch (e) {
|
||||
print('Live2cms获取一级分类页发生错误:'+e.message);
|
||||
}
|
||||
|
||||
return JSON.stringify({
|
||||
'page': 1,
|
||||
'pagecount': 1,
|
||||
'limit': _list.length,
|
||||
'total': _list.length,
|
||||
'list': _list,
|
||||
});
|
||||
}
|
||||
|
||||
function detail(tid) { // ⛵ 港•澳•台
|
||||
let _get_url = tid.split('$')[0];
|
||||
let _tab = tid.split('$')[1];
|
||||
if(tid.includes('#search#')){
|
||||
let vod_name = _tab.replace('#search#','');
|
||||
let vod_play_from = '来自搜索';
|
||||
vod_play_from+=`:${_get_url}`;
|
||||
|
||||
// let vod_play_url = vod_name+'$'+_get_url;
|
||||
// print(vod_play_url);
|
||||
|
||||
let vod_play_url = groupDict[_get_url].map(x=>x.replace(',','$')).join('#');
|
||||
|
||||
return JSON.stringify({
|
||||
list: [{
|
||||
vod_id: tid,
|
||||
vod_name: '搜索:'+vod_name,
|
||||
type_name: "直播列表",
|
||||
vod_pic: def_pic,
|
||||
vod_content: tid,
|
||||
vod_play_from: vod_play_from,
|
||||
vod_play_url: vod_play_url,
|
||||
vod_director: tips,
|
||||
vod_remarks: `直播转点播js-当前版本${VERSION}`,
|
||||
}]
|
||||
});
|
||||
}
|
||||
let html;
|
||||
if(__ext.data_dict[_get_url]){
|
||||
html = __ext.data_dict[_get_url];
|
||||
}else{
|
||||
html = http.get(_get_url).text();
|
||||
if(/#EXTM3U/.test(html)){
|
||||
html = convertM3uToNormal(html);
|
||||
}
|
||||
__ext.data_dict[_get_url] = html;
|
||||
}
|
||||
// let a = new RegExp(`.*?${_tab},#[\\s\\S].*?#`);
|
||||
let a = new RegExp(`.*?${_tab.replace('(','\\(').replace(')','\\)')}[,,]#[\\s\\S].*?#`);
|
||||
let b = html.match(a)[0];
|
||||
let c = html.split(b)[1];
|
||||
if(c.match(/.*?[,,]#[\s\S].*?#/)){
|
||||
let d = c.match(/.*?[,,]#[\s\S].*?#/)[0];
|
||||
c = c.split(d)[0];
|
||||
}
|
||||
let arr = c.trim().split('\n');
|
||||
let _list = [];
|
||||
arr.forEach((it)=>{
|
||||
if(it.trim()){
|
||||
let t = it.trim().split(',')[0];
|
||||
let u = it.trim().split(',')[1];
|
||||
_list.push(t+'$'+u);
|
||||
}
|
||||
});
|
||||
|
||||
let vod_name = __ext.data.find(x=>x.url===_get_url).name;
|
||||
let vod_play_url;
|
||||
let vod_play_from;
|
||||
|
||||
if(showMode==='groups'){
|
||||
let groups = splitArray(_list,x=>x.split('$')[0]);
|
||||
let tabs = [];
|
||||
for(let i=0;i<groups.length;i++){
|
||||
if(i===0){
|
||||
tabs.push(vod_name+'1')
|
||||
}else{
|
||||
tabs.push(` ${i+1} `)
|
||||
}
|
||||
}
|
||||
vod_play_url = groups.map(it=>it.join('#')).join('$$$');
|
||||
vod_play_from = tabs.join('$$$');
|
||||
}else{
|
||||
vod_play_url = _list.join('#');
|
||||
vod_play_from = vod_name;
|
||||
}
|
||||
let vod = {
|
||||
vod_id: tid,
|
||||
vod_name: vod_name+'|'+_tab,
|
||||
type_name: "直播列表",
|
||||
vod_pic: def_pic,
|
||||
vod_content: tid,
|
||||
vod_play_from: vod_play_from,
|
||||
vod_play_url: vod_play_url,
|
||||
vod_director: tips,
|
||||
vod_remarks: `直播转点播js-当前版本${VERSION}`,
|
||||
};
|
||||
|
||||
return JSON.stringify({
|
||||
list: [vod]
|
||||
});
|
||||
}
|
||||
|
||||
function play(flag, id, flags) {
|
||||
let vod = {
|
||||
'parse': /m3u8/.test(id)?0:1,
|
||||
'playUrl': '',
|
||||
'url': id
|
||||
};
|
||||
print(vod);
|
||||
return JSON.stringify(vod);
|
||||
}
|
||||
|
||||
function search(wd, quick) {
|
||||
let _get_url = __ext.data[0].url;
|
||||
let html;
|
||||
if(__ext.data_dict[_get_url]){
|
||||
html = __ext.data_dict[_get_url];
|
||||
}else{
|
||||
html = http.get(_get_url).text();
|
||||
if(/#EXTM3U/.test(html)){
|
||||
html = convertM3uToNormal(html);
|
||||
}
|
||||
__ext.data_dict[_get_url] = html;
|
||||
}
|
||||
let str='';
|
||||
Object.keys(__ext.data_dict).forEach(()=>{
|
||||
str+=__ext.data_dict[_get_url];
|
||||
});
|
||||
let links = str.split('\n').filter(it=>it.trim() && it.includes(',') && it.split(',')[1].trim().startsWith('http'));
|
||||
links = links.map(it=>it.trim());
|
||||
let plays = Array.from(new Set(links));
|
||||
print('搜索关键词:'+wd);
|
||||
print('过滤前:'+plays.length);
|
||||
plays = plays.filter(it=>it.includes(wd));
|
||||
print('过滤后:'+plays.length);
|
||||
print(plays);
|
||||
let new_group = gen_group_dict(plays);
|
||||
groupDict = Object.assign(groupDict,new_group);
|
||||
// 搜索分组结果存至本地方便二级调用
|
||||
setItem('groupDict',JSON.stringify(groupDict));
|
||||
let _list = [];
|
||||
|
||||
|
||||
// plays.forEach((it)=>{
|
||||
// _list.push({
|
||||
// 'vod_name':it.split(',')[0],
|
||||
// 'vod_id':it.split(',')[1].trim()+'$'+it.split(',')[0].trim()+'#search#',
|
||||
// 'vod_pic':def_pic,
|
||||
// })
|
||||
// });
|
||||
|
||||
Object.keys(groupDict).forEach((it)=>{
|
||||
_list.push({
|
||||
'vod_name':it,
|
||||
'vod_id':it+'$'+wd+'#search#',
|
||||
'vod_pic':def_pic,
|
||||
});
|
||||
});
|
||||
return JSON.stringify({
|
||||
'list': _list
|
||||
});
|
||||
}
|
||||
|
||||
// 导出函数对象
|
||||
export default {
|
||||
init: init,
|
||||
home: home,
|
||||
homeVod: homeVod,
|
||||
category: category,
|
||||
detail: detail,
|
||||
play: play,
|
||||
search: search
|
||||
}
|
85
zipai.json
Normal file
85
zipai.json
Normal file
@ -0,0 +1,85 @@
|
||||
{
|
||||
"规则名": "index-area模板",
|
||||
"规则作者": "",
|
||||
"请求头参数": "手机",
|
||||
"网页编码格式": "UTF-8",
|
||||
"图片是否需要代理": "0",
|
||||
"首页片单是否Jsoup写法": "1",
|
||||
"是否开启获取首页数据": "0",
|
||||
"首页推荐链接": "",
|
||||
"首页列表数组规则": "",
|
||||
"首页片单列表数组规则": "ul&&li",
|
||||
"分类起始页码": "1",
|
||||
"分类链接": "https://612595a.com/index.php/vod/type/id/{cateId}/page/{catePg}.html",
|
||||
"分类名称": "制服诱惑&国产视频&清纯少女&辣妹大奶&女同专属&素人出演&角色扮演&人妻熟女&经典伦理&成人动漫",
|
||||
"分类名称替换词": "22&6&8&9&10&11&12&20&21&7",
|
||||
"筛选数据": {},
|
||||
//"筛选数据": "ext",
|
||||
//{cateId}
|
||||
"筛选子分类名称": "",
|
||||
"筛选子分类替换词": "",
|
||||
//{class}
|
||||
"筛选类型名称": "",
|
||||
"筛选类型替换词": "*",
|
||||
//{area}
|
||||
"筛选地区名称": "",
|
||||
"筛选地区替换词": "*",
|
||||
//{year}
|
||||
"筛选年份名称": "",
|
||||
"筛选年份替换词": "*",
|
||||
//{lang}
|
||||
"筛选语言名称": "",
|
||||
"筛选语言替换词": "*",
|
||||
//{by}
|
||||
"筛选排序名称": "时间&人气&评分",
|
||||
"筛选排序替换词": "time&hits&score",
|
||||
|
||||
"分类片单是否Jsoup写法": "1",
|
||||
"分类截取模式": "1",
|
||||
"分类列表数组规则": ".myvod&&ul&&li",
|
||||
"分类片单标题": "h4&&a,0&&Text",
|
||||
"分类片单链接": "a&&href",
|
||||
"分类片单图片": ".lazy&&data-original",
|
||||
"分类片单副标题": "h4&&Text",
|
||||
"分类片单链接加前缀": "https://612595a.com",
|
||||
"分类片单链接加后缀": "",
|
||||
|
||||
"搜索片单是否Jsoup写法": "1",
|
||||
"搜索请求头参数": "User-Agent$手机",
|
||||
"搜索链接": "",
|
||||
"POST请求数据": "",
|
||||
"搜索截取模式": "1",
|
||||
"搜索列表数组规则": ".index-area&&li",
|
||||
"搜索片单图片": "img&&data-original",
|
||||
"搜索片单标题": "a&&title",
|
||||
"搜索片单链接": "a&&href",
|
||||
"搜索片单副标题": ".other&&Text",
|
||||
"搜索片单链接加前缀": "",
|
||||
"搜索片单链接加后缀": "",
|
||||
"链接是否直接播放": "",
|
||||
"直接播放链接加前缀": "",
|
||||
"直接播放链接加后缀": "",
|
||||
"直接播放直链视频请求头": "",
|
||||
|
||||
"详情是否Jsoup写法": "0",
|
||||
"类型详情": "",
|
||||
"年代详情": "",
|
||||
"地区详情": "",
|
||||
"演员详情": "",
|
||||
"简介详情": "",
|
||||
|
||||
"选集标题链接是否Jsoup写法": "1",
|
||||
"线路列表数组规则": ".playfrom&&li",
|
||||
"线路标题": "Text",
|
||||
"播放列表数组规则": "body&&.playlist",
|
||||
"选集列表数组规则": "ul&&li",
|
||||
"选集标题": "a&&Text",
|
||||
"选集链接": "a&&href",
|
||||
"是否反转选集序列": "0",
|
||||
"选集链接加前缀": "",
|
||||
"选集链接加后缀": "",
|
||||
"分析MacPlayer": "0",
|
||||
"是否开启手动嗅探": "1",
|
||||
"手动嗅探视频链接关键词": ".m3u8",
|
||||
"手动嗅探视频链接过滤词": ""
|
||||
}
|
286
zuolys.json
Normal file
286
zuolys.json
Normal file
@ -0,0 +1,286 @@
|
||||
{
|
||||
"站名": "左临右射",
|
||||
"主页url": "https://www.zlyspet.info/",
|
||||
"直接播放": "1",
|
||||
"列表显示": "0",
|
||||
"横图显示": "0",
|
||||
"分类":"国产视频$1#日本视频$2#VR视频$3#韩国视频$4#欧美视频$5#动画视频$6#中文字幕$9#国产传媒$160#泰国视频$82",
|
||||
"数组": "<div class=\"item\">&&</div>",
|
||||
"图片": "src=\"&&\"",
|
||||
"标题": "title=\"&&\"",
|
||||
"链接": "href=\"&&\"",
|
||||
"链接前缀":"https://www.zlyspet.info",
|
||||
"副标题":"<span class=\"is-hd\">&&</span>",
|
||||
"搜索url":"https://www.zlyspet.info/index.php/vodsearch/{wd}----------{pg}---.html",
|
||||
"搜索模式":"1",
|
||||
"搜索数组": "<div class=\"item\">&&</div>",
|
||||
"搜索图片":"src=\"&&\"",
|
||||
"搜索标题":"title=\"&&\"",
|
||||
"搜索链接":"href=\"&&\"",
|
||||
"搜索副标题":"<span class=\"is-hd\">&&</span>",
|
||||
"搜索后缀":"/index.php/vodplay/",
|
||||
"搜索链接前缀":"https://www.zlyspet.info",
|
||||
"搜索链接后缀":"-1-1.html",
|
||||
"免嗅":"0",
|
||||
"嗅探词":".m3u8#.mp4#.flv#.m4a#.avi#.mkv#.mov#.3gp#.asf#.rm#.rmvb#.wmv#.mpg#.mpeg#.mpe#.ts#.vob#.mp3#.wma",
|
||||
"过滤词":"=http#.jpg#.png#.ico#.gif#.js",
|
||||
"分类url":"https://www.zlyspet.info/index.php/vodtype/{cateId}-{catePg}.html",
|
||||
"筛选":{
|
||||
"1":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"10","n":"国产精品"},
|
||||
{"v":"11","n":"精品三级"},
|
||||
{"v":"16","n":"主播大秀"},
|
||||
{"v":"17","n":"抖阴视频"},
|
||||
{"v":"14","n":"国模私拍"},
|
||||
{"v":"15","n":"颜射瞬间"},
|
||||
{"v":"16","n":"女神学生"},
|
||||
{"v":"17","n":"美熟少妇"},
|
||||
{"v":"18","n":"娇妻素人"},
|
||||
{"v":"19","n":"空姐模特"},
|
||||
{"v":"20","n":"国产乱伦"},
|
||||
{"v":"26","n":"专题"},
|
||||
{"v":"21","n":"自慰群交"},
|
||||
{"v":"22","n":"野合车震"},
|
||||
{"v":"23","n":"职场同事"},
|
||||
{"v":"24","n":"国产名人"},
|
||||
{"v":"25","n":"网曝门事件"},
|
||||
{"v":"57","n":"偷拍自拍"},
|
||||
{"v":"99","n":"深夜保健室"},
|
||||
{"v":"119","n":"北京天使"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"27","n":"骑兵有码"},
|
||||
{"v":"28","n":"步兵无码"},
|
||||
{"v":"50","n":"制服师生"},
|
||||
{"v":"51","n":"强奸乱伦"},
|
||||
{"v":"53","n":"人妻熟女"},
|
||||
{"v":"55","n":"三级剧情"},
|
||||
{"v":"56","n":"丝袜美腿"},
|
||||
{"v":"58","n":"亚洲情色"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"7","n":"VR有码"},
|
||||
{"v":"8","n":"VR无码"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"42","n":"韩国精品"},
|
||||
{"v":"43","n":"韩国制服主播"},
|
||||
{"v":"44","n":"韩国萝莉主播"},
|
||||
{"v":"45","n":"韩国大秀主播"},
|
||||
{"v":"46","n":"韩国自慰主播"},
|
||||
{"v":"47","n":"韩国唯美三级"},
|
||||
{"v":"48","n":"韩国明星学生"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"29","n":"欧美性爱"},
|
||||
{"v":"93","n":"性爱音乐视频-PMV"},
|
||||
{"v":"30","n":"人兽"},
|
||||
{"v":"31","n":"人妖"},
|
||||
{"v":"95","n":"MomsTeachSex"},
|
||||
{"v":"32","n":"男同"},
|
||||
{"v":"33","n":"女同"},
|
||||
{"v":"83","n":"Fake Taxi"},
|
||||
{"v":"87","n":"Barzzers"},
|
||||
{"v":"117","n":"Wow Girls"},
|
||||
{"v":"116","n":"FamilyStrokes"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"49","n":"卡通动漫"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"9":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"34","n":"无码中文"},
|
||||
{"v":"35","n":"强奸中文"},
|
||||
{"v":"36","n":"巨乳中文"},
|
||||
{"v":"37","n":"乱伦中文"},
|
||||
{"v":"38","n":"制服中文"},
|
||||
{"v":"39","n":"人妻中文"},
|
||||
{"v":"40","n":"调教中文"},
|
||||
{"v":"41","n":"出轨中文"},
|
||||
{"v":"59","n":"中文字幕"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"160":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"161","n":"麻豆视频"},
|
||||
{"v":"162","n":"91制片厂"},
|
||||
{"v":"163","n":"天美传媒"},
|
||||
{"v":"164","n":"蜜桃传媒"},
|
||||
{"v":"165","n":"皇家华人"},
|
||||
{"v":"166","n":"星空传媒"},
|
||||
{"v":"167","n":"精东影业"},
|
||||
{"v":"168","n":"乐播传媒"},
|
||||
{"v":"169","n":"91茄子"},
|
||||
{"v":"170","n":"性视界传媒"},
|
||||
{"v":"171","n":"兔子先生"},
|
||||
{"v":"172","n":"杏吧原创"},
|
||||
{"v":"173","n":"玩偶姐姐"},
|
||||
{"v":"174","n":"起点传媒"},
|
||||
{"v":"175","n":"SA国际传媒"},
|
||||
{"v":"176","n":"萝莉社"},
|
||||
{"v":"177","n":"PsychoPorn"},
|
||||
{"v":"178","n":"糖心Vlog"},
|
||||
{"v":"179","n":"葫芦影业"},
|
||||
{"v":"180","n":"果冻传媒"},
|
||||
{"v":"68","n":"SWAG"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
],
|
||||
"82":[
|
||||
{
|
||||
"key":"cateId",
|
||||
"name":"类型",
|
||||
"value":[
|
||||
{"v":"","n":"全部"},
|
||||
{"v":"84","n":"GoGoBar"},
|
||||
{"v":"85","n":"TukTukPatro"},
|
||||
{"v":"86","n":"泰国主播"},
|
||||
{"v":"88","n":"人妖偽娘"},
|
||||
{"v":"118","n":"TiTTiPorn"},
|
||||
{"v":"160","n":"ThaiSkter10"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key":"by",
|
||||
"name":"排序",
|
||||
"value":[
|
||||
{"n":"全部","v":""},
|
||||
{"n":"时间","v":"time"},
|
||||
{"n":"人气","v":"hits"},
|
||||
{"n":"评分","v":"score"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
58
zwwmxxx.json
Normal file
58
zwwmxxx.json
Normal file
@ -0,0 +1,58 @@
|
||||
{"name": "GAOAA",
|
||||
"url": "https://53gaoaa.com",
|
||||
"User": "空",
|
||||
"shouye": "1",
|
||||
"fenlei": "国产视频$/gaotype/25_#日本无码$/gaotype/20_#日本有码$/gaotype/9_#中文字幕$/gaotype/2_#三级电影$/gaotype/1_#巨乳系列$/gaotype/3_#人妻激情$/gaotype/8_#欧美极品$/gaotype/18_#制服诱惑$/gaotype/16_#自拍偷拍$/gaotype/17_#强奸乱伦$/gaotype/14_#绝美少女$/gaotype/13_#首次亮相$/gaotype/12_#HEY诱惑$/gaotype/5_#独家DMM$/gaotype/4_#网红主播$/gaotype/6_#日韩精品$/gaotype/10_#激情口交$/gaotype/11_#动漫电影$/gaotype/15_#极骚萝莉$/gaotype/19_#HEYZO$/gaotype/21_#高潮喷吹$/gaotype/22_#自慰颜射$/gaotype/23_",
|
||||
"houzhui": ".html",
|
||||
"shifouercijiequ": "1",
|
||||
"jiequqian": "blank\">百人牛牛,美女陪干!不爽就来干</a>",
|
||||
"jiequhou": "<div class=\"box-page\">",
|
||||
"jiequshuzuqian": "class=\"video-pic loading",
|
||||
"jiequshuzuhou": "player",
|
||||
"tupianqian": "original=\"",
|
||||
"tupianhou": "\"",
|
||||
"biaotiqian": "title=\"",
|
||||
"biaotihou": "\"",
|
||||
"lianjieqian": "href=\"",
|
||||
"lianjiehou": "\"",
|
||||
"sousuoqian": "/gaosearch/-/?wd=",
|
||||
"sousuohou": "",
|
||||
"sousuohouzhui": "/gaotype/",
|
||||
"ssmoshi": "1",
|
||||
"sousuoshifouercijiequ": "1",
|
||||
"jspic": "空",
|
||||
"jsname": "空",
|
||||
"jsid": "空",
|
||||
"ssjiequqian": "blank\">百人牛牛,美女陪干!不爽就来干</a>",
|
||||
"ssjiequhou": "<div class=\"box-page\">",
|
||||
"ssjiequshuzuqian": "class=\"video-pic loading",
|
||||
"ssjiequshuzuhou": "player",
|
||||
"sstupianqian": "original=\"",
|
||||
"sstupianhou": "\"",
|
||||
"ssbiaotiqian": "title=\"",
|
||||
"ssbiaotihou": "\"",
|
||||
"sslianjieqian": "href=\"",
|
||||
"sslianjiehou": "\"",
|
||||
"bfshifouercijiequ": "0",
|
||||
"bfjiequqian": "空",
|
||||
"bfjiequhou": "空",
|
||||
"bfjiequshuzuqian": "class=\"item line\">",
|
||||
"bfjiequshuzuhou": "</div>",
|
||||
"zhuangtaiqian": "target=\"_blank\">",
|
||||
"zhuangtaihou": "</a><i",
|
||||
"daoyanqian": "class=\"data\">类型:",
|
||||
"daoyanhou": "</p>",
|
||||
"zhuyanqian": "class=\"data\">主演:",
|
||||
"zhuyanhou": "</p>",
|
||||
"juqingqian": "<h1>",
|
||||
"juqinghou": "</h1>",
|
||||
"bfyshifouercijiequ": "0",
|
||||
"bfyjiequqian": "空",
|
||||
"bfyjiequhou": "空",
|
||||
"bfyjiequshuzuqian": "<a",
|
||||
"bfyjiequshuzuhou": "/a>",
|
||||
"bfbiaotiqian": ">",
|
||||
"bfbiaotihou": "<",
|
||||
"bflianjieqian": "href=\"",
|
||||
"bflianjiehou": "\""
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user