窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 数组 | 备 注 |
总下载数 | 整数型 | |
已下载数 | 整数型 | |
开始下载句柄 | 整数型 | |
下载目录 | 文本型 | |
线程池 | 线程池 | |
域名头 | 文本型 | |
域名中间 | 文本型 | |
域名尾 | 文本型 | |
下载流句柄 | 整数型 | |
浏览器目录 | 文本型 | |
文件名 | 文本型 | |
组合框1.现行选中项 = 0
拖放对象1.
注册拖放控件 (透明标签1.
取窗口句柄 ())
如果真 (寻找文件 (取运行目录 () +
“\ffempg11.exe”,
) =
“”)
写到文件 (取运行目录 () +
“\视频工具.zip”,
#ffempg11 )
ZIP压缩1.
解压 (取运行目录 () +
“\视频工具.zip”,
取运行目录 () +
“\”)删除文件 (取运行目录 () + “\视频工具.zip”)
如果真 (寻找文件 (取运行目录 () +
“\IDMan.exe”,
) =
“”)
写到文件 (取运行目录 () +
“\IDMan.exe”,
#IDM )
如果 (取反 (寻找文本 (编辑框1.内容,
“\”, ,
假) = -1
))
信息框 (“格式不能含有/,请按转换键!”, 0, ,
)
返回 ()
如果 (编辑框1.内容 =
“” 或 编辑框3.内容 =
“”)
信息框 (“请填入完整信息!”, 0, ,
)
返回 ()

如果真 (文本_寻找文本 (编辑框1.内容,
“.mp4”,
) > 0
)
调用IDM (编辑框1.内容,
取运行目录 (), 编辑框3.内容
)

如果真 (文本_寻找文本 (编辑框1.内容,
“.m3u8”,
) > 0
)

线程池.
创建 (到整数 (编辑框4.内容
))


按钮_下载.禁止 = 真

启动线程 (&开始下载, , 开始下载句柄
)




|
调用IDM | | |
|
url | 文本型 | | | |
add | 文本型 | | | | filename | 文本型 | | | |
如果真 (取反 (是否为空 (filename
))
)
filename =
“ /f ” +
#引号 + filename +
#引号 运行 (“IDMan.exe /p ” + #引号 + add + #引号 + filename + “ /d ” + #引号 + url + #引号 + “ /n” + “ /q”, 真, #隐藏窗口 )
如果真 (文本_寻找文本 (编辑框1.内容,
“m3u8”,
) ≠ -1
)
线程池.
销毁 ()
按钮_下载.禁止 = 假

进度条.位置 = 0

已下载数 = 0

标签5.标题 =
“用户取消”
变量名 | 类 型 | 静态 | 数组 | 备 注 |
数据列表 | 文本型 | | 0 |
x | 整数型 | | |
行号 | 整数型 | | |
a | 整数型 | | |
获取m3u8资源列表 (编辑框1.内容, 数据列表
)
如果 (取数组成员数 (数据列表
) = 0
)
标签5.标题 =
“视频提取失败”
标签5.标题 =
“视频提取成功”
总下载数 =
取数组成员数 (数据列表
)
计次循环首 (取数组成员数 (数据列表
), x
)

线程池.
加入工作 (&线程下载子程序, 总下载数,
网页_取网址文件名 (数据列表
[x
]), 数据列表
[x
])
计次循环尾 ()
如果 (等待线程 (开始下载句柄, 1
))
强制结束线程 (开始下载句柄
)
关闭线程句柄 (开始下载句柄
)
如果 (编辑框1.内容 =
“”)
信息框 (“没填播放源”, 0, ,
)
CKplayer_播放 (编辑框1.内容
)
临时文本 =
#ckplayer 临时文本 =
子文本替换 (临时文本,
“{video}”,
到文本 (视频地址
), , ,
真)临时文本 =
子文本替换 (临时文本,
“&”,
“%26”, , ,
真)写到文件 (取运行目录 () +
“\index.html”,
到字节集 (临时文本
))
超文本浏览框1.
跳转 (取运行目录 () +
“\index.html”, ,
)写到文件 (取运行目录 () +
“/flash.exe”,
#flash )运行 (取运行目录 () +
“/flash.exe”, 假,
)编辑框1.内容 =
子文本替换 (编辑框1.内容,
“\/”,
“/”, , ,
真)编辑框1.内容 =
子文本替换 (编辑框1.内容,
“\”,
“/”, , ,
真)|
线程下载子程序 | | |
|
总数 | 整数型 | | | |
下载文件名 | 文本型 | | | | 下载地址 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
保存文件名 | 文本型 | | |
数据 | 字节集 | | |
下载进度 | 小数型 | | |
命令 | 文本型 | | |
下载目录 =
取运行目录 () +
“\” + 编辑框3.内容 +
“\”
如果真 (取反 (目录_是否存在 (文件_取目录 (下载目录
))
))
创建目录 (文件_取目录 (下载目录
))
保存文件名 = 下载目录 + 下载文件名数据 =
HTTP读文件 (下载地址
)写到文件 (保存文件名, 数据
)已下载数 = 已下载数 + 1
下载进度 =
到整数 (已下载数 ÷ 总数 × 100
)标签5.标题 =
“已下载:” +
到文本 (下载进度
) +
“%”进度条.位置 = 下载进度
如果真 (已下载数 = 总数
)
命令 =
系统_取DOS执行结果 (“ffmpeg11.exe -allowed_extensions ALL -i ” + 下载目录 + 编辑框3.内容 +
“.m3u8 -c copy ” +
取运行目录 () +
“\” + 编辑框3.内容 +
“.mp4”)
如果 (文件是否存在 (取运行目录 () +
“\” + 编辑框3.内容 +
“.mp4”) =
假)

标签5.标题 =
“合并文件失败”

标签5.标题 =
“正在删除临时文件”
删除目录 (下载目录
)

标签5.标题 =
“下载完成”

按钮_下载.禁止 = 假


进度条.位置 = 0


已下载数 = 0


线程池.
销毁 ()

CKplayer_播放 (子文本替换 (接收到的文件路径,
“\”,
“/”, , ,
真))
CKplayer_播放 (“ ”)结束 ()|
获取m3u8资源列表 | | |
|
m3u8地址 | 文本型 | | | |
返回资源列表 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
域名 | 文本型 | | |
域名2 | 文本型 | | |
m3u8文件名 | 文本型 | | |
临时数据 | 文本型 | | |
ts列表 | 文本型 | | 0 |
地址 | 文本型 | | |
地址名 | 文本型 | | |
x | 整数型 | | |
m3u8新文件名 | 文本型 | | |
分析原地址 | 文本型 | | |
原地址中间 | 文本型 | | |
xm3u8 | 文本型 | | |
key替换 | 文本型 | | |
下载句柄 | 整数型 | | |
key文件 | 文本型 | | |
m3u8句柄 | 整数型 | | |
下载目录 =
取运行目录 () +
“\” + 编辑框3.内容 +
“\”
如果真 (取反 (目录_是否存在 (文件_取目录 (下载目录
))
))
创建目录 (文件_取目录 (下载目录
))

域名 =
文本_取左边 (m3u8地址,
“/”) +
“//” +
网页_取域名 (m3u8地址,
) +
“/” m3u8文件名 =
网页_取网址文件名 (m3u8地址
) 原地址中间 =
文本_取出中间文本 (m3u8地址, 域名, m3u8文件名
) 分析原地址 =
到文本 (HTTP读文件 (m3u8地址
))
如果 (分析原地址 =
“”)
信息框 (“m3u8地址无效,请输入其他地址”, 0, ,
)
返回 ()
m3u8新文件名 = 文本_取右边 (分析原地址, 原地址中间)
如果 (文本_寻找文本 (分析原地址,
“BANDWIDTH=”, ,
真) ≠ -1
)
m3u8地址 =
子文本替换 (m3u8地址, m3u8文件名, m3u8新文件名, , ,
真) 
域名2 =
子文本替换 (m3u8地址, m3u8文件名,
“”, , ,
真) 
临时数据 =
编码_utf8到gb2312 (网页_取网页源码 (m3u8地址
))

如果真 (文本_寻找文本 (临时数据,
“key.key”, ,
真) ≠ -1
) 

标签5.标题 =
“正在写出解密文件”

key文件 =
子文本替换 (m3u8地址, m3u8文件名,
“key.key”, , ,
真)

写到文件 (下载目录 +
“key.key”,
HTTP读文件 (key文件
))



域名2 = 域名

临时数据 =
编码_utf8到gb2312 (分析原地址
)
如果真 (文本_寻找文本 (临时数据,
“key.key”, ,
真) ≠ -1
) 

标签5.标题 =
“正在写出解密文件”

key文件 =
子文本替换 (m3u8地址, m3u8文件名,
“key.key”, , ,
真)

写到文件 (下载目录 +
“key.key”,
HTTP读文件 (key文件
))



key替换 =
文本_取出中间文本 (临时数据,
#引号, #引号 )
如果 (文本_寻找文本 (临时数据, 原地址中间, ,
真) ≠ -1
)
域名2 =
文本_取左边 (域名2,
“/” + 原地址中间
)
域名2 =
子文本替换 (m3u8地址, m3u8文件名,
“”, , ,
真)
下载句柄 =
打开内存文件 ()移到文件首 (下载句柄
)m3u8句柄 =
打开内存文件 ()移到文件首 (m3u8句柄
)
如果 (文本_寻找文本 (临时数据,
字符 (10
), ,
真) = -1
) 
ts列表 =
分割文本 (临时数据,
#换行符, )
ts列表 =
分割文本 (临时数据,
字符 (10
),
)
如果 (取数组成员数 (ts列表
) ≠ 0
)
计次循环首 (取数组成员数 (ts列表
), x
)

地址 = ts列表
[x
]

如果 (文本_寻找文本 (地址,
“#”, ,
真) = -1
)


如果 (文本_寻找文本 (地址,
“http”, ,
真) = -1
)


加入成员 (返回资源列表, 域名2 + 地址
)





加入成员 (返回资源列表, 地址
)




地址名 = 取文本右边 (地址, 取文本长度 (地址) - 倒找文本 (地址, “/”, , 假))

写出文本 (m3u8句柄,
子文本替换 (下载目录,
“\”,
“/”, , ,
真) + 地址名,
#换行符 )

写出文本 (m3u8句柄, 地址,
#换行符 )



处理事件 ()
计次循环尾 ()
信息框 (“源可能失效”, 0, ,
)
移到文件首 (m3u8句柄
)xm3u8 =
子文本替换 (读入文本 (m3u8句柄,
), key替换,
子文本替换 (下载目录,
“\”,
“/”, , ,
真) +
“key.key”, , ,
真) 写到文件 (下载目录 + 编辑框3.内容 +
“.m3u8”,
到字节集 (xm3u8
))
变量名 | 类 型 | 静态 | 数组 | 备 注 |
行内容 | 文本型 | | |
网源码 | 文本型 | | |
网源码 =
到文本 (HTTP读文件 (网页地址框.内容
))
如果 (文本_寻找文本 (网源码, 组合框1.
取项目文本 (组合框1.现行选中项
), ,
假) = -1
)
信息框 (“没找到指定文件,请换网址再次搜寻”, 0, ,
)
返回 ()
行内容 =
文本_取指定变量文本行 (网源码,
文本_取文本所在行_优化版 (网源码, 组合框1.
取项目文本 (组合框1.现行选中项
), ,
假))

编辑框3.内容 =
文本区分_只取汉字 (编码_utf8到gb2312 (文本_取出中间文本 (网源码,
“”, ,
))
)
如果真 (组合框1.
取项目文本 (组合框1.现行选中项
) =
“.m3u8”)

编辑框1.内容 =
“http” +
文本_倒取出中间文本 (行内容,
“.m3u8”,
“http”, ,
假) +
“.m3u8”
如果真 (组合框1.
取项目文本 (组合框1.现行选中项
) =
“.mp4”)

编辑框1.内容 =
“http” +
文本_倒取出中间文本 (行内容,
“.mp4”,
“http”, ,
假) +
“.mp4”


变量名 | 类 型 | 静态 | 数组 | 备 注 |
清晰度 | 文本型 | | 0 |
取清晰度 | 整数型 | | |
组合框2.
清空 ()取清晰度 =
文本_取中间_批量 (到文本 (HTTP读文件 (编辑框1.内容
)),
“NAME=” +
#引号, #引号, 清晰度,
)
如果 (文本_寻找文本 (到文本 (HTTP读文件 (编辑框1.内容
)),
“NAME=”, ,
) > 1
)
组合框2.
加入项目 (“有数据,可选择”,
)
计次循环首 (取数组成员数 (清晰度
), 取清晰度
)

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

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

替换名 =
文本_取出中间文本 (到文本 (HTTP读文件 (编辑框1.内容
)), 组合框2.
取项目文本 (组合框2.现行选中项
) +
#引号, “.m3u8”, ,
) +
“.m3u8”编辑框1.内容 =
子文本替换 (编辑框1.内容,
网页_取网址文件名 (编辑框1.内容
), 替换名, , ,
真)执行 (,
取运行目录 (), , ,
)
如果 (编辑框1.内容 ≠
“” 且 编辑框3.内容 ≠
“”)
如果 (文件是否存在 (取运行目录 () +
“\” + 编辑框3.内容 +
“.mp4”) =
假)
执行 (4, 编辑框1.内容, , ,
)

标签5.标题 =
“读取中,请稍候”

时钟2.时钟周期 = 1000



信息框 (“已存在同名文件”, 0, ,
)
返回 ()

信息框 (“请检查,有信息没填”, 0, ,
)
返回 ()
变量名 | 类 型 | 静态 | 数组 | 备 注 |
取新后辍 | 文本型 | | |
一次文本 | 文本型 | | |
新后辍 | 文本型 | | |
一次文本 =
到文本 (读入文件 (浏览器目录 +
“index.txt”))
如果真 (文本_寻找文本 (一次文本,
“BANDWIDTH=”, ,
假) > 0
)
取新后辍 =
到文本 (到整数 (文本_取出中间文本 (一次文本,
“BANDWIDTH=”,
“,”)) \ 1000
) +
“kb”
新后辍 = 取新后辍 +
文本_取右边 (一次文本, 取新后辍
)
编辑框1.内容 =
子文本替换 (编辑框1.内容,
“index.m3u8”, 新后辍, , ,
真)
标签5.标题 =
“正在取地址”
执行 (4, 编辑框1.内容, , ,
)删除文件 (浏览器目录 + “index.txt”)时钟3.时钟周期 = 1000
变量名 | 类 型 | 静态 | 数组 | 备 注 |
列表组 | 文本型 | | 0 |
n | 整数型 | | |
二次文本 | 文本型 | | |
地址 | 文本型 | | |
下载句柄 | 整数型 | | |
m3u8句柄 | 整数型 | | |
地址名 | 文本型 | | |
表项 | 整数型 | | |
D | 整数型 | | |
key文件 | 文本型 | | |
xm3u8 | 文本型 | | |
标签5.标题 =
“下载中”m3u8句柄 =
打开内存文件 ()二次文本 =
到文本 (读入文件 (浏览器目录 +
“index.txt”))
域名尾 =
取文本右边 (编辑框1.内容,
取文本长度 (编辑框1.内容
) -
倒找文本 (编辑框1.内容,
“/”, ,
假))
域名头 =
文本_取左边 (编辑框1.内容,
“.com”) +
“.com”域名中间 =
文本_取出中间文本 (编辑框1.内容, 域名头, 域名尾
)
如果真 (文本_寻找文本 (二次文本,
“key.key”, ,
真) ≠ -1
)
key文件 =
文本_取出中间文本 (二次文本,
#引号, #引号 )
如果 (文本_寻找文本 (key文件,
“http”, ,
真) = -1
)
执行 (4, 域名头 + 域名中间 +
“/” + key文件, , ,
)
执行 (4, key文件, , ,
)


列表组 =
分割文本 (二次文本,
字符 (10
),
)
如果真 (取数组成员数 (列表组
) ≠ 0
)
计次循环首 (取数组成员数 (列表组
), n
)

如果 (文本_寻找文本 (列表组
[n
],
“#”, ,
真) = -1
)


如果 (文本_寻找文本 (列表组
[n
],
“http”, ,
真) = -1
)



如果 (文本_寻找文本 (列表组
[n
],
“kb”, ,
真) = -1
)




地址 = 域名头 + 域名中间 + 列表组
[n
]




地址 = 域名头 + 列表组
[n
]








地址 = 列表组
[n
]

地址名 = 取文本右边 (地址, 取文本长度 (地址) - 倒找文本 (地址, “/”, , 假))

写出文本 (m3u8句柄,
子文本替换 (浏览器目录,
“\”,
“/”, , ,
真) + 地址名,
#换行符 )


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


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


超级列表框1.
置标题 (表项, 1, 地址
)


超级列表框1.
置标题 (表项, 2, 地址名
)


超级列表框1.
置标题 (表项, 3,
“等待中”)




写出文本 (m3u8句柄, 列表组
[n
],
#换行符 )



处理事件 ()
计次循环尾 ()
移到文件首 (m3u8句柄
)
xm3u8 =
子文本替换 (读入文本 (m3u8句柄,
), key文件,
子文本替换 (浏览器目录 +
“key.key”,
“\”,
“/”, , ,
真), , ,
真)
写到文件 (浏览器目录 + 编辑框3.内容 +
“.m3u8”,
到字节集 (xm3u8
))
删除文件 (浏览器目录 +
“index.txt”)
如果真 (超级列表框1.
取表项数 () > 0
)
计次循环首 (超级列表框1.
取表项数 (), D
)
执行 (4, 超级列表框1.
取标题 (D - 1, 1
), , ,
)

时钟1.时钟周期 = 1000

计次循环尾 ()
标签5.标题 =
“合并中”系统_取DOS执行结果 (“ffmpeg11.exe -allowed_extensions ALL -i ” + 浏览器目录 + 编辑框3.内容 +
“.m3u8 -c copy ” +
取运行目录 () +
“\” + 编辑框3.内容 +
“.mp4”)
如果 (文件是否存在 (取运行目录 () +
“\” + 编辑框3.内容 +
“.mp4”) =
假)
标签5.标题 =
“合并文件失败”
标签5.标题 =
“正在删除临时文件”
目录_清空 (浏览器目录
)
标签5.标题 =
“下载完成”
超级列表框1.
全部删除 ()
按钮5.禁止 = 假

如果真 (超级列表框1.
取表项数 () > 0
)
计次循环首 (超级列表框1.
取表项数 (), U
)

如果真 (寻找文件 (浏览器目录 + 超级列表框1.
取标题 (U - 1, 2
),
) ≠
“”)


超级列表框1.
置标题 (U - 1, 3,
“完成”)


完成数 = 完成数 + 1




计次循环尾 ()
进度条.位置 =
到整数 (完成数
÷ (U - 1
) × 100
)
标签5.标题 =
“已下载:” +
到文本 (进度条.位置
) +
“%”
如果真 (寻找文件 (浏览器目录 +
“index.m3u8”,
) ≠
“”)
标签5.标题 =
“文件已读取,可以取地址了”
文件名 =
寻找文件 (浏览器目录 +
“*.m3u8”,
)
如果真 (文件名 ≠
“”)
标签5.标题 =
“地址已取到,可以下载”
如果真 (标签5.标题 =
“文件已读取,可以取地址了”)
时钟2.时钟周期 = 0
文件更名 (浏览器目录 +
“index.m3u8”, 浏览器目录 +
“index.txt”)
如果真 (寻找文件 (浏览器目录 +
“index.txt”,
) ≠
“”)
取地址 ()

如果真 (标签5.标题 =
“地址已取到,可以下载”)
时钟3.时钟周期 = 0

如果真 (文件更名 (浏览器目录 + 文件名, 浏览器目录 +
“index.txt”))

启动线程 (&下载流, , 下载流句柄
)

如果真 (标签5.标题 =
“已下载:100%”)
时钟1.时钟周期 = 0
合并文件 ()
弹出菜单 (单项下载, ,
)执行 (4, 超级列表框1.
取标题 (超级列表框1.现行选中项, 1
), , ,
)按钮5.禁止 = 真
如果 (目录_是否存在 (“C:\Users\” +
系统_取用户名 () +
“\Downloads\”) =
真)
浏览器目录 =
“C:\Users\” +
系统_取用户名 () +
“\Downloads\”
浏览器目录 =
“C:\Users\” +
系统_取用户名 () +
“.” +
系统_取本机名 () +
“\Downloads\”标签5.标题 = “正在清空浏览器下载目录”目录_清空 (浏览器目录
)时钟4.时钟周期 = 2000
如果真 (标签1.标题 =
“下载完成”)
时钟4.时钟周期 = 0
浏览器下载 ()|
edroptarget |
eCompress |
EThread |
HtmlView |
internet |
shell |
iext |