From 5d279442b62fc13d25ae09f506a52a4ecda2bfa8 Mon Sep 17 00:00:00 2001 From: ragmehos <112108222+ragmehos@users.noreply.github.com> Date: Mon, 18 Aug 2025 13:43:28 -0700 Subject: [PATCH] feat: add debrider as service and update mediafusion preset (#305) --- .env.sample | 6 +++++- packages/core/src/parser/streamExpression.ts | 3 ++- packages/core/src/presets/mediafusion.ts | 1 + packages/core/src/utils/config.ts | 12 +++++++++++ packages/core/src/utils/constants.ts | 21 ++++++++++++++++++++ packages/core/src/utils/env.ts | 8 ++++++++ packages/core/src/utils/startup.ts | 2 ++ 7 files changed, 51 insertions(+), 2 deletions(-) diff --git a/.env.sample b/.env.sample index 77526fe4..f2ebe248 100644 --- a/.env.sample +++ b/.env.sample @@ -143,6 +143,10 @@ FORCED_EASYNEWS_PASSWORD= DEFAULT_EASYDEBRID_API_KEY= FORCED_EASYDEBRID_API_KEY= +# --- Debrider --- +DEFAULT_DEBRIDER_API_KEY= +FORCED_DEBRIDER_API_KEY= + # --- PikPak --- DEFAULT_PIKPAK_EMAIL= FORCED_PIKPAK_EMAIL= @@ -652,4 +656,4 @@ PRUNE_MAX_DAYS=-1 # --------------- More Like This ------------- # MORE_LIKE_THIS_URL=https://bbab4a35b833-more-like-this.baby-beamup.club -# ============================================================================== \ No newline at end of file +# ============================================================================== diff --git a/packages/core/src/parser/streamExpression.ts b/packages/core/src/parser/streamExpression.ts index 20293c94..f380caf0 100644 --- a/packages/core/src/parser/streamExpression.ts +++ b/packages/core/src/parser/streamExpression.ts @@ -392,11 +392,12 @@ export abstract class StreamExpressionEngine { 'premiumize', 'easynews', 'easydebrid', + 'debrider', ].includes(s) ) ) { throw new Error( - 'Service must be a string and one of: realdebrid, debridlink, alldebrid, torbox, pikpak, seedr, offcloud, premiumize, easynews, easydebrid' + 'Service must be a string and one of: realdebrid, debridlink, alldebrid, torbox, pikpak, seedr, offcloud, premiumize, easynews, easydebrid, debrider' ); } return streams.filter((stream) => diff --git a/packages/core/src/presets/mediafusion.ts b/packages/core/src/presets/mediafusion.ts index 9b6e0390..401bc0fc 100644 --- a/packages/core/src/presets/mediafusion.ts +++ b/packages/core/src/presets/mediafusion.ts @@ -132,6 +132,7 @@ export class MediaFusionPreset extends Preset { constants.TORBOX_SERVICE, constants.DEBRIDLINK_SERVICE, constants.EASYDEBRID_SERVICE, + constants.DEBRIDER_SERVICE, constants.OFFCLOUD_SERVICE, constants.PIKPAK_SERVICE, constants.SEEDR_SERVICE, diff --git a/packages/core/src/utils/config.ts b/packages/core/src/utils/config.ts index 59906470..01c7bafb 100644 --- a/packages/core/src/utils/config.ts +++ b/packages/core/src/utils/config.ts @@ -84,6 +84,12 @@ function getServiceCredentialDefault( return Env.DEFAULT_EASYDEBRID_API_KEY; } break; + case constants.DEBRIDER_SERVICE: + switch (credentialId) { + case 'apiKey': + return Env.DEFAULT_DEBRIDER_API_KEY; + } + break; case constants.PUTIO_SERVICE: switch (credentialId) { case 'clientId': @@ -171,6 +177,12 @@ function getServiceCredentialForced( return Env.FORCED_EASYDEBRID_API_KEY; } break; + case constants.DEBRIDER_SERVICE: + switch (credentialId) { + case 'apiKey': + return Env.FORCED_DEBRIDER_API_KEY; + } + break; case constants.PUTIO_SERVICE: switch (credentialId) { case 'clientId': diff --git a/packages/core/src/utils/constants.ts b/packages/core/src/utils/constants.ts index 633fa960..845ea99c 100644 --- a/packages/core/src/utils/constants.ts +++ b/packages/core/src/utils/constants.ts @@ -173,6 +173,7 @@ const PREMIUMIZE_SERVICE = 'premiumize'; const ALLDEBRID_SERVICE = 'alldebrid'; const TORBOX_SERVICE = 'torbox'; const EASYDEBRID_SERVICE = 'easydebrid'; +const DEBRIDER_SERVICE = 'debrider'; const PUTIO_SERVICE = 'putio'; const PIKPAK_SERVICE = 'pikpak'; const OFFCLOUD_SERVICE = 'offcloud'; @@ -186,6 +187,7 @@ const SERVICES = [ ALLDEBRID_SERVICE, TORBOX_SERVICE, EASYDEBRID_SERVICE, + DEBRIDER_SERVICE, PUTIO_SERVICE, PIKPAK_SERVICE, OFFCLOUD_SERVICE, @@ -430,6 +432,24 @@ const SERVICE_DETAILS: Record< }, ], }, + [DEBRIDER_SERVICE]: { + id: DEBRIDER_SERVICE, + name: 'Debrider', + shortName: 'DBD', + knownNames: ['DBD', 'Debrider'], + signUpText: + "Don't have an account? [Sign up here](https://debrider.app/)", + credentials: [ + { + id: 'apiKey', + name: 'API Key', + description: + 'Your Debrider API key. Obtain it from [here](https://debrider.app/dashboard/account)', + type: 'password', + required: true, + }, + ], + }, [PIKPAK_SERVICE]: { id: PIKPAK_SERVICE, name: 'PikPak', @@ -898,6 +918,7 @@ export { DEBRIDLINK_SERVICE, TORBOX_SERVICE, EASYDEBRID_SERVICE, + DEBRIDER_SERVICE, PUTIO_SERVICE, PIKPAK_SERVICE, OFFCLOUD_SERVICE, diff --git a/packages/core/src/utils/env.ts b/packages/core/src/utils/env.ts index b5f06e0c..72ed6d70 100644 --- a/packages/core/src/utils/env.ts +++ b/packages/core/src/utils/env.ts @@ -604,6 +604,10 @@ export const Env = cleanEnv(process.env, { default: undefined, desc: 'Default EasyDebrid API key', }), + DEFAULT_DEBRIDER_API_KEY: str({ + default: undefined, + desc: 'Default Debrider API key', + }), DEFAULT_PIKPAK_EMAIL: str({ default: undefined, desc: 'Default PikPak email', @@ -670,6 +674,10 @@ export const Env = cleanEnv(process.env, { default: undefined, desc: 'Forced EasyDebrid API key', }), + FORCED_DEBRIDER_API_KEY: str({ + default: undefined, + desc: 'Forced Debrider API key', + }), FORCED_PIKPAK_EMAIL: str({ default: undefined, desc: 'Forced PikPak email', diff --git a/packages/core/src/utils/startup.ts b/packages/core/src/utils/startup.ts index 80021549..7dbca058 100644 --- a/packages/core/src/utils/startup.ts +++ b/packages/core/src/utils/startup.ts @@ -355,6 +355,7 @@ const logStartupInfo = () => { { name: 'EasyNews', key: Env.DEFAULT_EASYNEWS_USERNAME }, { name: 'EasyNews Password', key: Env.DEFAULT_EASYNEWS_PASSWORD }, { name: 'EasyDebrid', key: Env.DEFAULT_EASYDEBRID_API_KEY }, + { name: 'Debrider', key: Env.DEFAULT_DEBRIDER_API_KEY }, { name: 'PikPak', key: Env.DEFAULT_PIKPAK_EMAIL }, { name: 'PikPak Password', key: Env.DEFAULT_PIKPAK_PASSWORD }, { name: 'Seedr', key: Env.DEFAULT_SEEDR_ENCODED_TOKEN }, @@ -387,6 +388,7 @@ const logStartupInfo = () => { { name: 'EasyNews', key: Env.FORCED_EASYNEWS_USERNAME }, { name: 'EasyNews Password', key: Env.FORCED_EASYNEWS_PASSWORD }, { name: 'EasyDebrid', key: Env.FORCED_EASYDEBRID_API_KEY }, + { name: 'Debrider', key: Env.FORCED_DEBRIDER_API_KEY }, { name: 'PikPak', key: Env.FORCED_PIKPAK_EMAIL }, { name: 'PikPak Password', key: Env.FORCED_PIKPAK_PASSWORD }, { name: 'Seedr', key: Env.FORCED_SEEDR_ENCODED_TOKEN },