From 737bf6aa94fabeac0d33c39fc0e4a9ceabbcdcc9 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Sun, 14 Sep 2025 19:30:32 +0000 Subject: [PATCH] feat: allow to disable extractors via env var --- src/extractor/index.ts | 46 +++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/src/extractor/index.ts b/src/extractor/index.ts index 349b954..942c925 100644 --- a/src/extractor/index.ts +++ b/src/extractor/index.ts @@ -1,4 +1,4 @@ -import { Fetcher } from '../utils'; +import { envGet, Fetcher } from '../utils'; import { DoodStream } from './DoodStream'; import { Dropload } from './Dropload'; import { ExternalUrl } from './ExternalUrl'; @@ -22,23 +22,27 @@ import { YouTube } from './YouTube'; export * from './Extractor'; export * from './ExtractorRegistry'; -export const createExtractors = (fetcher: Fetcher): Extractor[] => [ - new DoodStream(fetcher), - new Dropload(fetcher), - new Fastream(fetcher), - new FileLions(fetcher), - new HubCloud(fetcher), - new KinoGer(fetcher), - new Mixdrop(fetcher), - new SaveFiles(fetcher), - new Soaper(fetcher), - new StreamEmbed(fetcher), - new Streamtape(fetcher), - new SuperVideo(fetcher), - new Uqload(fetcher), - new VidSrc(fetcher, ['in', 'net', 'xyz', 'io', 'vc']), // https://vidsrc.domains/ - new VixSrc(fetcher), - new XPrime(fetcher), - new YouTube(fetcher), - new ExternalUrl(fetcher), // fallback extractor which must come last -]; +export const createExtractors = (fetcher: Fetcher): Extractor[] => { + const disabledExtractors = envGet('DISABLED_EXTRACTORS')?.split(',') ?? []; + + return [ + new DoodStream(fetcher), + new Dropload(fetcher), + new Fastream(fetcher), + new FileLions(fetcher), + new HubCloud(fetcher), + new KinoGer(fetcher), + new Mixdrop(fetcher), + new SaveFiles(fetcher), + new Soaper(fetcher), + new StreamEmbed(fetcher), + new Streamtape(fetcher), + new SuperVideo(fetcher), + new Uqload(fetcher), + new VidSrc(fetcher, ['in', 'net', 'xyz', 'io', 'vc']), // https://vidsrc.domains/ + new VixSrc(fetcher), + new XPrime(fetcher), + new YouTube(fetcher), + new ExternalUrl(fetcher), // fallback extractor which must come last + ].filter(extractor => !disabledExtractors.includes(extractor.id)); +};