Add /add page and cli.py for updating feeds
This commit is contained in:
parent
3f3ad42acd
commit
8cea0bd347
8 changed files with 130 additions and 57 deletions
41
app/cli.py
41
app/cli.py
|
|
@ -1,9 +1,11 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import click
|
||||
from reader import Reader, UpdateError
|
||||
from reader import Feed, Reader, UpdateError, UpdateResult
|
||||
from reader.types import UpdatedFeed
|
||||
|
||||
from app.dependencies import get_reader
|
||||
|
||||
|
|
@ -11,19 +13,44 @@ if TYPE_CHECKING:
|
|||
from reader import UpdatedFeed
|
||||
|
||||
|
||||
def add_broken_feed_to_csv(feed: Feed | UpdateResult | None) -> None:
|
||||
"""Add a broken feed to a CSV file."""
|
||||
if feed is None:
|
||||
click.echo("Feed is None.", err=True)
|
||||
return
|
||||
|
||||
with Path("broken_feeds.csv").open("a", encoding="utf-8") as f:
|
||||
f.write(f"{feed.url}\n")
|
||||
|
||||
|
||||
@click.command()
|
||||
def update_feeds() -> None:
|
||||
"""Update all the feeds."""
|
||||
click.echo("Updating feeds...")
|
||||
reader: Reader = get_reader()
|
||||
for feed in reader.update_feeds_iter():
|
||||
click.echo("Updating feeds...")
|
||||
|
||||
for feed in reader.update_feeds_iter(updates_enabled=True, workers=100):
|
||||
url: str = feed.url
|
||||
value: UpdatedFeed | None | UpdateError = feed.value
|
||||
if value is not None and isinstance(value, UpdateError):
|
||||
click.echo(f"Error updating {feed.url}: {value}")
|
||||
else:
|
||||
click.echo(f"Updated {feed.url}.")
|
||||
|
||||
if isinstance(value, UpdateError):
|
||||
add_broken_feed_to_csv(feed)
|
||||
reader.disable_feed_updates(url)
|
||||
continue
|
||||
|
||||
if value is None:
|
||||
click.echo(f"Feed not updated: {url}")
|
||||
continue
|
||||
|
||||
click.echo(f"Updated feed: {url}")
|
||||
|
||||
click.echo("Feeds updated.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
reader: Reader = get_reader()
|
||||
|
||||
for feed in reader.get_feeds(updates_enabled=False):
|
||||
reader.enable_feed_updates(feed)
|
||||
|
||||
update_feeds()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue