/*
@header({
searchable: 0,
filterable: 0,
quickSearch: 0,
title: '动作测试',
more: {
sourceTag: '设置,动作',
actions: [
{
name: '模拟设置夸克Cookie',
action: 'set-cookie'
},
{
name: '模拟夸克扫码',
action: '夸克扫码'
},
{
name: '模拟设置玩偶域名',
action: '{\'actionId\':\'玩偶域名\',\'id\':\'domain\',\'type\':\'input\',\'width\':450,\'title\':\'玩偶域名\',\'tip\':\'请输入玩偶域名\',\'value\':\'\',\'msg\':\'选择或输入使用的域名\',\'selectData\':\'1:=https://www.wogg.net/,2:=https://wogg.xxooo.cf/,3:=https://wogg.888484.xyz/,4:=https://www.wogg.bf/,5:=https://woggapi.333232.xyz/\'}'
}
]
},
lang: 'ds'
})
*/
const data = [
{
vod_id: '放入剪贴板',
vod_name: '放入剪贴板',
vod_tag:'action'
},
{
vod_id: '刷新列表',
vod_name: '刷新列表',
vod_tag: 'action'
},
{
vod_id: JSON.stringify({
actionId: 'WEBVIEW',
type: 'webview',
height: -260,
textZoom: 70,
url: 'http://127.0.0.1:9978/',
}),
vod_name: 'WEBVIEW',
vod_pic: 'clan://assets/tab.png',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: 'help',
type: 'help',
title: '使用帮助',
data: {
使用帮助: '暂未收录内容'
}
}),
vod_name: '使用帮助',
vod_pic: 'clan://assets/set.png',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '图片点击坐标',
id: 'coord',
type: 'input',
title: '图片点击坐标',
tip: '请输入图片中文字的坐标',
value: '',
msg: '点击图片上文字获取坐标',
imageUrl: 'https://pic.imgdb.cn/item/667ce9f4d9c307b7e9f9d052.webp',
imageHeight: 300,
imageClickCoord: true,
button: 3,
}),
vod_name: '图片点击坐标',
vod_pic: 'https://pic.imgdb.cn/item/667ce9f4d9c307b7e9f9d052.webp',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '消息弹窗',
type: 'msgbox',
title: '消息弹窗',
// msg: '这是一个消息弹窗',
// msgType: 'rich_text',
htmlMsg: '这是一个支持 简单HTML语法 内容的弹窗',
imageUrl: 'https://pic.imgdb.cn/item/667ce9f4d9c307b7e9f9d052.webp',
}),
vod_name: '消息弹窗',
vod_pic: 'clan://assets/ktvlogo.jpg',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '连续对话',
id: 'talk',
type: 'input',
title: '连续对话',
tip: '请输入消息',
value: '',
msg: '开始新的对话',
button: 3,
imageUrl: 'https://pic.imgdb.cn/item/667ce9f4d9c307b7e9f9d052.webp',
imageHeight: 200,
keep: true,
width: 680,
height: 1680,
}),
vod_name: '连续对话',
vod_pic: 'https://img2.baidu.com/it/u=1206278833,3265480730&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=800',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '源内搜索',
id: 'wd',
type: 'input',
title: '源内搜索',
tip: '请输入搜索内容',
value: ''
}),
vod_name: '源内搜索',
vod_pic: 'clan://assets/search.png',
vod_tag:'action'
},
{
vod_id: '夸克扫码',
vod_name: '夸克扫码',
vod_pic: 'https://pic.qisuidc.cn/s/2024/10/23/6718c212f1fdd.webp',
vod_remarks: '夸克',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '玩偶域名',
id: 'domain',
type: 'input',
width: 450,
title: '玩偶域名',
tip: '请输入玩偶域名',
value: '',
msg: '选择或输入使用的域名',
selectData: '1:=https://www.wogg.net/,2:=https://wogg.xxooo.cf/,3:=https://wogg.888484.xyz/,4:=https://www.wogg.bf/,5:=https://woggapi.333232.xyz/'
}),
vod_name: '玩偶域名',
vod_tag:'action'
},
{
vod_id: '基础Action指令',
vod_name: '基础Action',
vod_tag:'action'
},
{
vod_id: 'set-cookie',
vod_name: '设置Cookie',
vod_pic: 'https://pic.qisuidc.cn/s/2024/10/23/6718c212f1fdd.webp',
vod_remarks: '夸克',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '单项输入',
id: 'alitoken',
type: 'input',
title: '阿里云盘Token',
tip: '请输入阿里云盘32位的Token',
value: '',
msg: '单项输入带图, 例如显示验证码图片',
imageUrl: 'https://pic.imgdb.cn/item/667ce9f4d9c307b7e9f9d052.webp',
imageHeight: 200,
}),
vod_name: '单项输入带图',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '扫码初始动作',
id: 'alitoken',
type: 'input',
title: '阿里云盘Token',
msg: '弹出窗口就执行initAction里的动作,回调时就关闭窗口,应用于扫码场景,为了演示,动作注释了',
button: 0,
timeout: 20,
qrcode: 'https://www.alipan.com/',
//initActio: 'initAction'
}),
vod_name: '扫码初始动作',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '单项快速输入',
id: 'alitoken',
type: 'input',
width: 680,
title: '阿里云盘Token',
tip: '请输入阿里云盘32位的Token',
value: '',
msg: '中国第五座南极科考站秦岭站正式建成。',
selectData: '1:=aaa输入默认值,2:=bb输入默认值bbbbb,3:=c输入默认值ddd,4:=输入默认值,5:=111,6:=22222,7:=HOHO,HELLO,world'
}),
vod_name: '单项快速输入',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '多项输入',
type: 'multiInput',
title: 'Action多项输入',
width: 640,
msg: '通过action配置的多项输入',
input: [
{
id: 'item1',
name: '项目1',
tip: '请输入项目1内容',
value: ''
},
{
id: 'item2',
name: '项目2',
tip: '请输入项目2内容',
value: ''
},
{
id: 'item3',
name: '项目3',
tip: '请输入项目3内容',
value: ''
}
]
}),
vod_name: '多项输入',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '多项输入',
type: 'multiInputX',
canceledOnTouchOutside: true,
title: 'Action多项输入(multiInputX)',
width: 716,
height: -300,
bottom: 1,
dimAmount: 0.3,
msg: '“平行志愿”是普通高校招生平行志愿投档模式的简称,平行志愿投档又可分为按“院校+专业组”(以下简称院校专业组)平行志愿投档和按专业平行志愿投档两类。',
button: 3,
input: [
{
id: 'item1',
name: '文件夹路径(文件夹选择)',
tip: '请输入文件夹路径',
value: '',
selectData: '[folder]',
validation: '',
inputType: 0,
help: '“平行志愿”是普通高校招生平行志愿投档模式的简称,平行志愿投档又可分为按“院校+专业组”(以下简称院校专业组)平行志愿投档和按专业平行志愿投档两类。'
},
{
id: 'item2',
name: '日期(日期选择)',
tip: '请输入项目2内容',
value: '',
selectData: '[calendar]',
validation: '',
inputType: 0,
},
{
id: 'item3',
name: '文件路径(文件选择)',
tip: '请输入文件路径',
value: '',
selectData: '[file]',
inputType: 0,
},
{
id: 'item4',
name: '多项选择',
tip: '请输入多项内容,以“,”分隔',
value: '',
selectData: '[请选择字母]a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z',
selectWidth: 640,
multiSelect: true,
selectColumn: 4,
inputType: 0,
},
{
id: 'item5',
name: '项目5',
tip: '请输入项目5内容',
value: '',
multiLine: 5,
},
{
id: 'item6',
name: '项目6',
tip: '请输入项目6内容,密码,inputType: 129',
value: '',
inputType: 129,
},
{
id: 'item7',
name: '图像base64(图像文件选择)',
tip: '请输入项目7内容',
value: '',
selectData: '[image]',
multiLine: 3,
inputType: 0,
},
{
id: 'item8',
name: '单项选择',
tip: '请输入项目8内容',
value: '李四',
selectData: '[请选择]张三,李四,王五,赵六',
onlyQuickSelect: true,
},
{
id: 'item9',
name: '项目9\n“平行志愿”是普通高校招生平行志愿投档模式的简称,平行志愿投档又可分为按“院校+专业组”(以下简称院校专业组)平行志愿投档和按专业平行志愿投档两类。',
tip: '请输入项目9内容',
value: '可歌可泣',
selectData: '[请选择]可爱,可惜,可人,可以,可歌可泣,可恶',
validation: '',
quickSelect: true,
inputType: 0,
help: '
“平行志愿”
是普通高校 招生平行 志愿投档模式的简称,平行志愿投档又可分为按“院校+专业组”(以下简称院校专业组)平行志愿投档和按专业平行志愿 投档两类。'
},
{
id: 'item10',
name: '项目10',
tip: '请输入项目10内容',
value: ''
},
{
id: 'item11',
name: '项目11',
tip: '请输入项目11内容',
value: ''
}
]
}),
vod_name: '多项输入',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '多行编辑',
type: 'edit',
id: 'alitoken',
title: '阿里云盘Token',
msg: '阿里云盘32位的Token',
tip: '请输入阿里云盘32位的Token',
value: '',
width: 640,
height: 400,
}),
vod_name: '多行编辑',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '单选菜单',
type: 'menu',
title: 'Action菜单',
width: 300,
column: 2,
option: [
{
name: '菜单1',
action: 'menu1'
},
{
name: '菜单2',
action: 'menu2'
},
'菜单3$menu3',
'菜单4$menu4',
'菜单5$menu5',
'菜单6$menu6',
'菜单7$menu7',
'菜单8$menu8',
'菜单9$menu9',
'菜单10$menu10',
],
selectedIndex: 3
}),
vod_name: '单选菜单',
vod_tag:'action'
},
{
vod_id: JSON.stringify({
actionId: '多选菜单',
type: 'select',
title: 'Action多选菜单',
width: 480,
column: 2,
option: [
{
name: '选项1',
action: 'menu1',
selected: true
},
{
name: '选项2',
action: 'menu2'
},
{
name: '选项3',
action: 'menu3',
selected: true
},
{
name: '选项4',
action: 'menu4'
},
{
name: '选项5',
action: 'menu5'
},
{
name: '选项6',
action: 'menu6'
},
{
name: '选项7',
action: 'menu7'
},
{
name: '选项8',
action: 'menu8'
},
{
name: '选项9',
action: 'menu9',
selected: true
},
{
name: '选项10',
action: 'menu10',
selected: true
},
{
name: '选项11',
action: 'menu11',
selected: true
},
{
name: '选项12',
action: 'menu12',
selected: true
}
]
}),
vod_name: '多选菜单',
vod_tag:'action'
},
];
function generateUUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
const r = (Math.random() * 16) | 0,
v = c == 'x' ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
}
// 访问测试 127.0.0.1:5757/api/动作测试/?ac=action&action=set-cookie
// 访问测试 127.0.0.1:5757/api/动作测试/?ac=action&action=quarkCookieConfig&value=我是cookie
var rule = {
类型: '测试',
title: '动作测试',
home_flag: '5',
class_flag: '3-11-S',
more: {
sourceTag: '设置,动作',
actions: [
{name: '模拟设置夸克Cookie', action: 'set-cookie'},
{name: '模拟夸克扫码', action: '夸克扫码'},
{
name: '模拟设置玩偶域名',
action: JSON.stringify({
actionId: '玩偶域名',
id: 'domain',
type: 'input',
width: 450,
title: '玩偶域名',
tip: '请输入玩偶域名',
value: '',
msg: '选择或输入使用的域名',
selectData: '1:=https://www.wogg.net/,2:=https://wogg.xxooo.cf/,3:=https://wogg.888484.xyz/,4:=https://www.wogg.bf/,5:=https://woggapi.333232.xyz/'
})
},
],
},
推荐: async () => {
return data;
},
一级: async function (tid, pg, filter, extend) {
if (pg !== 1) {
return [];
}
let videos = [];
videos.push({
vod_id: JSON.stringify({
actionId: '源内搜索',
id: 'wd',
type: 'input',
title: '源内搜索',
tip: '请输入搜索内容',
value: tid
}),
vod_name: '源内搜索',
vod_pic: 'https://t7.baidu.com/it/u=3126957922,610821603&fm=193',
vod_tag:'action'
});
return videos
},
action: async function (action, value) {
if (action == 'set-cookie') {
return JSON.stringify({
action: {
actionId: 'quarkCookieConfig',
id: 'cookie',
type: 'input',
title: '夸克Cookie',
tip: '请输入夸克的Cookie',
value: '原值',
msg: '此弹窗是动态设置的参数,可用于动态返回原设置值等场景'
}
});
}
if (action == 'quarkCookieConfig' && value) {
try {
const obj = JSON.parse(value);
const val = obj.cookie;
return "我收到了:" + value;
} catch (e) {
return '发生错误:' + e;
}
}
if (action == '连续对话') {
let content = JSON.parse(value);
if (content.talk.indexOf('http') == 0) {
return JSON.stringify({
action: {
actionId: '__detail__',
skey: 'push_agent',
ids: content.talk,
},
toast: '你要去看视频了'
});
}
return JSON.stringify({
action: {
actionId: '__keep__',
msg: '回音:' + content.talk,
reset: true
},
toast: '你有新的消息'
});
}
if (action == '夸克扫码') {
if (rule.quarkScanCheck) {
console.log('请等待上个扫码任务完成:' + rule.quarkScanCheck);
return '请等待上个扫码任务完成';
}
let requestId = generateUUID();
console.log('request_id:', requestId);
let data = await post('https://uop.quark.cn/cas/ajax/getTokenForQrcodeLogin', {
headers: {
'User-Agent': 'Mozilla/5.0 (Linux; Android 11; M2012K10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.141 Mobile Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json, text/plain, */*'
},
data: {
request_id: requestId,
client_id: "532",
v: "1.2"
}
});
console.log('data:', data);
let qcToken = JSON.parse(data).data.members.token;
let qrcodeUrl = `https://su.quark.cn/4_eMHBJ?token=${qcToken}&client_id=532&ssb=weblogin&uc_param_str=&uc_biz_str=S%3Acustom%7COPT%3ASAREA%400%7COPT%3AIMMERSIVE%401%7COPT%3ABACK_BTN_STYLE%400`;
return JSON.stringify({
action: {
actionId: 'quarkScanCookie',
id: 'quarkScanCookie',
canceledOnTouchOutside: false,
type: 'input',
title: '夸克扫码Cookie',
msg: '请使用夸克APP扫码登录获取',
width: 500,
button: 1,
timeout: 20,
qrcode: qrcodeUrl,
qrcodeSize: '400',
initAction: 'quarkScanCheck',
initValue: requestId,
cancelAction: 'quarkScanCancel',
cancelValue: requestId,
}
});
}
if (action == 'quarkScanCheck') {
rule.quarkScanCheck = value;
for (let i = 1; i < 15; i++) {
console.log('模拟扫码检测:' + value + ',第' + i + '次');
await sleep(1000);
if (!rule.quarkScanCheck) {
console.log('退出扫码检测:' + value);
rule.quarkScanCheck = null;
return '扫码取消';
}
}
rule.quarkScanCheck = null;
return JSON.stringify({
action: {
actionId: 'quarkCookieError',
id: 'cookie',
type: 'input',
title: '夸克Cookie',
width: 300,
button: 0,
imageUrl: 'https://preview.qiantucdn.com/agency/dp/dp_thumbs/1014014/15854479/staff_1024.jpg!w1024_new_small_1',
imageHeight: 200,
msg: '扫码超时,请重进'
}
});
}
if (action == 'quarkScanCancel') {
console.log('用户取消扫码:' + value);
rule.quarkScanCheck = null;
return;
}
if (action == '玩偶域名') {
let content = JSON.parse(value);
console.log('玩偶域名:' + content.domain);
console.log('临时测试', '======测试nodeApi开始======');
const dbName = 'song.db'; // 数据库路径
const query = "SELECT val"
+ " FROM singer_collect"
+ " ORDER BY ts DESC";
const data = console.dbQuery(dbName, query);
console.log('临时测试', data);
console.log('临时测试', '======测试nodeApi结束======');
return '回音:' + content.domain;
}
if (action == '源内搜索') {
let content = JSON.parse(value);
return JSON.stringify({
action: {
actionId: '__self_search__',
// skey: '', //目标源key,可选,未设置或为空则使用当前源
// name: '搜索: ' + content.wd,
// tid: content.wd,
// flag: '1',
folder: '查询1$' + content.wd + '$0-0-S#查询2$' + content.wd + '$3#查询3$' + content.wd + '$5',
// folder: [
// {
// name: '查询1:' + content.wd,
// id: content.wd,
// flag: '0-0-S',
// },
// {
// name: '查询2:' + content.wd,
// id: content.wd,
// flag: '3',
// },
// {
// name: '查询3:' + content.wd,
// id: content.wd,
// flag: '5',
// },
// ],
msg: '源内搜索'
}
});
}
if (action == '欢唱此歌') {
console.log(value);
const d = value.split('$');
if (d.length < 2) return '欢唱参数缺失';
return JSON.stringify({
action: {
actionId: '__ktvplayer__',
name: d[0],
id: d[1]
},
toast: ''
});
}
if (action == '刷新列表') {
return JSON.stringify({
action: {
actionId: '__refresh_list__',
},
toast: '刷新列表'
});
}
if (action == '放入剪贴板') {
return JSON.stringify({
action: {
actionId: '__copy__',
content: 'hello world'
},
toast1: '内容放入剪贴板aaa'
});
}
return '动作:' + action + '\n数据:' + value;
},
};