开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 959|回复: 9
收起左侧

[图文资料] 浏览器下载特殊m3u8视频

[复制链接]
发表于 2023-4-25 13:02:34 | 显示全部楼层 |阅读模式   陕西省安康市
本帖最后由 hxq2015 于 2023-4-25 13:09 编辑

浏览器下载m3u8视频.png 在下载m3u8格式视频中,遇到了一种新情况:非IE浏览器中可以播放,用易语言http读文件或网页访问不了的链接,无法调用下载软件下载。又写了一款针对这种特殊m3u8视频的下载软件,没有整合常见和加密m3u8链的解析。只要电脑性能不差,用默认非ie浏览器下载,速度还是可以的。我用的是MiniBrowser浏览器,浏览器下载的临时文件夹是“C:\Users\Administrator\Downloads\i”,可能会和他人所用电脑不同,可以自行修改源码,保存下载后的文件在本程序运行目录。用了四个时钟实现自动化,模块用到精易[v7.5],合并临时流文件用到11m的ffmpeg。等后面有时间了再整合前一版调用IDM极速下载,或者加入常规和加密链接下载。
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
域名头文本型  
下载流句柄整数型  

子程序名返回值类型公开备 注
_按钮1_被单击  
如果 (编辑框1.内容 ≠ “” 编辑框2.内容 ≠ “”)
执行 (4, 编辑框1.内容, , , )
标签1.标题 = “读取中,请稍候”
_时钟2_周期事件 ()

信息框 (“请检查,有信息没填”, 0, , )
返回 ()

