webstreamr/src/extractor/index.ts
2025-10-02 15:05:01 +00:00

58 lines
1.7 KiB
TypeScript

import { envGet, Fetcher } from '../utils';
import { DoodStream } from './DoodStream';
import { Dropload } from './Dropload';
import { ExternalUrl } from './ExternalUrl';
import { Extractor } from './Extractor';
import { Fastream } from './Fastream';
import { FileLions } from './FileLions';
import { HubCloud } from './HubCloud';
import { KinoGer } from './KinoGer';
import { Mixdrop } from './Mixdrop';
import { SaveFiles } from './SaveFiles';
import { Soaper } from './Soaper';
import { StreamEmbed } from './StreamEmbed';
import { Streamtape } from './Streamtape';
import { SuperVideo } from './SuperVideo';
import { Uqload } from './Uqload';
import { VidSrc } from './VidSrc';
import { VixSrc } from './VixSrc';
import { YouTube } from './YouTube';
export * from './Extractor';
export * from './ExtractorRegistry';
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, [ // https://vidsrc.domains/
'bz',
'do',
'gd',
'in',
'io',
// 'me', // redirects to .net
'mn',
'net',
'tw',
// 'vc', // 500 internal server error
'xyz',
]),
new VixSrc(fetcher),
new YouTube(fetcher),
new ExternalUrl(fetcher), // fallback extractor which must come last
].filter(extractor => !disabledExtractors.includes(extractor.id));
};