Channel features: subscribers, new-videos badges, activity-driven sync

- Store subscriber count from YouTube statistics and show it on channel page
- Sync 50 videos per channel with playlistItems pagination support
- Show per-channel and per-category new-videos counters (2-day window)
- Replace hourly videos sync with activity trigger (2h idle) and
  incremental backfill (hard cap 200 per channel)
- Clicking the sidebar new-videos count filters the category feed to
  recent videos only (new_only)
- Update agent-team docs: deploy after green checks
This commit is contained in:
vrubelroman 2026-09-17 21:07:33 +00:00
parent fde9a439df
commit e10df8dcbd
27 changed files with 1420 additions and 107 deletions

View file

@ -9,6 +9,13 @@ export function formatDuration(seconds: number | null): string | null {
return `${m}:${String(s).padStart(2, '0')}`
}
const SUBSCRIBERS_FMT = new Intl.NumberFormat('ru-RU', { notation: 'compact', maximumFractionDigits: 1 })
export function formatSubscriberCount(value: number | null | undefined): string | null {
if (value == null) return null
return `${SUBSCRIBERS_FMT.format(value)} подписчиков`
}
const RTF = new Intl.RelativeTimeFormat('ru', { numeric: 'auto' })
export function formatRelativeTime(iso: string): string {