子程序名返回值类型公开备 注
取地址  
变量名类 型静态数组备 注
取新后辍文本型 
一次文本文本型 
新后辍文本型 
一次文本 = 到文本 (读入文件 (“C:\Users\Administrator\Downloads\index.txt”))
删除文件 (“C:\Users\Administrator\Downloads\index.txt”)
如果真 (文本_寻找文本 (一次文本, “BANDWIDTH=”, , ) > 0)
取新后辍 = 到文本 (到整数 (文本_取出中间文本 (一次文本, “BANDWIDTH=”, “,”)) \ 1000)“kb”
新后辍 = 取新后辍 + 文本_取右边 (一次文本, 取新后辍)
编辑框1.内容 = 子文本替换 (编辑框1.内容, “index.m3u8”, 新后辍, , , )
域名头 = 文本_取左边 (编辑框1.内容, “index.m3u8”)
标签1.标题 = “正在取地址”
执行 (4, 编辑框1.内容, , , )
_时钟3_周期事件 ()
子程序名返回值类型公开备 注
下载流  
变量名类 型静态数组备 注
列表组文本型0
n整数型 
二次文本文本型 
地址文本型 
下载句柄整数型 
m3u8句柄整数型 
地址名文本型 
表项整数型 
D整数型 
' 下载句柄 = 打开内存文件 ()
标签1.标题 = “下载中”
m3u8句柄 = 打开内存文件 ()
二次文本 = 到文本 (读入文件 (“C:\Users\Administrator\Downloads\index.txt”))
列表组 = 分割文本 (二次文本, 字符 (10), )
如果真 (取数组成员数 (列表组) ≠ 0)
计次循环首 (取数组成员数 (列表组), n)
如果 (文本_寻找文本 (列表组 [n], “#”, , ) = -1)
如果 (文本_寻找文本 (列表组 [n], “http”, , ) = -1)
地址 = 域名头 + 列表组 [n]
' 写出文本 (下载句柄, 域名头 + 地址 + #换行符)
' 写出文本 (下载句柄, 地址 + #换行符)
地址 = 列表组 [n]
地址名 = 取文本右边 (地址, 取文本长度 (地址)倒找文本 (地址, “/”, , ))
写出文本 (m3u8句柄, 子文本替换 (“C:\Users\Administrator\Downloads\”, “\”, “/”, , , ) + 地址名, #换行符 )
表项 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.置标题 (表项, 0, 到文本 (超级列表框1.取表项数 ()))
超级列表框1.置标题 (表项, 1, 地址)
超级列表框1.置标题 (表项, 2, 地址名)
超级列表框1.置标题 (表项, 3, “等待中”)

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

处理事件 ()
计次循环尾 ()
' 移到文件首 (下载句柄)
' 编辑框4.内容 = 读入文本 (下载句柄, )
' 写到文件 (下载目录 + “.txt”, 到字节集 (读入文本 (下载句柄, )))  ' 写出ts列表下载文本
移到文件首 (m3u8句柄)
' xm3u8 = 子文本替换 (读入文本 (m3u8句柄, ), key替换, 子文本替换 (下载目录, “\”, “/”, , , ) + “key.key”, , , )  ' 写出本地m3u8文件
写到文件 (“C:\Users\Administrator\Downloads\” + 编辑框2.内容 + “.m3u8”, 到字节集 (读入文本 (m3u8句柄, )))
删除文件 (“C:\Users\Administrator\Downloads\index.txt”)

如果真 (超级列表框1.取表项数 () > 0)
计次循环首 (超级列表框1.取表项数 (), D)
执行 (4, 超级列表框1.取标题 (D - 1, 1), , , )
计次循环尾 ()

_时钟1_周期事件 ()
子程序名返回值类型公开备 注
合并文件  
标签1.标题 = “合并中”
系统_取DOS执行结果 (“ffmpeg11.exe -allowed_extensions ALL -i  C:\Users\Administrator\Downloads\” + 编辑框2.内容 + “.m3u8 -c copy ”取运行目录 ()“\” + 编辑框2.内容 + “.mp4”)
如果 (文件是否存在 (取运行目录 ()“\” + 编辑框2.内容 + “.mp4”))
标签1.标题 = “合并文件失败”
标签1.标题 = “正在删除临时文件”
目录_清空 (“C:\Users\Administrator\Downloads\”)
标签1.标题 = “下载完成”

子程序名返回值类型公开备 注
_时钟1_周期事件  
变量名类 型静态数组备 注
U整数型 
完成数整数型 
如果真 (超级列表框1.取表项数 () > 0)
计次循环首 (超级列表框1.取表项数 (), U)
如果真 (寻找文件 (“C:\Users\Administrator\Downloads\” + 超级列表框1.取标题 (U - 1, 2), )“”)
超级列表框1.置标题 (U - 1, 3, “完成”)
完成数 = 完成数 + 1

计次循环尾 ()
进度条1.位置 = 到整数 (完成数 ÷ (U - 1) × 100)
标签1.标题 = “已下载:”到文本 (进度条1.位置)“%”

子程序名返回值类型公开备 注
_时钟2_周期事件  
如果真 (寻找文件 (“C:\Users\Administrator\Downloads\index.m3u8”, )“”)
标签1.标题 = “文件已读取,可以取地址了”

子程序名返回值类型公开备 注
_时钟3_周期事件  
如果真 (寻找文件 (“C:\Users\Administrator\Downloads\index.m3u8”, )“”)
标签1.标题 = “地址已取到,可以下载”

子程序名返回值类型公开备 注
_超级列表框1_右键单击表项  
弹出菜单 (下载菜单, , )
子程序名返回值类型公开备 注
_下载选中项_被选择  
执行 (4, 超级列表框1.取标题 (超级列表框1.现行选中项, 1), , , )
子程序名返回值类型公开备 注
_时钟4_周期事件  
如果真 (标签1.标题 = “文件已读取,可以取地址了”)
时钟2.时钟周期 = 0
文件更名 (“C:\Users\Administrator\Downloads\index.m3u8”, “C:\Users\Administrator\Downloads\index.txt”)
如果真 (寻找文件 (“C:\Users\Administrator\Downloads\index.txt”, )“”)
取地址 ()

如果真 (标签1.标题 = “地址已取到,可以下载”)
时钟3.时钟周期 = 0
如果真 (文件更名 (“C:\Users\Administrator\Downloads\index.m3u8”, “C:\Users\Administrator\Downloads\index.txt”))
启动线程 (&下载流, , 下载流句柄)

如果真 (标签1.标题 = “已下载:100%”)
时钟1.时钟周期 = 0
合并文件 ()

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
_时钟4_周期事件 ()
如果真 (标签1.标题 = “下载完成”)
时钟4.时钟周期 = 0


i支持库列表   支持库注释   
shell操作系统界面功能支持库
iext扩展界面支持库一
EThread多线程支持库

结帖率:88% (23/26)
发表于 2024-3-26 12:50:22 | 显示全部楼层   广东省汕尾市
谢谢高手·~~
回复 支持 反对

使用道具 举报

结帖率:84% (89/106)
发表于 2024-2-27 22:38:53 | 显示全部楼层   广东省江门市
支持~!感谢分享~!
回复 支持 反对

使用道具 举报

结帖率:75% (30/40)

签到天数: 1 天

发表于 2023-6-8 13:01:43 | 显示全部楼层   山东省济宁市

好的,学习学习
回复 支持 反对

使用道具 举报

发表于 2023-5-6 22:33:27 | 显示全部楼层   重庆市重庆市
有个小软件去合成
回复 支持 反对

使用道具 举报

发表于 2023-4-26 11:38:18 | 显示全部楼层   天津市天津市
hxq2015 发表于 2023-4-25 14:34
目前我遇到的是可以合成的,里面没有加密文件的,所有数据流都需要用浏览器才能下来 ...

我一般都是用QQ浏览器去下载,然后有个小软件去合成
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-25 14:34:59 | 显示全部楼层   陕西省安康市
cabrite 发表于 2023-4-25 14:17
能合并成mp4吗,之前下过那种视频,然后不能合并

目前我遇到的是可以合成的,里面没有加密文件的,所有数据流都需要用浏览器才能下来
回复 支持 反对

使用道具 举报

发表于 2023-4-25 14:17:51 | 显示全部楼层   天津市天津市
能合并成mp4吗,之前下过那种视频,然后不能合并
回复 支持 反对

使用道具 举报

结帖率:84% (108/128)
发表于 2023-4-25 14:15:32 | 显示全部楼层   广东省惠州市
好的,学习学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-25 13:07:42 | 显示全部楼层   陕西省安康市
本帖最后由 hxq2015 于 2023-4-25 13:10 编辑

如果你也遇到这种情况,可以试试看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表