菜单

外部下载服务

相关源文件

本文档涵盖了为Hydra中游戏提供多个下载来源的外部下载服务集成。这些服务包括高级下载加速服务和免费文件托管平台,它们扩展了除直接P2P下载以外的下载选项。

有关整体下载编排和管理的信息,请参阅下载管理器和编排。有关处理实际下载的Python RPC后端详细信息,请参阅Python RPC系统

支持的服务概述

Hydra集成了多个外部下载服务,为用户提供多种下载选项。系统根据下载URL自动检测相应的服务,并为处理不同服务类型提供统一的界面。

服务类别

高级下载加速服务

  • Real-Debrid - 支持缓存种子和直链的高级下载
  • TorBox - 替代高级下载加速服务
  • Hydra (Nimbus) - Hydra的自有高级服务

免费文件托管服务

  • Gofile - 支持直链下载的免费文件托管
  • PixelDrain - 免费文件托管平台
  • Mediafire - 流行文件共享服务
  • Qiwi - 文件托管服务
  • Datanodes - 文件托管平台

来源:src/shared/constants.ts1-11 src/renderer/src/constants.ts5-15

服务检测和URI路由

系统使用URI模式匹配来自动确定哪个下载服务应处理给定的URL。此路由逻辑是集中式的,支持单个URI和批量URI处理。

getDownloadersForUri函数实现了路由逻辑

URL模式服务下载器枚举
https://gofile.ioGofileDownloader.Gofile
https://pixeldrain.comPixelDrainDownloader.PixelDrain
https://www.mediafire.comMediafireDownloader.Mediafire
https://qiwi.ggQiwiDownloader.Qiwi
https://datanodes.toDatanodesDownloader.Datanodes
magnet多个种子服务Downloader.Torrent, Downloader.Hydra, Downloader.TorBox, Downloader.RealDebrid
Real-Debrid主机Real-DebridDownloader.RealDebrid

来源:src/shared/index.ts106-130 src/shared/index.ts132-141

服务实现架构

每个外部服务都作为独立的API类实现,具有用于URL处理和下载链接提取的标准化方法。

来源:src/main/services/hosters/index.ts1-6

Mediafire服务实现

MediafireApi类通过HTML解析处理Mediafire URL和直链下载链接提取。

URL处理管道

主要功能

URL规范化

  • 自动将HTTP转换为HTTPS
  • 通过在URL前添加https://mediafire.com/?来处理仅含标识符的URL
  • 处理缺少协议的格式错误URL

链接提取

  • 使用正则表达式模式在HTML中查找下载链接
  • 支持预下载和动态下载URL
  • 在返回前验证提取的URL

错误处理

  • 为失败的请求抛出描述性错误
  • 处理未找到有效下载链接的情况

来源:src/main/services/hosters/mediafire.ts1-55

PixelDrain服务实现

PixelDrainApi类通过重定向处理为PixelDrain文件提供直链下载URL提取。

实现细节

基于重定向的提取

  • 使用https://pd.cybar.xyz/代理端点
  • 处理HTTP重定向(301/302)以获取实际下载URL
  • 包含类似浏览器的头部以避免阻塞

浏览器头部模拟

响应处理

  • 接受状态码200、301、302
  • 从响应头部提取重定向URL
  • 如果未找到重定向URL则抛出错误

来源:src/main/services/hosters/pixeldrain.ts1-43

与下载管理器集成

外部下载服务通过服务检测和路由机制与主下载系统集成。

来源:src/shared/index.ts108-130

错误处理和服务状态

系统为不同的服务故障定义了特定的错误类型,并为每种服务类型实现了适当的错误处理。

常见错误类型

错误描述受影响的服务
NotCachedOnRealDebrid内容在Real-Debrid缓存中不可用Real-Debrid
NotCachedOnTorBox内容在TorBox缓存中不可用TorBox
GofileQuotaExceededGofile下载配额超出Gofile
RealDebridAccountNotAuthorizedReal-Debrid账户未正确配置Real-Debrid
NotCachedOnHydra内容在Hydra缓存中不可用Hydra

服务状态跟踪

系统跟踪下载源状态以处理服务可用性和错误

  • UpToDate - 服务正常运行并响应
  • Errored - 服务出现问题或不可用

来源:src/shared/constants.ts55-62 src/shared/constants.ts13-16