feat: adding hydra debrid

This commit is contained in:
Chubby Granny Chaser
2025-04-09 13:02:22 +01:00
parent 97cf02577a
commit 98ed07d6d2
16 changed files with 186 additions and 4 deletions

View File

@@ -47,6 +47,7 @@ import "./torrenting/resume-game-download";
import "./torrenting/start-game-download";
import "./torrenting/pause-game-seed";
import "./torrenting/resume-game-seed";
import "./torrenting/check-debrid-availability";
import "./user-preferences/get-user-preferences";
import "./user-preferences/update-user-preferences";
import "./user-preferences/auto-launch";

View File

@@ -0,0 +1,11 @@
import { HydraDebridClient } from "@main/services/download/hydra-debrid";
import { registerEvent } from "../register-event";
const checkDebridAvailability = async (
_event: Electron.IpcMainInvokeEvent,
magnets: string[]
) => {
return HydraDebridClient.getAvailableMagnets(magnets);
};
registerEvent("checkDebridAvailability", checkDebridAvailability);

View File

@@ -23,6 +23,7 @@ import { db, downloadsSublevel, gamesSublevel, levelKeys } from "@main/level";
import { sortBy } from "lodash-es";
import { TorBoxClient } from "./torbox";
import { GameFilesManager } from "../game-files-manager";
import { HydraDebridClient } from "./hydra-debrid";
export class DownloadManager {
private static downloadingGameId: string | null = null;
@@ -387,6 +388,21 @@ export class DownloadManager {
allow_multiple_connections: true,
};
}
case Downloader.Hydra: {
const downloadUrl = await HydraDebridClient.getDownloadUrl(
download.uri
);
if (!downloadUrl) throw new Error(DownloadError.NotCachedInHydra);
return {
action: "start",
game_id: downloadId,
url: downloadUrl,
save_path: download.downloadPath,
allow_multiple_connections: true,
};
}
}
}

View File

@@ -0,0 +1,25 @@
import { HydraApi } from "../hydra-api";
export class HydraDebridClient {
public static getAvailableMagnets(
magnets: string[]
): Promise<Record<string, boolean>> {
return HydraApi.put(
"/debrid/check-availability",
{
magnets,
},
{ needsAuth: false }
);
}
public static getDownloadUrl(magnet: string) {
try {
return HydraApi.post("/debrid/request-file", {
magnet,
}).then((response) => response.downloadUrl);
} catch (error) {
return null;
}
}
}