窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 数组 | 备 注 |
临时目录 | 文本型 | |
已下载数 | 整数型 | |
表项 | 整数型 | |
线程池 | 易版线程池 | |
线程数 | 整数型 | |
如果真 (提示框 (“是否有内容未下载完,确定退出吗?”, 1, , ,
) =
#确认钮 )
结束 ()返回 (假)变量名 | 类 型 | 静态 | 数组 | 备 注 |
路径 | 文本型 | | |
地址源 | 文本型 | | |
新地址 | 文本型 | | |
域名头 | 文本型 | | |
域名中 | 文本型 | | |
域名尾 | 文本型 | | |
key正则 | 正则表达式类 | | |
本地key | 文本型 | | |
key替换 | 文本型 | | |
计数 | 整数型 | | |
key文件 | 文本型 | | |
域名 | 文本型 | | |
二次源 | 文本型 | | |
ts列表 | 文本型 | | 0 |
解析流名 | 文本型 | | |
计次 | 整数型 | | |
待换数组 | 文本型 | | 0 |
原文本 | 文本型 | | |
用作替换数组 | 文本型 | | 0 |
写出文本 | 文本型 | | |
路径 =
子文本替换 (临时目录,
“\”,
“/”, , ,
真)m3u8 =
子文本替换 (m3u8,
“\”,
“/”, , ,
真)域名头 =
文本_取左边 (m3u8,
网页_取域名 (m3u8
), ,
) +
网页_取域名 (m3u8
) 域名尾 =
网页_取网址文件名 (m3u8
) 域名中 =
文本_取出中间文本 (m3u8, 域名头, 域名尾, ,
) 地址源 =
到文本 (HTTP读文件 (删首尾空 (m3u8
))
)
如果真 (地址源 =
“”)
信息框 (“m3u8地址失效,可将https换成http再试”, 0, ,
)
返回 ()
如果 (寻找文本 (地址源, 域名中, ,
假) ≠ -1
)
新地址 = 域名头 + 域名中 +
文本_取右边 (地址源, 域名中
) 
新地址 = m3u8

二次源 =
到文本 (HTTP读文件 (新地址
))
如果 (寻找文本 (二次源, 域名头 + 域名中, ,
假) ≠ -1
)
域名 = 域名头 + 域名中

域名 =
取文本左边 (新地址,
倒找文本 (新地址,
“/”, ,
假))
处理事件 ()
如果真 (寻找文本 (二次源,
“key.key”, ,
假) > 0
)
key正则.
创建 (“” +
#引号 +
“(.*?)” +
#引号 +
“”, 二次源
)
计次循环首 (key正则.
取匹配数量 (), 计数
)

key文件 = key正则.
取子匹配文本 (计数, 1
)

key替换 = 路径 +
“/” +
到文本 (计数
) +
“.key”

二次源 =
文本_替换 (二次源, , , , key文件, key替换, , ,
)

如果 (寻找文本 (key文件, 域名头, ,
假) ≠ -1
)


本地key = key文件



本地key = 域名头 + key文件

写到文件 (临时目录 + “\” + 到文本 (计数) + “.key”, HTTP读文件 (本地key))

计次循环尾 ()
ts列表 =
分割文本 (二次源,
字符 (10
),
)处理事件 ()超级列表框1.
全部删除 ()
如果 (取数组成员数 (ts列表
) ≠ 0
)
计次循环首 (取数组成员数 (ts列表
), 计次
)

如果真 (取文本右边 (ts列表
[计次
], 3
) =
“.ts”)


解析流名 = ts列表
[计次
]

加入成员 (待换数组, 解析流名
)

加入成员 (用作替换数组, 路径 +
“/” +
取文本右边 (解析流名,
取文本长度 (解析流名
) -
倒找文本 (解析流名,
“/”, ,
假))
)


如果 (寻找文本 (解析流名,
“http”, ,
假) ≠ -1
)



解析流名 = ts列表
[计次
]



如果 (寻找文本 (解析流名,
“/”, ,
假) ≠ -1
)




解析流名 =
文本_取右边 (解析流名,
“/”)




解析流名 = 域名 + 解析流名





解析流名 = 域名 + 解析流名











表项 = 超级列表框1.
插入表项 (, , , , ,
)


超级列表框1.
置标题 (表项, 0,
到文本 (表项 + 1
))



超级列表框1.
置标题 (表项, 1, 解析流名
)


超级列表框1.
保证显示 (表项
)





计次循环尾 ()
标签1.标题 =
“解析完成”
标签1.标题 =
“源可能失效”二次源 = 文本_快速替换_EX (二次源, 待换数组, 用作替换数组, 1, 1, )写到文件 (临时目录 +
“\index.m3u8”,
到字节集 (二次源
))
处理事件 ()关闭所有文件 ()临时目录 =
取运行目录 () +
“\” + 编辑框2.内容
如果 (编辑框1.内容 ≠
“” 且 编辑框2.内容 ≠
“”)
如果 (文件是否存在 (取运行目录 () +
“\” + 编辑框2.内容 +
“.mp4”) =
假)
创建目录 (临时目录
)
信息框 (“文件已存在或文件名重复,请重命名”, 0, ,
)
返回 ()

信息框 (“下载链接或保存名没有填,请检查”, 0, ,
)
返回 ()
启动线程 (&解析链接, , 线程数
)解析 (编辑框1.内容
)
如果真 (标签1.标题 =
“解析完成”)
线程_关闭句柄 (线程数
)
启动线程 (&开始下载, ,
)
线程池.
创建 (超级列表框1.
取表项数 (), 时钟1
)
计次循环首 (超级列表框1.
取表项数 (), 表项
)
线程池.
投递任务 (&下载, 表项
)
程序_延时 (1
)
计次循环尾 ()ts名称 = 超级列表框1.
取标题 (表项 - 1, 1
)写到文件 (临时目录 +
“\” +
网页_取网址文件名 (ts名称
),
HTTP读文件 (ts名称
))
超级列表框1.
置标题 (表项 - 1, 2,
“已下载”)已下载数 = 已下载数 + 1
进度条1.位置 =
到整数 (已下载数 ÷ 超级列表框1.
取表项数 () × 100
)标签2.标题 =
到文本 (进度条1.位置
) +
“%”
如果真 (标签2.标题 =
“100%”)
线程池.
结束标志 ()
下载子程序 ()
标签1.标题 =
“下载完成,正在转换”
如果 (文件是否存在 (取运行目录 () +
“\ffmpeg11.exe”) =
假)
信息框 (“请将ffmpeg11.exe放在本程序目录中”, 0, ,
)
返回 ()
系统_取DOS执行结果 (取运行目录 () +
“\ffmpeg11 -allowed_extensions ALL -i ” + 临时目录 +
“\index.m3u8 -c copy ” +
取运行目录 () +
“\” + 编辑框2.内容 +
“.mp4”)
如果真 (文件是否存在 (取运行目录 () +
“\” + 编辑框2.内容 +
“.mp4”) =
真)
删除目录 (临时目录
)

超级列表框1.
全部删除 ()

标签1.标题 =
“下载完成,源已删除”

标签2.标题 =
“0%”

进度条1.位置 = 0


编辑框1.内容 =
“”

编辑框2.内容 =
“”

线程池.
销毁 ()


线程池.
处理线程 ()变量名 | 类 型 | 静态 | 数组 | 备 注 |
行内容 | 文本型 | | |
网源码 | 文本型 | | |
网源码 =
到文本 (HTTP读文件 (网页地址框.内容
))
如果 (文本_寻找文本 (网源码,
“.m3u8”, ,
假) = -1
)
信息框 (“没找到指定文件,请换网址再次搜寻”, 0, ,
)
返回 ()
行内容 =
文本_取指定变量文本行 (网源码,
文本_取文本所在行_优化版 (网源码,
“.m3u8”, ,
假))

编辑框1.内容 =
“http” +
文本_倒取出中间文本 (行内容,
“.m3u8”,
“http”, ,
假) +
“.m3u8”
编辑框1.内容 =
子文本替换 (编辑框1.内容,
“\/”,
“/”, , ,
真)编辑框1.内容 =
子文本替换 (编辑框1.内容,
“\”,
“/”, , ,
真)编辑框1.内容 =
子文本替换 (编辑框1.内容,
“https”,
“http”, , ,
真)变量名 | 类 型 | 静态 | 数组 | 备 注 |
清晰度 | 文本型 | | 0 |
取清晰度 | 整数型 | | |
取清晰度 =
文本_取中间_批量 (到文本 (HTTP读文件 (编辑框1.内容
)),
“NAME=” +
#引号, #引号, 清晰度,
)
如果 (文本_寻找文本 (到文本 (HTTP读文件 (编辑框1.内容
)),
“NAME=”, ,
) > 1
)
组合框2.
加入项目 (“有数据”,
)
计次循环首 (取数组成员数 (清晰度
), 取清晰度
)

组合框2.
加入项目 (清晰度
[取清晰度
],
)
计次循环尾 ()
组合框2.现行选中项 = 0

组合框2.
加入项目 (“无选择”,
)
组合框2.现行选中项 = 0
