Move runScraper to use the options instead of providers itself

This commit is contained in:
mrjvs
2023-12-26 17:22:23 +01:00
parent aa4b7cda9e
commit edd08446cf
2 changed files with 19 additions and 13 deletions

View File

@@ -9,7 +9,7 @@ import { logDeepObject } from '@/dev-cli/logging';
import { getMovieMediaDetails, getShowMediaDetails } from '@/dev-cli/tmdb';
import { CommandLineArguments, processOptions } from '@/dev-cli/validate';
import { MetaOutput, ProviderControls, getBuiltinEmbeds, getBuiltinSources } from '..';
import { MetaOutput, ProviderMakerOptions, getBuiltinEmbeds, getBuiltinSources, makeProviders } from '..';
dotenv.config();
@@ -49,8 +49,9 @@ function joinMediaTypes(mediaTypes: string[] | undefined) {
return ''; // * Embed sources pass through here too
}
async function runScraper(providers: ProviderControls, source: MetaOutput, options: CommandLineArguments) {
async function runScraper(providerOptions: ProviderMakerOptions, source: MetaOutput, options: CommandLineArguments) {
const spinnies = new Spinnies();
const providers = makeProviders(providerOptions);
if (source.type === 'embed') {
spinnies.add('scrape', { text: `Running ${source.name} scraper on ${options.url}` });
@@ -200,8 +201,8 @@ async function runQuestions() {
}
}
const { providers, source: validatedSource, options: validatedOps } = await processOptions(sources, options);
await runScraper(providers, validatedSource, validatedOps);
const { providerOptions, source: validatedSource, options: validatedOps } = await processOptions(sources, options);
await runScraper(providerOptions, validatedSource, validatedOps);
}
async function runCommandLine() {
@@ -216,8 +217,12 @@ async function runCommandLine() {
program.parse();
const { providers, source: validatedSource, options: validatedOps } = await processOptions(sources, program.opts());
await runScraper(providers, validatedSource, validatedOps);
const {
providerOptions,
source: validatedSource,
options: validatedOps,
} = await processOptions(sources, program.opts());
await runScraper(providerOptions, validatedSource, validatedOps);
}
if (process.argv.length === 2) {

View File

@@ -2,7 +2,7 @@ import nodeFetch from 'node-fetch';
import { Embed, Sourcerer } from '@/providers/base';
import { makeProviders, makeStandardFetcher, targets } from '..';
import { ProviderMakerOptions, makeStandardFetcher, targets } from '..';
export type CommandLineArguments = {
fetcher: string;
@@ -15,8 +15,9 @@ export type CommandLineArguments = {
};
export async function processOptions(sources: Array<Embed | Sourcerer>, options: CommandLineArguments) {
if (options.fetcher !== 'node-fetch' && options.fetcher !== 'native') {
throw new Error("Fetcher must be either 'native' or 'node-fetch'");
const fetcherOptions = ['node-fetch', 'native', 'browser'];
if (!fetcherOptions.includes(options.fetcher)) {
throw new Error(`Fetcher must be any of: ${fetcherOptions.join()}`);
}
if (!options.sourceId.trim()) {
@@ -77,13 +78,13 @@ export async function processOptions(sources: Array<Embed | Sourcerer>, options:
fetcher = makeStandardFetcher(nodeFetch);
}
const providers = makeProviders({
const providerOptions: ProviderMakerOptions = {
fetcher,
target: targets.NATIVE,
});
target: targets.ANY,
};
return {
providers,
providerOptions,
options,
source,
};