目录

前言

强制下载视频

强制合并

迁移下载列表

免责声明

附录


前言

那个下载工具IDM不说了,确实有很多便捷的功能,不过也有一些限制

常见的包括但不限于:

1.无法下载有版权保护的视频(不管真假)

2.有时候下载后不能合并(m3u8,ts)

3.不完整的下载不能强制合并

研究发现 IDM 对存储路径是加密的,老外对隐私和版权的保护这方面,个人认为值得我们学习,还有研究。

本文将简要介绍一些简易解决办法,并附上一些软件、代码、资源

强制下载视频

很多网站的视频使用修改m3u8配置的方式,让IDM以为是加密的视频,从而不下载嗅探到的流媒体,其实并没有加密,此类下载一般会提示:“由于法律原因,IDM 无法下载此受保护的数据”

解决办法是使用 m3u8dl 下载器(这个东西好像被很多杀毒软件归类为黑客软件,但 GitHub 上有),其原理是模拟一个迷你的浏览器,只有你可以播放,就可以下载

由于附带的代码中已经有调用 m3u8dl 的傻瓜式功能(见下文),如果有必要再随缘发文介绍吧

强制合并

有时候下载到100%了但是无法合并,此类问题比较复杂,但是可以确定流媒体是下载完成了

一般提示“整合各下载块为一个文件时无法打开本地文件供写入”

解决方法是用 ffmpeg 直接合并,不过用 bat 等方式遍历到的文件是无序的,所以免不了又要写代码,代码我已经写好了


        int EnumFiles(string path, string pattern, string lstName = "files.txt")
        {
            // dir /b /OD
            List<FileItem> items = new List<FileItem>();
            var files = System.IO.Directory.GetFiles($"{path}", pattern);
            foreach (var file in files)
            {
                var f = System.IO.Path.GetFileName(file);
                var ext = f.Substring(10);
                System.Diagnostics.Debug.Assert(string.IsNullOrEmpty(ext) == false);
                var it = new FileItem();
                it.Name = f;
                it.idx = int.Parse(ext);
                items.Add(it);
            }
            if (items.Count > 0)
            {
                // orderby idx ascending
                items.Sort((a, b) => a.idx.CompareTo(b.idx));
                // file '***' \n
                using (var sw = new System.IO.StreamWriter($"{path}\\{lstName}"))
                {
                    // 覆盖
                    foreach (var it in items)
                    {
                        sw.WriteLine("file '" + it.Name + "'");
                    }
                    sw.Close();
                }
                // C:\Users\Administrator\m3u8DL\ffmpeg.exe -f concat -i files.txt -c copy output.mp4
            }
            return items.Count;
        }

底部注释可以使用 ffmpeg.exe 手动合并生成的 files.txt 碎片列表,提供的软件有便捷的功能(见下文),同时处理了工作路径的问题

迁移下载列表

将下载列表迁移到另外一台电脑时,使用 IDM 自带的导出功能,只能导出链接,不包括文件名,而且对于流媒体,导入后会下载索引,几十个 KB 那种,而不是下载流媒体,所以这是最复杂的部分

1.其实 IDM 的下载任务都保存在注册表中,这也是下载任务多了容易卡顿的原因之一,位置是:HKEY_CURRENT_USER\Software\DownloadManager,每个下载任务以编号作为子项保存相关信息(文件名、原链接、来源页面、进度等)

2.文件名是加密的,保存在注册表任务项 EncLNFSW 中,我找了一下资料很少,有一份俄语的(鄙人俄语只会说你好)

机器翻译一下,没什么价值,还有一位南京的计算机专业博士,可惜他说的是错的,这里跳过研究细节

3.不要问我会不会解密文件名,问就是不会!

免责声明

附带资源用于给遭受反复下载失败的用户提供补救措施,同时代码编写仓促,可能有 BUG 等影响数据安全的隐患,需要使用者自担风险

本人资源一贯免费提供,此次例外,主要是防止没有技术功底的小白和外行人拿来乱试导致数据损坏,及其它不可描述的用途等

本人仅保证软件不包含木马病毒,不对使用者产生的任何影响负责

附录

资源随后上传,可以评论留言或私信获取附带资源链接,相关建议帮助请留意博客更新

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