fix: address reader-UI feedback (shorts, search, tags, login, UX)
- Shorts: confirm via youtube.com/shorts/<id> probe (SOCS cookie bypasses the consent redirect) instead of a 60s heuristic; concurrent probing, shorts_probed flag, scheduled refinement (migration 0005) - Search: match title + channel name only (descriptions caused noisy results) - Faceted tag filtering: AND across categories (language AND topic narrows), OR within a category; any/all toggle applies to topics - Language detection: majority vote over individual titles (fixes misdetections like multipoleguy -> English; drops bogus Polish/Romanian) - Login: drop forced consent so returning sign-in is quick (select_account) - Feed cards: clickable channel name (opens channel), persistent saved badge, undo toast on hide, Hidden view to restore; tag chips show counts in tooltip
This commit is contained in:
parent
e56502789f
commit
8c245e986f
17 changed files with 306 additions and 35 deletions
|
|
@ -12,6 +12,7 @@ from app.sync.runner import (
|
|||
run_enrich,
|
||||
run_recent_backfill,
|
||||
run_rss_poll,
|
||||
run_shorts,
|
||||
)
|
||||
|
||||
logger = logging.getLogger("subfeed.scheduler")
|
||||
|
|
@ -53,6 +54,10 @@ def _autotag_job() -> None:
|
|||
_job("autotag", lambda db: run_autotag_all(db, only_missing=True))
|
||||
|
||||
|
||||
def _shorts_job() -> None:
|
||||
_job("shorts", run_shorts)
|
||||
|
||||
|
||||
def start_scheduler() -> None:
|
||||
global _scheduler
|
||||
if not settings.scheduler_enabled or _scheduler is not None:
|
||||
|
|
@ -76,6 +81,12 @@ def start_scheduler() -> None:
|
|||
minutes=settings.autotag_interval_minutes,
|
||||
id="autotag",
|
||||
)
|
||||
scheduler.add_job(
|
||||
_shorts_job,
|
||||
"interval",
|
||||
minutes=settings.shorts_probe_interval_minutes,
|
||||
id="shorts",
|
||||
)
|
||||
scheduler.start()
|
||||
_scheduler = scheduler
|
||||
logger.info("scheduler started")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue