refactor: extract Media Flow Proxy functions

This commit is contained in:
WebStreamr 2025-06-24 10:52:38 +00:00
parent 64d1da9dc6
commit b2eb16fc82
No known key found for this signature in database
5 changed files with 21 additions and 19 deletions

View file

@ -1,7 +1,7 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
import { Extractor } from './Extractor';
import { buildMediaFlowProxyUrl, Fetcher, hasMediaFlowProxy } from '../utils';
import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, hasMediaFlowProxy } from '../utils';
import { Context, CountryCode, Format, UrlResult } from '../types';
import { NotFoundError } from '../error';
@ -39,7 +39,7 @@ export class Mixdrop extends Extractor {
return [
{
url: buildMediaFlowProxyUrl(ctx.config, 'Mixdrop', url),
url: buildMediaFlowProxyExtractorRedirectUrl(ctx.config, 'Mixdrop', url),
format: Format.mp4,
label: this.label,
sourceId: `${this.id}_${countryCode}`,

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio';
import { Extractor } from './Extractor';
import { buildMediaFlowProxyUrl, Fetcher, hasMediaFlowProxy } from '../utils';
import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, hasMediaFlowProxy } from '../utils';
import { Context, CountryCode, Format, UrlResult } from '../types';
export class Uqload extends Extractor {
@ -36,7 +36,7 @@ export class Uqload extends Extractor {
return [
{
url: buildMediaFlowProxyUrl(ctx.config, 'Uqload', url),
url: buildMediaFlowProxyExtractorRedirectUrl(ctx.config, 'Uqload', url),
format: Format.mp4,
label: this.label,
sourceId: `${this.id}_${countryCode}`,

View file

@ -5,18 +5,3 @@ export const getDefaultConfig = (): Config => {
};
export const showExternalUrls = (config: Config): boolean => 'includeExternalUrls' in config;
export const hasMediaFlowProxy = (config: Config): boolean => !!(config['mediaFlowProxyUrl'] && config['mediaFlowProxyPassword']);
export const buildMediaFlowProxyUrl = (config: Config, host: string, url: URL): URL => {
const mediaFlowProxyUrl = new URL(`${config.mediaFlowProxyUrl}/extractor/video`);
const params = new URLSearchParams();
params.append('host', host);
params.append('redirect_stream', 'true');
params.append('api_password', `${config.mediaFlowProxyPassword}`);
params.append('d', url.href);
mediaFlowProxyUrl.search = params.toString();
return mediaFlowProxyUrl;
};

View file

@ -8,4 +8,5 @@ export * from './height';
export * from './id';
export * from './language';
export * from './manifest';
export * from './media-flow-proxy';
export * from './tmdb';

View file

@ -0,0 +1,16 @@
import { Config } from '../types';
export const hasMediaFlowProxy = (config: Config): boolean => !!(config['mediaFlowProxyUrl'] && config['mediaFlowProxyPassword']);
export const buildMediaFlowProxyExtractorRedirectUrl = (config: Config, host: string, url: URL): URL => {
const mediaFlowProxyUrl = new URL(`${config.mediaFlowProxyUrl}/extractor/video`);
const params = new URLSearchParams();
params.append('host', host);
params.append('redirect_stream', 'true');
params.append('api_password', `${config.mediaFlowProxyPassword}`);
params.append('d', url.href);
mediaFlowProxyUrl.search = params.toString();
return mediaFlowProxyUrl;
};