feat: add per-hoster provider routing (Hoster-Zuordnung)
- New settings field hosterRouting maps file hosters to specific debrid providers - 27 known hosters predefined (Rapidgator, Uploaded, Turbobit, Nitroflare, etc.) - Custom hoster support via prompt dialog - Routing takes priority over default provider chain - Falls back to normal chain on error when autoProviderFallback is enabled - Logs routing decisions: "Hoster-Zuordnung: rapidgator → Debrid-Link" - Full UI section in settings with add/remove/change provider per hoster - Storage validation and normalization for hosterRouting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
9f94404435
commit
c811649b9d
+15
-1
@@ -91,6 +91,19 @@ function normalizeColumnOrder(raw: unknown): string[] {
|
||||
return result;
|
||||
}
|
||||
|
||||
function normalizeHosterRouting(raw: unknown): Record<string, DebridProvider> {
|
||||
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return {};
|
||||
const result: Record<string, DebridProvider> = {};
|
||||
for (const [key, value] of Object.entries(raw as Record<string, unknown>)) {
|
||||
const hoster = String(key).trim().toLowerCase();
|
||||
const provider = String(value ?? "").trim();
|
||||
if (hoster && VALID_PRIMARY_PROVIDERS.has(provider)) {
|
||||
result[hoster] = provider as DebridProvider;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const DEPRECATED_UPDATE_REPOS = new Set([
|
||||
"sucukdeluxe/real-debrid-downloader"
|
||||
]);
|
||||
@@ -164,7 +177,8 @@ export function normalizeSettings(settings: AppSettings): AppSettings {
|
||||
columnOrder: normalizeColumnOrder(settings.columnOrder),
|
||||
extractCpuPriority: settings.extractCpuPriority,
|
||||
autoExtractWhenStopped: settings.autoExtractWhenStopped !== undefined ? Boolean(settings.autoExtractWhenStopped) : defaults.autoExtractWhenStopped,
|
||||
disabledProviders: Array.isArray(settings.disabledProviders) ? settings.disabledProviders.filter((p: unknown) => VALID_PRIMARY_PROVIDERS.has(p as string)) as DebridProvider[] : []
|
||||
disabledProviders: Array.isArray(settings.disabledProviders) ? settings.disabledProviders.filter((p: unknown) => VALID_PRIMARY_PROVIDERS.has(p as string)) as DebridProvider[] : [],
|
||||
hosterRouting: normalizeHosterRouting(settings.hosterRouting)
|
||||
};
|
||||
|
||||
if (!VALID_PRIMARY_PROVIDERS.has(normalized.providerPrimary)) {
|
||||
|
||||
Reference in New Issue
Block a user