.版本 2
.支持库 iext
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 许可证, 线程许可证
.程序集变量 线程id, 整数型
.程序集变量 索引, 整数型
.程序集变量 推流地址, 文本型
.程序集变量 保存地址, 文本型
.子程序 _按钮1_被单击
线程_启动 (&线程_执行)
.子程序 线程_执行
.局部变量 局_保存地址, 文本型
.局部变量 源地址, 文本型
.局部变量 状态, 逻辑型
.局部变量 名字, 文本型
按钮1.禁止 = 真
源地址 = 编辑框1.内容
推流地址 = 获取推流地址 (源地址, 状态, 名字)
.如果真 (推流地址 = “”)
信息框 (“无法获取推流地址.”, 0, , )
按钮1.禁止 = 假
返回 ()
.如果真结束
.如果真 (状态 = 假)
信息框 (“直播已结束.”, 0, , )
按钮1.禁止 = 假
返回 ()
.如果真结束
保存地址 = 取运行目录 () + “” + 时间_取现行时间戳 () + “.flv”
局_保存地址 = 保存地址
线程id = 线程_启动 (&线程_下载)
线程_进入许可区 (许可证)
索引 = 超级列表框1.插入表项 (-1, 到文本 (超级列表框1.取表项数 () + 1), , , , )
超级列表框1.置标题 (索引, 1, 源地址)
超级列表框1.置标题 (索引, 2, 局_保存地址)
超级列表框1.置标题 (索引, 3, “0KB”)
超级列表框1.置标题 (索引, 4, 时间_格式化 (取现行时间 (), “M月d日 ”, “H:m”))
超级列表框1.置标题 (索引, 5, 到文本 (线程id))
超级列表框1.置标题 (索引, 6, “下载中”)
线程_退出许可区 (许可证)
按钮1.禁止 = 假
.循环判断首 ()
线程_进入许可区 (许可证)
超级列表框1.置标题 (索引, 3, 文件_取尺寸 (局_保存地址, 真))
线程_退出许可区 (许可证)
程序_延时 (3000)
.循环判断尾 (真)
.子程序 线程_下载
.局部变量 ret, 整数型
.局部变量 i, 整数型
.局部变量 局_索引, 整数型
局_索引 = 索引
ret = URLDownloadToFile (0, 推流地址, 保存地址, 0, 0)
.如果 (ret ≠ 0)
线程_进入许可区 (许可证)
超级列表框1.置标题 (局_索引, 6, “失败:” + 到文本 (ret))
线程_退出许可区 (许可证)
返回 ()
.否则
线程_进入许可区 (许可证)
超级列表框1.置标题 (局_索引, 6, “下载完成”)
线程_退出许可区 (许可证)
.如果结束
.子程序 子程序1
.子程序 __启动窗口_创建完毕
许可证 = 线程_创建许可证 ()
.子程序 获取推流地址, 文本型
.参数 url, 文本型
.参数 code, 逻辑型, 参考
.参数 name, 文本型, 参考
.局部变量 res, 文本型
.局部变量 正则, 正则表达式类
.局部变量 json, 类_json
res = 网页_访问S (url, , , , , , , 真)
正则.创建 (“(\d{19})”, res)
res = 网页_访问S (文本_取出中间文本 (res, #引号, #引号))
.判断开始 (寻找文本 (res, “直播已结束”, , 假) ≠ -1)
code = 假
.默认
code = 真
.判断结束
res = 编码_utf8到gb2312 (网页_访问S (“https://webcast-hl.amemv.com/webcast/room/reflow/info/?room_id=” + 正则.取子匹配文本 (1, 1) + “&live_id=1”, , , , , , , 真))
json.解析 (res)
调试输出 (json.取通用属性 (“data.room.stream_url.rtmp_pull_url”))
返回 (json.取通用属性 (“data.room.stream_url.rtmp_pull_url”))
本文暂时没有评论,来添加一个吧(●'◡'●)