Skip to content
deadman36gPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

DVDRewind icon

DVDRewind / Rewind Private Archive

CI

A private, self-hosted archival, parsing, and modernization system for Rewind / DVDCompare (dvdcompare.net) with an interactive cinematic Web UI and built-in Archive Control Center.

⚠️ IMPORTANT FOR AI AGENTS (Claude, Codex, Antigravity, etc.):
Before making any changes or proposing plans, you MUST read AGENTS.md (or CLAUDE.md) first. It outlines active architectural decisions, strict UX guidelines, test constraints, and current task handoffs.

Notice: This project is strictly for personal/private reference and disc collection preservation. It is not intended to be a public clone or redistribution of DVDCompare's content.


Project Boundary: DVDRewind vs. Personal Collection Tracking

DVDRewind is the canonical home for general release research and edition comparison: release discovery, disc/spec information, mastering and transfer notes, broad release history, retailer/source links, and comparisons between editions.

The user's separate Boutique Physical Media Collection Tracker remains spreadsheet-first and owns personal collecting state: owned vs. missing titles, slipcover wanted/secured status, numbered-line completion, preorders, sale targets, prices paid/target prices, and personal collection goals such as Shout Select or selected Kino Lorber lines.

Do not rebuild a second general 4K release database inside that spreadsheet. Conversely, DVDRewind should not become the canonical source for the user's personal ownership/checklist workflow.

Durable cross-project direction: Project Hub — Boutique Physical Media Collection Tracker.


Quick Start (Docker & NAS Deployment)

The fastest and easiest way to deploy DVDRewind 24/7 on your NAS (Synology, Unraid, TrueNAS, QNAP) or home server:

# Clone repository
git clone https://github.com/deadman36g/dvdrewind.git
cd dvdrewind

# Start container with persistent storage
docker compose up -d

Open your browser at http://<your-nas-ip>:8088.


Local Quick Start (Without Docker)

1. Requirements

  • Python 3.12+
# Install dependencies
pip install -r requirements.txt

# Run automated test suite
python -m unittest discover tests

# Launch web server
python -m src.cli serve --host 127.0.0.1 --port 8088

Archive Maintenance & Ingestion Engine

You can manage and update your archive directly in the Web UI from the Archive Control Center. Use Update to Latest / Sync with DVDCompare for normal freshness; it checks current revisions and resumes from the persisted live FID frontier. Deep Verify Archive Tail is the recovery/verification pass that rechecks the tail beginning after the original 76,200 catalog baseline. That 76,200 value is historical provenance only—the UI reports the moving verified-through FID and next scan FID as the current frontier. The terminal interface is a persistent Textual TUI inspired by vintage video-store database software: a three-column Library / Current Work / Intelligence layout, semantic workflow badges, selected-item detail panel, Best Next recommendations, restrained recent activity, search, live population state, and progressive-disclosure keyboard controls. A permanent Library Health area tracks IMDb coverage, artwork coverage, and fully-clean records, while task-specific Active Job graphs show current/total/remaining work and repair counters.

Windows users can install the NAS-aware dvdrewind PowerShell command with:

irm https://raw.githubusercontent.com/deadman36g/dvdrewind/main/scripts/install_windows_cli.ps1 | iex

Then use dvdrewind to open the unified interactive DVD Rewind Archive Console. The left rail answers where am I?, the larger center workspace answers what am I working on?, and the right intelligence rail answers what should I do next? Arrow keys move naturally between navigation and work rows, Enter always opens, inspects, or runs something, and Backspace goes back through prior areas. Dedicated yellow/gold IMDb Repair and purple Artwork Repair workspaces show their real outstanding queues, exact remaining counts, bulk-repair actions, single-title fixes, and live task-colored progress while a repair is running. IMDb auto-repair deliberately saves only exact normalized title matches (and exact release-year matches when a year is known); ambiguous titles remain unresolved instead of being guessed. Successful IMDb repairs can also fill missing artwork in the same pass. Population & Sync shows the moving verified frontier and next scan FID instead of presenting the historical 76,200 baseline as a current number. R refreshes archive data without restarting the app; F5 reloads updated CLI code while preserving the current section/search. I and A jump straight to IMDb and Artwork Repair, H opens the complete grouped shortcut sheet, and menu-started jobs still produce a visible completion state and Windows completion notification. Legacy shortcuts such as dvdrewind new, dvdrewind search "The Thing", and dvdrewind status remain available.

The same operations are also available from the Python command line:

# Interactive full catalog sweep with live curses dashboard
python populate_all.py

# Enhanced read-only live monitor (Q/R/E/N/S/H hotkeys)
python populate_all.py --watch

# Watch only newly discovered titles
python populate_all.py --watch-new

# Search the local archive
python populate_all.py --search "The Thing"

# Retry only FIDs saved as failures from the previous web-managed sync
python populate_all.py --retry-failed

# Update to latest: checks current revisions and resumes the persisted live FID frontier
python populate_all.py --sync

# One-time/full catch-up: re-scan everything added after the original 76,200 cutoff
# (already-ingested titles are skipped)
python populate_all.py --since-initial

# Watch the live Archive Control Center task without starting another crawler
python populate_all.py --watch

# Show one live status snapshot
python populate_all.py --status

# Headless daily sync with auto-vacuum (ideal for crontab on a NAS/server)
python populate_all.py --cron --sync

# Backfill missing posters from TMDB / Wikipedia without re-scraping HTML
python populate_all.py --posters-only

# Check SQLite integrity, optimize FTS5 full-text search index, and VACUUM
python populate_all.py --vacuum

Windows PowerShell helper

DVDRewind runs on the NAS, so Windows should not call the local Docker Desktop daemon. Install the PowerShell helper once:

irm https://raw.githubusercontent.com/deadman36g/dvdrewind/main/scripts/install_windows_cli.ps1 | iex

Then use:

dvdrewind          # persistent three-column Textual Archive Console
dvdrewind status   # one status snapshot
dvdrewind help     # populate_all.py options
dvdrewind web      # open the web UI
dvdrewind shell    # enter the NAS container

The helper connects to deadman36g@192.168.50.39 over SSH and executes inside the NAS dvdrewind container, so Docker Desktop on Windows is not required.


Features

  • Cinematic Web Interface: Netflix-style horizontal shelves, instant search dropdown, authentic BDA pointy hexagon and DVD globe region logos, and side-by-side edition diff tool.
  • Web UI Archive Control Center: 1-click sync with DVDCompare, live activity terminal streaming, database optimization, and poster backfill directly from any browser.
  • TMDB Official Poster Selector: Integrated modal loading top 10 official theatrical and release posters from TMDB with 1-click instant apply.
  • Responsible Crawling: Serial fetcher with randomized jitter (2–3s), exponential backoff, and full SHA-256 integrity verification.
  • Normalized SQLite Database: Clean schema with foreign keys, cascading integrity, versioned migrations, and full raw text retention.
  • Instant FTS5 Search: Sub-millisecond full-text search across titles, AKAs, distributors, countries, and recommendation conclusions.
  • Comprehensive Test Suite: 23 automated unit tests covering parser archetypes, database integrity, and Web APIs.

Project Structure

  • Dockerfile: Multi-stage production container.
  • docker-compose.yml: 1-command NAS deployment with persistent /archive volume.
  • .github/workflows/ci.yml: Automated GitHub Actions testing workflow.
  • src/: Python source code (web server, scraper, parser, database repository, CLI).
  • archive/: Local storage for SQLite database (dvdrewind.db) and posters.
  • tests/: Unit test suite and raw test fixtures (tests/fixtures/).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages