Skip to content

Commit d06f2fb

Browse files
author
Taois
committed
feat: 完成m3u直播支持
1 parent fe19018 commit d06f2fb

File tree

8 files changed

+2912
-18
lines changed

8 files changed

+2912
-18
lines changed

dashboard/data/action.json

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
{
2+
"使用帮助": "本帮助。长按则分项选择查看。\n\n系统多数功能按键和选项,短按和长按有不同的功能。\n\n[#影图根目录]:安全起见,影图的根目录为tvbox(/storage/emulated/0/tvbox),未说明情况下文件或文件夹都是相对于此目录。",
3+
"交互动作": "影图APP与站源接口间交互的动作指令(action)。用户在APP主动发出动作请求,接口根据指令返回数据或返回构建信息输入窗口的配置JSON,具有连续交互的机制。",
4+
"动作指令": "接口回传给APP的动作指令,按用户交互起点分为静态动作和动态动作。\n\n[#静态动作]:用户通过视频分类列表主动发起交互的起点动作。动作指令以分类列表的视频JSON数据为基础,属于静态数据。所有交互动作的起始都是静态动作。\n\n[#动态动作]:静态动作构建的信息输入窗口提交动作(action)数据后,接口如果再次需要用户输入数据,可以返回新的动作配置JSON数据,此数据是交互过程中动态生成的,属于动态动作。数据结构:\n{\n \"action\":{\n  动作指令结构...\n },\n \"toast\":\"Toast显示消息\"\n}",
5+
"动作类型": "基础动作、单项输入、多行编辑、多项输入、增强多项输入、单项选择、多项选择、消息弹窗、专项动作等。",
6+
"视频VOD": "动作入口的视频分类列表VOD的JSON,vod_id字段值为字符型动作指令数据(json结构的需要转为字符型),vod_tag字段值固定为action,其它字段与视频类一致。例如:\n{\n \"vod_id\":\"动作指令结构...\",\n \"vod_name\":\"显示名称\",\n \"vod_tag\":\"action\"\n}",
7+
"接口action": "接口接收动作指令的方法action。以js代码为例:function action(action, value) {...}。传参action为动作指令,value为动作指令值。返回结果消息或新的动作指令数据(动态动作)。",
8+
"基础动作": "简单的动作指令字符串(非JSON结构),用户点击时无信息输入窗口,直接发送指令。\n{\n \"vod_id\":\"hello world\",\n \"vod_name\":\"基础动作\",\n \"vod_tag\":\"action\"\n}",
9+
"JSON动作": "JSON结构的动作指令。通过JSON结构数据,配置更丰富的动作指令。通过选择配置不同的字段,定义不同的动作表现。",
10+
"actionId": "识别动作的路由ID或专项动作指令,必须。字符型。",
11+
"type": "动作的类型。input(单项输入)/edit(单项多行编辑)/multiInput(少于5个的多项输入)/multiInputX(增强的多项输入)/menu(单项选择)/select(多项选择)/msgbox(消息弹窗)等。字符型。",
12+
"canceledOnTouchOutside": "弹出窗口是否允许触摸窗口外时取消窗口。逻辑型。",
13+
"title": "标题。字符型。",
14+
"width": "宽度。整型。",
15+
"height": "高度。整型。",
16+
"msg": "文本消息内容。字符型。",
17+
"htmlMsg": "msgbox类动作的简单html消息内容。字符型。",
18+
"help": "input、multiInput、multiInputX类动作的帮助说明内容,在窗口右上角显示帮助图标,点击显示帮助说明,可支持简易的HTML内容。支持的HTML标签,b(加粗)、i(斜体)、u(下划线)、strike(删除线)、em(强调)、strong(加强强调)、p(段落)、div(分区)、br(换行)、font(颜色/大小/字体)、h1~h6(标题层级)、small(小号字体)、tt(打字机字体)、blockquote(引用块)。",
19+
"button": "按键的数量。0-无按键,1-取消,2-确定/取消, 3-确定/取消/重置。整型。",
20+
"imageUrl": "图片URL。字符型。",
21+
"imageHeight": "图片高度。整型。",
22+
"imageClickCoord": "是否检测图片的点击坐标输入。逻辑型。",
23+
"qrcode": "生成二维码的URL。字符型。",
24+
"qrcodeSize": "二维码的大小。整型。",
25+
"timeout": "超时时间(秒)。超时自动关闭窗口。整型。",
26+
"httpTimeout": "T4源的动作网络访问超时时间(秒)。",
27+
"keep": "输入确认后,窗口是否保持。逻辑型。",
28+
"initAction": "窗口弹出时自动发送的初始化动作指令。字符型。",
29+
"initValue": "窗口弹出时自动发送的初始化指令值。字符型。",
30+
"cancelAction": "按窗口的取消键时发送的取消动作指令。字符型。",
31+
"cancelValue": "按窗口的取消键时发送的取消动作指令值。字符型。",
32+
"tip": "单项输入的输入提示,单项输入时必须。字符型。",
33+
"value": "单项输入的初始化值。字符型。",
34+
"selectData": "单项输入的预定义选项,用于常见值的快速选择输入。各选项间用“,”分隔,选项值可使用“名称:=值”方式。字符型。",
35+
"input": "多项输入的项目定义JSON数组。每个输入项目使用一个JSON对象进行定义。\n\n[#id]:项目id。\n\n[#name]:项目名称。\n\n[#tip]:项目输入提示。\n\n[#value]:项目初始值。\n\n[#selectData]:项目输入预定义选项。各选项间用“,”分隔,选项值可使用“名称:=值”方式。特殊的输入选择:[folder]-选择文件夹,[file]-选择文件,[calendar]-选择日期,[image]-选择图像文件转为BASE64。multiInputX。\n\n[#quickSelect]:是否能快速选择。单项选择时有效。quickSelect为true且inputType为0时,只输入快速选择项目不显示输入框等。multiInputX。\n\n[#onlyQuickSelect]:是否只快速选择,隐藏输入框等。单项选择时有效。multiInputX。\n\n[#selectWidth]:选择窗的宽度。multiInputX。\n\n[#multiSelect]:是否多选。multiInputX。\n\n[#selectColumn]:选择窗的列数。multiInputX。\n\n[#inputType]:项目输入类型。0-项目输入框只读,但可通过选项输入。129-密码输入。inputType为0且quickSelect为true时,只输入快速选择项目不显示输入框等。multiInputX。\n\n[#multiLine]:项目输入框的行数(多行编辑)。multiInputX。\n\n[#validation]:提交时项目输入值校验正则表达式。multiInputX。\n\n[#help]:项目输入的帮助说明,可支持简易的HTML内容。支持的HTML标签,b(加粗)、i(斜体)、u(下划线)、strike(删除线)、em(强调)、strong(加强强调)、p(段落)、div(分区)、br(换行)、font(颜色/大小/字体)、h1~h6(标题层级)、small(小号字体)、tt(打字机字体)、blockquote(引用块)。multiInputX。",
36+
"dimAmount": "设置窗口背景暗化效果,用于调整背景的暗化程度(透明度)。其值范围为0.0到1.0。",
37+
"bottom": "底部对齐和底边距。整型。",
38+
"column": "单项选择或多项选择窗口的列数。整型。",
39+
"option": "单项选择或多项选择的选项定义JSON数组。每个选项使用一个JSON对象进行定义。\n\n[#name]:选项名称。\n\n[#action]:选项动作值。\n\n[#selected]:选项默认是否已选。多项选择是可用。",
40+
"单项输入": "type为input。要求用户输入一个字段的动作,JSON结构,部分字段根据需要选用。\n{\n actionId:'动作路由ID',\n id:'输入项目id',\n type:'input',\n width:450,\n title:'输入窗口标题',\n tip:'输入提示',\n value:'输入初始值',\n msg:'窗口文本说明',\n imageUrl:'窗口显示图片的URL',\n imageHeight:200,\n qrcode:'生成二维码的URL',\n qrcodeSize:'300',\n initAction:'initAction',\n initValue:requestId,\n button:2,\n selectData:'1:=快速输入一,2:=快速输入二,3:=快速输入三'\n}",
41+
"多行编辑": "type为edit。要求用户在一个多行编辑区输入单个字段内容的动作,JSON结构。",
42+
"多项输入": "type为multiInput。要求用户输入多个字段(5个以内)的动作,JSON结构。建议使用“增强多项输入”动作。",
43+
"增强多项输入": "type为multiInputX。要求用户输入多个字段(不限制个数)的动作,JSON结构。",
44+
"单项选择": "type为menu。要求用户在列表中选择一个项目的动作,JSON结构。",
45+
"多项选择": "type为select。要求用户在列表中选择多个项目的动作,JSON结构。",
46+
"消息弹窗": "type为msgbox。弹出窗口显示消息,JSON结构。",
47+
"专项动作": "专项动作为动态动作,接口让APP执行一些特定的行为动作。actionId值为行为特定的标识。__self_search__(源内搜索)、__detail__(详情页)、__ktvplayer__(KTV播放)、__refresh_list__(刷新列表)、__copy__(复制)、__keep__(保持窗口)。",
48+
"__self_search__": "源内搜索。\n\n[#skey]:目标源key,可选,未设置或为空则使用当前源。\n\n[#name]:搜索分类名称。\n\n[#tid]:使用分类ID传递的搜索值。\n\n[#flag]:列表视图参数。\n\n[#folder]:多个分类切换搜索的配置,设置此项则忽略name、tid和flag。folder可多项合并设置为一个字符,各项间使用“#”分隔,每项中的name、tid和flag使用“$”分隔。floder也可使用JSON数组,每项分别设置name、tid和flag。",
49+
"__detail__": "跳转到指定站源解析详情页播放。\n\n[#skey]:目标源key。\n\n[#ids]:传递给详情页的视频ids。",
50+
"__ktvplayer__": "跳转到KTV播放器播放指定链接。\n\n[#name]:歌名。\n\n[#id]:歌曲的直链。",
51+
"__refresh_list__": "刷新当前分类的列表。无其它参数。",
52+
"__copy__": "把返回的内容复制到剪贴板。content:复制的内容",
53+
"__keep__": "保持窗口不关闭。\n\n[#msg]:更新窗口里的文本消息内容。\n\n[#reset]:窗口中的输入项目内容是否清空。",
54+
"图片坐标示例": "获取在图片点击的位置坐标用于验证输入的js示例。\n {\n  vod_id: JSON.stringify({\n   actionId: '图片点击坐标',\n   id: 'coord',\n   type: 'input',\n   title: '图片点击坐标',\n   tip: '请输入图片中文字的坐标',\n   value: '',\n   msg: '点击图片上文字获取坐标',\n   imageUrl: 'https://pic.imgdb.cn/item/667ce9f4d9c307b7e9f9d052.webp',\n   imageHeight: 300,\n   imageClickCoord: true,\n   button: 3,\n  }),\n  vod_name: '图片点击坐标',\n  vod_pic: 'https://pic.imgdb.cn/item/667ce9f4d9c307b7e9f9d052.webp',\n  vod_tag:'action'\n }",
55+
"多项输入示例": "多个不同类型输入项的js示例。\n {\n  vod_id: JSON.stringify({\n   actionId: '多项输入',\n   type: 'multiInputX',\n   canceledOnTouchOutside: true,\n   title: '多项输入(multiInputX)',\n   width: 716,\n   bottom: 1,\n   dimAmount: 0.3,\n   button: 3,\n   input: [\n    {\n     id: 'item1',\n     name: '文件夹路径(文件夹选择器)',\n     tip: '请输入文件夹路径',\n     value: '',\n     selectData: '[folder]',\n     inputType: 0,\n    },\n    {\n     id: 'item2',\n     name: '日期(日期选择器)',\n     tip: '请输入项目2内容',\n     value: '',\n     selectData: '[calendar]',\n     inputType: 0,\n     \n    },\n    {\n     id: 'item3',\n     name: '文件路径(文件选择器)',\n     tip: '请输入文件路径',\n     value: '',\n     selectData: '[file]',\n     inputType: 0,\n    },\n    {\n     id: 'item4',\n     name: '多项选择',\n     tip: '请输入多项内容,以“,”分隔',\n     value: '',\n     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',\n     selectWidth: 640,\n     multiSelect: true,\n     selectColumn: 4,\n     inputType: 0,\n    },\n    {\n     id: 'item5',\n     name: '多行输入',\n     tip: '请输入项目5内容',\n     value: '',\n     multiLine: 5,\n    },\n    {\n     id: 'item6',\n     name: '密码输入',\n     tip: '请输入项目6内容',\n     value: '',\n     inputType: 129,\n    },\n    {\n     id: 'item7',\n     name: '图像base64(图像文件选择器)',\n     tip: '请输入项目7内容',\n     value: '',\n     selectData: '[image]',\n     multiLine: 3,\n     inputType: 0,\n    },\n    {\n     id: 'item8',\n     name: '单项选择',\n     tip: '请输入项目8内容',\n     value: '',\n     selectData: '[请选择地方]a,b,c,d'\n    },\n    {\n     id: 'item9',\n     name: '单行输入并校验',\n     tip: '请输入项目9内容',\n     value: '',\n     validation: '[0-9]{6,12}',\n    }\n   ]\n  }),\n  vod_name: '多项输入',\n  vod_tag:'action'\n }"
56+
}

0 commit comments

Comments
 (0)