repub: support slugged feeds and imported TOML feed configs
This commit is contained in:
parent
30b81934a8
commit
5a8162c876
9 changed files with 324 additions and 76 deletions
|
|
@ -62,8 +62,8 @@ def create_feed_crawler(
|
|||
feed: FeedConfig,
|
||||
init_reactor: bool,
|
||||
) -> Crawler:
|
||||
prepare_output_dirs(out_dir, feed.name)
|
||||
settings = build_feed_settings(base_settings, out_dir=out_dir, feed_name=feed.name)
|
||||
prepare_output_dirs(out_dir, feed.slug)
|
||||
settings = build_feed_settings(base_settings, out_dir=out_dir, feed_slug=feed.slug)
|
||||
return Crawler(RssFeedSpider, settings, init_reactor=init_reactor)
|
||||
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ def run_feeds(
|
|||
reactor.stop()
|
||||
return
|
||||
|
||||
logger.info("Starting feed %s", feed.name)
|
||||
logger.info("Starting feed %s (%s)", feed.name, feed.slug)
|
||||
crawler = create_feed_crawler(
|
||||
base_settings=base_settings,
|
||||
out_dir=out_dir,
|
||||
|
|
@ -97,17 +97,17 @@ def run_feeds(
|
|||
)
|
||||
needs_reactor_init = False
|
||||
|
||||
deferred = process.crawl(crawler, feed_name=feed.name, url=feed.url)
|
||||
deferred = process.crawl(crawler, feed_name=feed.slug, url=feed.url)
|
||||
|
||||
def handle_success(_: object) -> None:
|
||||
logger.info("Feed %s completed successfully", feed.name)
|
||||
results.append((feed.name, None))
|
||||
logger.info("Feed %s (%s) completed successfully", feed.name, feed.slug)
|
||||
results.append((feed.slug, None))
|
||||
return None
|
||||
|
||||
def handle_error(failure: Failure) -> None:
|
||||
logger.error("Feed %s encountered an error", feed.name)
|
||||
logger.error("Feed %s (%s) encountered an error", feed.name, feed.slug)
|
||||
logger.critical("%s", failure.getTraceback())
|
||||
results.append((feed.name, failure))
|
||||
results.append((feed.slug, failure))
|
||||
return None
|
||||
|
||||
deferred.addCallbacks(handle_success, handle_error)
|
||||
|
|
@ -123,9 +123,19 @@ def entrypoint(argv: list[str] | None = None) -> int:
|
|||
args = parse_args(argv)
|
||||
try:
|
||||
config = load_config(args.config)
|
||||
except FileNotFoundError:
|
||||
logger.error("Config file not found: %s", Path(args.config).expanduser())
|
||||
logger.error("Use --config PATH or create repub.toml in the project root")
|
||||
except FileNotFoundError as error:
|
||||
missing_path = (
|
||||
Path(error.filename).expanduser()
|
||||
if error.filename
|
||||
else Path(args.config).expanduser()
|
||||
)
|
||||
logger.error("Config file not found: %s", missing_path)
|
||||
logger.error(
|
||||
"Use --config PATH, create repub.toml in the project root, or fix feed_config_files"
|
||||
)
|
||||
return 2
|
||||
except ValueError as error:
|
||||
logger.error("Invalid config: %s", error)
|
||||
return 2
|
||||
base_settings = build_base_settings(config)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue