Recover stalled extraction and add optional fallback providers
Build and Release / build (push) Has been cancelled

This commit is contained in:
Sucukdeluxe
2026-02-27 12:16:30 +01:00
parent 0f61b0be08
commit 3525ecb569
11 changed files with 395 additions and 39 deletions
+14 -3
View File
@@ -1,4 +1,4 @@
import { AppSettings, DebridProvider } from "../shared/types";
import { AppSettings, DebridFallbackProvider, DebridProvider } from "../shared/types";
import { REQUEST_RETRIES } from "./constants";
import { RealDebridClient, UnrestrictedLink } from "./realdebrid";
import { compactErrorText, filenameFromUrl, looksLikeOpaqueFilename, sleep } from "./utils";
@@ -113,6 +113,17 @@ function uniqueProviderOrder(order: DebridProvider[]): DebridProvider[] {
return result;
}
function toProviderOrder(primary: DebridProvider, secondary: DebridFallbackProvider, tertiary: DebridFallbackProvider): DebridProvider[] {
const order: DebridProvider[] = [primary];
if (secondary !== "none") {
order.push(secondary);
}
if (tertiary !== "none") {
order.push(tertiary);
}
return uniqueProviderOrder(order);
}
function isRapidgatorLink(link: string): boolean {
try {
return new URL(link).hostname.toLowerCase().includes("rapidgator.net");
@@ -492,11 +503,11 @@ export class DebridService {
}
public async unrestrictLink(link: string): Promise<ProviderUnrestrictedLink> {
const order = uniqueProviderOrder([
const order = toProviderOrder(
this.settings.providerPrimary,
this.settings.providerSecondary,
this.settings.providerTertiary
]);
);
let configuredFound = false;
const attempts: string[] = [];