diff --git a/src/extractor/ExternalUrl.ts b/src/extractor/ExternalUrl.ts index e07b927..4e791ad 100644 --- a/src/extractor/ExternalUrl.ts +++ b/src/extractor/ExternalUrl.ts @@ -1,5 +1,5 @@ import { Extractor } from './Extractor'; -import { Fetcher } from '../utils'; +import { Fetcher, showExternalUrls } from '../utils'; import { Context, CountryCode, UrlResult } from '../types'; export class ExternalUrl extends Extractor { @@ -17,7 +17,7 @@ export class ExternalUrl extends Extractor { this.fetcher = fetcher; } - public readonly supports = (ctx: Context, url: URL): boolean => !('excludeExternalUrls' in ctx.config) && null !== url.host.match(/.*/); + public readonly supports = (ctx: Context, url: URL): boolean => showExternalUrls(ctx.config) && null !== url.host.match(/.*/); protected readonly extractInternal = async (ctx: Context, url: URL, countryCode: CountryCode, title: string | undefined): Promise => { try { diff --git a/src/utils/StreamResolver.ts b/src/utils/StreamResolver.ts index 89a6437..5bbffcf 100644 --- a/src/utils/StreamResolver.ts +++ b/src/utils/StreamResolver.ts @@ -8,6 +8,7 @@ import { flagFromCountryCode, languageFromCountryCode } from './language'; import { envGetAppName } from './env'; import { Id } from './id'; import { ExtractorRegistry } from '../extractor'; +import { showExternalUrls } from './config'; interface ResolveResponse { streams: Stream[]; @@ -95,7 +96,7 @@ export class StreamResolver { this.logger.info(`Return ${urlResults.length} streams`, ctx); streams.push( - ...urlResults.filter(urlResult => !urlResult.isExternal || this.showExternalUrls(ctx) || urlResult.error) + ...urlResults.filter(urlResult => !urlResult.isExternal || showExternalUrls(ctx.config) || urlResult.error) .map(urlResult => ({ ...this.buildUrl(ctx, urlResult), name: this.buildName(ctx, urlResult), @@ -131,14 +132,12 @@ export class StreamResolver { return Math.min(...urlResults.map(urlResult => urlResult.ttl as number)); }; - private readonly showExternalUrls = (ctx: Context): boolean => !('excludeExternalUrls' in ctx.config); - private readonly buildUrl = (ctx: Context, urlResult: UrlResult): { externalUrl: string } | { url: string } | { ytId: string } => { if (!urlResult.isExternal) { return { url: urlResult.url.href }; } - if (this.showExternalUrls(ctx)) { + if (showExternalUrls(ctx.config)) { return { externalUrl: urlResult.url.href }; } @@ -150,7 +149,7 @@ export class StreamResolver { name += urlResult.meta.height ? ` ${urlResult.meta.height}P` : ' N/A'; - if (urlResult.isExternal && this.showExternalUrls(ctx)) { + if (urlResult.isExternal && showExternalUrls(ctx.config)) { name += ` ⚠️ external`; } diff --git a/src/utils/config.ts b/src/utils/config.ts index ee6296f..394cbfe 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -3,3 +3,5 @@ import { Config } from '../types'; export const getDefaultConfig = (): Config => { return { en: 'on' }; }; + +export const showExternalUrls = (config: Config): boolean => !('excludeExternalUrls' in config);