Smart auto-tagging: suggest folder groups for unfiled channels (3.4)
New autotag.rs classifies each unfiled channel from already-scanned metadata — source platform + median video duration + upload cadence — into a suggested folder group (Music / Shorts / Long-form & Podcasts / Streams & VODs), with a confidence and a human-readable reason. Mid-length YouTube is left unsuggested rather than guessed at; channels already in a folder are skipped. Pure arithmetic over the in-memory library, computed on demand (no background job). Surfaced in both Maintenance views: - web: GET /api/autotag/suggest + POST /api/autotag/apply (create/reuse the named folder and assign), rendered with per-channel checkboxes and an "Apply -> group" button that re-analyzes after applying. - desktop: a section listing each group with a "Move all -> group" button. Apply mirrors post_assign_folder: DB write + in-memory library update + ETag bump. Reuses an existing folder of the same name (case-insensitive). Unit tests cover the classifier; verified the apply/revert round-trip live. ROADMAP 3.4 marked DONE. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
aed577ea2f
commit
ec8cf6f934
7 changed files with 658 additions and 4 deletions
17
ROADMAP.md
17
ROADMAP.md
|
|
@ -140,11 +140,20 @@ Native client over the existing web API. Background download via
|
|||
WorkManager + JobScheduler. Push notifications via Tailscale-routed
|
||||
HTTPS or a userland push channel.
|
||||
|
||||
### 3.4 Smart auto-tagging
|
||||
### 3.4 Smart auto-tagging — DONE
|
||||
|
||||
Cluster channels by uploader frequency, content type, and metadata.
|
||||
Suggest groups ("looks like a music channel — move to Music?"). Builds
|
||||
on Phase 1.2's group system.
|
||||
`autotag.rs` classifies each *unfiled* channel from already-scanned
|
||||
metadata — source platform plus the median video duration and upload
|
||||
cadence — into a suggested folder group: "Music" (music platforms or
|
||||
audio-only channels), "Shorts" (median < 90 s / TikTok), "Long-form &
|
||||
Podcasts" (median > 25 min), or "Streams & VODs" (Twitch). Mid-length
|
||||
YouTube is deliberately left unsuggested rather than guessed at. Each
|
||||
suggestion carries a confidence and a human reason ("median length 76 s;
|
||||
~1/mo"). Surfaced in both Maintenance views: the web shows per-channel
|
||||
checkboxes + "Apply → group" (POST /api/autotag/apply creates/reuses the
|
||||
folder and assigns), desktop shows "Move all → group". Pure arithmetic
|
||||
over the in-memory library, so it's recomputed on demand with no job.
|
||||
Never moves anything until you apply.
|
||||
|
||||
### 3.5 Federation / multi-host
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue