diff --git a/Home.md b/Home.md index f9221a6..708f2d9 100644 --- a/Home.md +++ b/Home.md @@ -14,7 +14,7 @@ Tubearr is a self-hosted content archival and monitoring application in the *arr ## Current Status -**Actively developed.** Version 0.1.0. Core monitoring, downloading, and queue management features are functional. The application runs in production on the xpltd infrastructure. +**Actively developed.** Through M004 — feature parity with competing tools (Youtarr, TubeSync, Pinchflat, Tube Archivist). Core monitoring, downloading, queue management, media server integration, and library management features are production-ready. ## Key URLs @@ -23,16 +23,26 @@ Tubearr is a self-hosted content archival and monitoring application in the *arr | **Application** | `https://tubearr.xpltd.co` | | **Repository** | `https://git.xpltd.co/xpltdco/tubearr` | | **Health Check** | `https://tubearr.xpltd.co/ping` | +| **RSS Feed** | `https://tubearr.xpltd.co/api/v1/feed/rss` | ## Core Features - **Channel Monitoring** — Add YouTube channels or SoundCloud artists; Tubearr periodically scans for new content -- **Smart Queue** — Concurrent download queue with retry logic, priority ordering, and rate limiting -- **Format Profiles** — Configurable quality presets (resolution, codec, bitrate, subtitles, SponsorBlock) -- **Multi-Platform** — YouTube, SoundCloud, and any URL supported by yt-dlp +- **Smart Queue** — Concurrent download queue with retry logic, priority ordering, rate limiting, pause/resume per item +- **Format Profiles** — Configurable quality presets (resolution, codec, bitrate, subtitles, SponsorBlock) with output path templates +- **Multi-Platform** — YouTube, SoundCloud, and any URL supported by yt-dlp (1000+ sites) +- **Ad-hoc URL Downloads** — Paste any URL, preview metadata (title, thumbnail, duration), confirm to download +- **Keyword Filtering** — Per-channel include/exclude patterns (plain text, glob, regex) to skip unwanted content +- **Media Server Integration** — Plex and Jellyfin auto-scan on download completion with connection testing +- **NFO Metadata** — Kodi-compatible episodedetails XML sidecars with content ratings (item → channel → global cascade) +- **Missing File Detection** — Scans for removed media files, shows 'missing' badge, one-click re-download +- **Content Type Tabs** — Filter channel content by type (Videos, Shorts, Streams) with count badges - **Real-Time Progress** — WebSocket-based live download progress in the browser UI - **Notifications** — Discord, email, Pushover, and Telegram alerts on grab/download/failure events - **Back-Catalog Import** — Bulk import existing media files into the library +- **Output Path Templates** — Configurable `{platform}/{channel}/{year}/{title}.{ext}` variable syntax with live preview +- **Timezone & Theme** — User-selectable timezone for all timestamps, dark/light theme with flash-free switching +- **RSS Feed** — Podcast-compatible RSS 2.0 feed for downloaded audio content - **REST API** — Full API with key-based authentication for external integrations ## Tech Stack @@ -44,7 +54,7 @@ Tubearr is a self-hosted content archival and monitoring application in the *arr | Database | SQLite (LibSQL) with Drizzle ORM | | Downloader | yt-dlp + ffmpeg | | Build Tool | Vite | -| Testing | Vitest | +| Testing | Vitest (830+ tests) | | Deployment | Docker (multi-stage build) | ## Wiki Pages @@ -66,12 +76,16 @@ Tubearr is a self-hosted content archival and monitoring application in the *arr |------|------------| | **Channel** | A monitored content source — a YouTube channel, SoundCloud artist, or generic URL | | **Content Item** | A single piece of downloadable media (video, audio, or livestream) | -| **Format Profile** | A reusable quality preset defining resolution, codec, subtitles, and post-processing options | -| **Queue Item** | A content item that has been enqueued for download, with status tracking and retry logic | +| **Format Profile** | A reusable quality preset defining resolution, codec, subtitles, output path template, and post-processing options | +| **Queue Item** | A content item that has been enqueued for download, with status tracking, retry logic, and pause/resume | | **Monitoring Mode** | Controls what content Tubearr grabs: `all`, `future` (new only), `existing` (backlog only), or `none` | | **Platform Source** | An adapter for a specific content platform (YouTube, SoundCloud, Generic) | | **yt-dlp** | The command-line tool that handles actual media downloading from 1000+ platforms | | **SponsorBlock** | Community-sourced sponsor segment data; Tubearr can auto-remove sponsor segments during download | +| **Media Server** | A configured Plex or Jellyfin instance that receives automatic library scan triggers after downloads | +| **NFO Sidecar** | A Kodi-compatible XML metadata file generated alongside downloaded media | +| **Content Rating** | A per-item or per-channel rating (TV-Y through NC-17) written into NFO files for media server library categorization | +| **Keyword Filter** | Per-channel include/exclude patterns (plain text, glob, regex) applied during scheduled scans | | ***arr family** | A category of self-hosted media management apps (Sonarr for TV, Radarr for movies, Lidarr for music) | ## Infrastructure Context