Initial commit: qBittorrent & SMB AI Video Performer Sorter with in-browser streaming preview, Intellisense & SQLite persistence

This commit is contained in:
david
2026-08-16 19:00:16 -04:00
commit 6aadc53335
5 changed files with 4838 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
# qBittorrent & SMB AI Video Performer Sorter
An automated, AI-powered media organizer with in-browser video streaming, multi-performer candidate selection, directory-backed Intellisense, and SQLite persistent caching for **qBittorrent** and **SMB/TrueNAS** video shares.
---
## Features
- **Dual-Tab Media Sorter**:
- **qBittorrent Library Sorter**: Analyzes torrent titles & internal files and moves torrent content seamlessly without breaking active seeding.
- **SMB / Network Share Sorter**: Directly scans video shares (`/mnt/isolation/videos/videodownloader`), parses performer names, and relocates them into categorized folders (`/mnt/isolation/videos/<performer>/`).
- **Multi-AI Provider Support**:
- **Google Gemini** (Gemini 2.5/3.0+ models)
- **Anthropic Claude** (Claude 3.5 Sonnet, Haiku, Opus)
- **OpenAI** (GPT-4o, GPT-4o-mini)
- **Local / Network LLM Fallback** (LM Studio / Ollama on `odysseus.local` or localhost with auto-failover on rate limits)
- **Multi-Performer Candidate Selection**:
- Automatically identifies scenes with multiple co-stars (e.g. `Kendra Lust and Lisa Ann` or `Alison Rey Reagan Foxx`).
- Renders distinct clickable candidate pills so you can easily choose which performer folder receives the file.
- **In-Browser Video Streaming & Preview**:
- Built-in HTTP 206 Partial Content video streaming server.
- Watch videos directly inside the browser with fast seeking, speed controls (0.75x–2.0x), and skip buttons (-30s, +30s).
- Pick performer candidates and approve moves directly from inside the preview player modal with playlist navigation (`◀ Prev` / `Next ▶`).
- **Directory-Backed Performer Intellisense**:
- Real-time autocomplete dropdown drawn from your existing video library (hundreds of performer folders) as you type.
- **SQLite Persistent Caching**:
- Saves all AI analysis results, candidate lists, and move statuses to `performer_sorter.db`.
- Never wastes API tokens re-analyzing previously scanned files.
---
## Quick Start
### 1. Requirements
- Python 3.8+ (Standard library only — zero external Python package dependencies required!)
- CIFS/SMB share mounted or access to qBittorrent WebUI.
### 2. Start the Server
```bash
python3 server.py
```
### 3. Open in Browser
Visit **`http://localhost:8000`** (or your machine's IP on port 8000).
---
## Configuration
Expand the **Configuration & Engine Settings** bar at the top of the web UI to configure:
- **qBittorrent WebUI**: Host URL, Username, Password, and Target Root (`/isolation/videos`).
- **SMB Share Settings**: Source path (`/mnt/isolation/videos/videodownloader`) and Target root (`/mnt/isolation/videos`).
- **AI Settings**: API Provider, API Key, Model name, and optional Local LLM endpoint (`http://odysseus.local:1234/v1`).
- **Naming Format**: `firstname.lastname`, `performername`, or `Firstname.Lastname`.