关于Internet Download Manager(IDM)强制下载合并相关二次开发

embedded/2025/2/5 13:58:40/

目录

前言

强制下载视频

强制合并

迁移下载列表

免责声明

附录


前言

那个下载工具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 /ODList<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 ascendingitems.Sort((a, b) => a.idx.CompareTo(b.idx));// file '***' \nusing (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 等影响数据安全的隐患,需要使用者自担风险

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

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

附录

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


http://www.ppmy.cn/embedded/159770.html

相关文章

爱陪伴:免费AI聊天陪伴软件的体验感受

随着科技发展&#xff0c;AI 聊天软件大量涌现&#xff0c;给工作、生活、学习、娱乐等带来诸多便利。小编此前尝试了几款免费的 AI 情感陪伴软件&#xff0c;界面大多只是简单的聊天框。最近&#xff0c;又体验了一款名为 “爱陪伴” 的 AI 情感陪伴软件&#xff0c;它虽不像是…

C++ Primer 自定义数据结构

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

攻防世界_Web_php_unserialize(绕过php反序列/绕过wakeup函数/代码审计)

php代码审计 Demo类的魔术函数 __construct() 函数&#xff0c;当类新建对象的时候会执行。例如&#xff0c;$x new Demo(要传给函数的值)__destruct() 函数&#xff0c;当对象销毁后会调用。新建对象后&#xff0c;先执行__construct() 函数&#xff0c;等所有函数执行完后…

axios如何利用promise无痛刷新token

目录 需求 需求解析 实现思路 方法一&#xff1a; 方法二&#xff1a; 两种方法对比 实现 封装axios基本骨架 instance.interceptors.response.use拦截实现 问题和优化 如何防止多次刷新token 同时发起两个或以上的请求时&#xff0c;其他接口如何重试 最后完整代…

Python从0到100(八十七):CNN网络详细介绍及WISDM数据集模型仿真

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

关于算尽圆周率

总有人提到圆周率算尽的问题&#xff0c;其实代码都已经在前面给出了&#xff0c;自己跑一下就明白了。 用语言描述的话&#xff0c;那就是&#xff1a; 前面几篇文章已经写清楚了&#xff0c;圆周率的本质就是无限分辨率前提下的可二分度量单位。 就像是自然对数底&#xf…

信息学奥赛一本通 2101:【23CSPJ普及组】旅游巴士(bus) | 洛谷 P9751 [CSP-J 2023] 旅游巴士

【题目链接】 ybt 2101&#xff1a;【23CSPJ普及组】旅游巴士(bus) 洛谷 P9751 [CSP-J 2023] 旅游巴士 【题目考点】 1. 图论&#xff1a;求最短路Dijkstra, SPFA 2. 动态规划 3. 二分答案 4. 图论&#xff1a;广搜BFS 【解题思路】 解法1&#xff1a;Dijkstra堆优化 …

Redis真的是单线程的吗?

在学习redis的过程中老是听到&#xff1a;Redis快的原因之一是单线程模型&#xff0c;省去线程切换和竞争的性能开销&#xff0c;但是深入了解redis之后发现它并不是纯的单线程。 Redis 单线程指的是「接收客户端请求->解析请求 ->进行数据读写等操作->发送数据给客户…