Hydra Real-Debrid 重复下载同一个游戏3 步停止反复拉取【免费下载链接】hydraHydra Launcher is an open-source gaming platform created to be the single tool that you need项目地址: https://gitcode.com/GitHub_Trending/hy/hydra你在 Hydra 里用 Real-Debrid 下游戏同一个文件被反复下载、重启后从头开始本质是客户端把「还没就绪」误判成了「未缓存」。读完这篇你能确认是哪个环节误判并按动手能力选一个方案修掉。30 秒自查先确认是不是同一个坑 对照下面几条命中 2 条以上基本就是这个问题同一个磁链游戏下载队列出现多条相近任务或下载目录多出一份相似文件重启 Hydra 后已完成的 Real-Debrid 下载又从 0 开始日志里反复出现download_error_not_cached_on_real_debrid只在下磁链magnet:时复现直链或其他 debrid 正常任务卡在「选完文件」之后不前进状态一直停在准备阶段命中越多越可能是状态判断问题而不是网络或账号的锅。原因一句话版一句话Hydra 只查一次 Real-Debrid 的种子状态只要不是downloaded已完成就当「未缓存」返回于是误触发重复下载。机制在 src/main/services/download/real-debrid.ts 的getDownloadUrl它先getTorrentInfo拿状态只处理一次「等待选文件」随后立刻判status downloaded。种子还在downloading、queued_download或刚selectAllFiles但服务器状态没刷完时方法直接return null。上层 src/main/services/download/download-manager.ts 的getRealDebridDownloadOptions收到null就抛NotCachedOnRealDebrid常量见 src/shared/constants.ts界面显示未缓存你只能再次添加循环往复。// real-debrid.ts getDownloadUrl约 105–114 行 const { links, status } torrentInfo; if (status downloaded) { const [link] links; const { download } await this.unrestrictLink(link); return decodeURIComponent(download); } return null; // 状态不是 downloaded 就判未缓存另外getTorrentId里的getAllTorrentsFromUser只取/torrents第一页约 100 条账号种子多时会漏查已有种子从而重复调用addMagnet。这是第二处放大器但主因仍是上面的单次状态判断。修复路径按你能投入的精力三选一1) 零代码换个下载器绕过 debrid适合谁只想先用起来、不碰源码动手前先备份什么无纯界面操作有序步骤游戏详情页打开下载设置对应 src/renderer/src/pages/game-details/modals/download-settings-modal.tsx把该磁链任务的下载器改为 Torrentlibtorrent而不是 Real-Debrid重新发起下载让它走本地 libtorrent 断点续传做完后应看到什么进度按真实下载增长重启后从断点续传不再刷download_error_not_cached_on_real_debrid2) 最小改动给状态判断加等待适合谁能改一个文件、跑得起一次构建的本地开发者动手前先备份什么先复制一份 src/main/services/download/real-debrid.ts有序步骤把「只判一次」改成「最多轮询 3 次、每次 2000ms 再判」仅当最终status downloaded且links非空时才unrestrictLink其余分支保持return null不影响直链路径做完后应看到什么卡在选文件后的任务自行推进不再误报未缓存// 改后最多 3 次、每次 2000ms 再判 for (let i 0; i 3 status ! downloaded; i) { await new Promise((r) setTimeout(r, 2000)); torrentInfo await this.getTorrentInfo(realDebridTorrentId); ({ links, status } torrentInfo); } if (status downloaded links.length 0) { const { download } await this.unrestrictLink(links[0]); return decodeURIComponent(download); }3) 完整方案从去重到状态持久化适合谁想把「重复」从根上管住的维护者动手前先备份什么备份downloads子级数据LevelDB 位于应用数据目录下见 src/main/level/sublevels/downloads.ts 与 src/main/constants.ts思路与涉及模块getTorrentId改为按 infoHash 直接查或翻页避免第一页漏查导致的重复addMagnet把解析到的 torrent id 写回downloadsSublevel重启直接复用不再重新解析磁链区分「尚未缓存」与「从未上传」两种返回让上层显示「等待就绪」而非报错做完后应看到什么种子库超过 100 个也不再重复添加重启后已下任务保持完成态怎么确认修好了功能重新添加同一个磁链游戏队列不再出现第二条相近任务日志日志里能看到[DownloadManager] Resolved URL: ...且不再刷download_error_not_cached_on_real_debrid文件下载目录没有多出的相似文件LevelDBdownloads子级里该任务status为complete重启验证退出并重开 Hydra已完成任务仍显示完成、不从 0 开始顺手避坑✅ Real-Debrid 的unrestrictLink直链是单次、限时链接只缓存「种子 id」别把直链 URL 持久化否则重启必失效换/校验 Token 走设置页 src/renderer/src/pages/settings/settings-real-debrid.tsxToken 过期会放大「未缓存」误判GET /torrents只返回第一页账号种子多时优先用方案三的按 id 查询别手动改名或合并下载出的相似文件容易把「重复下载」误判成文件问题改完只重建主进程main相关模块即可渲染层无需动修复思路只有一句话别再「只查一次状态」——要么绕过 debrid要么给判断加等待要么把去重与状态持久化做到位。改完仍复现把日志和对应infoHash发到项目 issue 区方便维护者定位具体状态分支。【免费下载链接】hydraHydra Launcher is an open-source gaming platform created to be the single tool that you need项目地址: https://gitcode.com/GitHub_Trending/hy/hydra创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考