1
Fork 0
mirror of https://github.com/thegeneralist01/archivr synced 2026-10-09 21:03:17 +02:00

Add YouTube subtitles, local transcription, self-updating yt-dlp/Deno, X Article and thread titles

- Capture YouTube subtitles by default (opt-out in UI, API, CLI --no-subtitles)
- Summarize YouTube videos from subtitles; fetch on demand, then local transcription, then error
- Local transcription fallback: Whisper, Parakeet, Phonon-2 (English only)
- Runtime-resolved, self-updating yt-dlp and Deno JS runtime (fixes YouTube 403s)
- Settings > Instance > yt-dlp: status and in-app update without restart
- X Article titles from article.title, with idempotent startup backfill
- Thread title generation (single and bulk) with per-provider cheap models
- Per-provider title model settings in Settings > Instance
- Docs, mental model, AGENTS.md and transcription spec updated
This commit is contained in:
TheGeneralist 2026-10-05 00:30:39 +02:00
parent 4f3b2968b6
commit 253f779216
35 changed files with 11377 additions and 583 deletions

View file

@ -112,6 +112,25 @@ async fn main() -> Result<()> {
}
}
// Repair legacy bare-link titles on X Article tweets (idempotent; no-op once fixed).
for archive in &registry.archives {
let Ok(paths) = archivr_core::archive::read_archive_paths(&archive.archive_path) else {
continue;
};
match archivr_core::capture::backfill_x_article_titles(&paths) {
Ok(0) => {}
Ok(n) => eprintln!(
"info: retitled {n} X Article entr{} in '{}'",
if n == 1 { "y" } else { "ies" },
archive.id
),
Err(e) => eprintln!(
"warn: X Article title backfill failed for '{}': {e:#}",
archive.id
),
}
}
// Prune staged upload dirs older than 24 h. cleanup_stale_sentinels=true
// because no uploads are in flight before the server starts listening.
let prune_cutoff = std::time::SystemTime::now()

File diff suppressed because it is too large Load diff