37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { BaseNewspaperExtractor } from './BaseNewspaperExtractor';
|
|
import { ElPaisExtractor } from './ElPaisExtractor';
|
|
import { ElMundoExtractor } from './ElMundoExtractor';
|
|
import { NewsSource } from '../types/Feed';
|
|
import { Logger } from '../utils/logger';
|
|
|
|
/**
|
|
* Factory para crear extractores de periódicos
|
|
*/
|
|
export class NewspaperExtractorFactory {
|
|
static createExtractor(source: NewsSource): BaseNewspaperExtractor | null {
|
|
switch (source) {
|
|
case NewsSource.EL_PAIS:
|
|
return new ElPaisExtractor();
|
|
case NewsSource.EL_MUNDO:
|
|
return new ElMundoExtractor();
|
|
default:
|
|
Logger.warn(`No extractor available for source: ${source}`);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
static getAllAvailableExtractors(): BaseNewspaperExtractor[] {
|
|
const extractors: BaseNewspaperExtractor[] = [];
|
|
|
|
for (const source of Object.values(NewsSource)) {
|
|
if (source !== NewsSource.MANUAL) {
|
|
const extractor = this.createExtractor(source);
|
|
if (extractor) {
|
|
extractors.push(extractor);
|
|
}
|
|
}
|
|
}
|
|
|
|
return extractors;
|
|
}
|
|
} |