Files
moonlight-drive-in/SETUP.md

6.8 KiB

Moonlight Drive-In Setup Guide

Complete setup instructions for the Moonlight Drive-In theater system.

📋 Prerequisites

System Requirements

  • Operating System: Windows 10/11 (primary), Linux (experimental)
  • Python: Version 3.8 or higher
  • MPV: Media player library
  • NFC Reader: ACS ACR122 or compatible USB reader

Hardware Setup

  1. Connect NFC reader to USB port
  2. Connect display/projector
  3. Ensure stable network connection (for web interface)

🔧 Installation

Step 1: Install Python Dependencies

# Install all required packages
pip install -r web_requirements.txt

# Or install individually
pip install python-mpv flask flask-socketio pynput psutil

Step 2: Install MPV Player

Windows:

  1. Download MPV from https://mpv.io/installation/
  2. Extract to C:\DriveIn\mpv\ or update PATH in batch files
  3. Ensure mpv.exe is in system PATH

Linux:

sudo apt install mpv python3-mpv

Step 3: Configure Directories

The system will auto-create required directories on first run:

videos/
  ├── trailers/      # Trailer video files
  ├── specific/      # Single movie files
  └── groupvideos/   # Folder sequences

🎬 Video Setup

Adding Trailers

  1. Place trailer videos in videos/trailers/
  2. Supported formats: .mp4, .avi, .mov, .mkv, .wmv, .flv, .webm, .m4v
  3. Trailers play randomly between movies

Adding Single Movies

  1. Place movie files in videos/specific/
  2. Note the filename (without extension)
  3. Map to NFC tags in videos/key_mapping.txt

Example:

videos/specific/avengers-endgame.mp4

Mapping in videos/key_mapping.txt:

12345678,avengers-endgame

Creating Folder Sequences

For multi-part movies or series:

  1. Create a folder in videos/groupvideos/
videos/groupvideos/LOTR/
  1. Add numbered videos:
videos/groupvideos/LOTR/01_fellowship.mp4
videos/groupvideos/LOTR/02_towers.mp4
videos/groupvideos/LOTR/03_return.mp4
  1. Map to NFC in videos/folder_mapping.txt:
11111111,LOTR
  1. Each NFC scan plays the next video in sequence!

🏷️ NFC Configuration

Reading NFC IDs

Use the debug console's "NFC Test" field to read your tags:

  1. Start the player
  2. Click in the "NFC Test" field
  3. Scan your NFC tag
  4. The ID will appear in the field
  5. Copy this ID for your mapping files

Mapping Files

videos/key_mapping.txt - Single videos:

# Format: NFC_ID, Movie_Name
12345678,avengers
87654321,spider-man

videos/folder_mapping.txt - Folder sequences:

# Format: NFC_ID, Folder_Name
11111111,LOTR
22222222,Avengers

Validation

Run the validation script to check your setup:

python validate.bat

This checks:

  • All video files exist
  • Mapping files are valid
  • NFC IDs are properly configured
  • Reports missing files

🚀 Running the System

Basic Mode (MPV Only)

# Windows
movie.bat

# Or directly
python mpv_main_fixed.py

Web Interface Mode

# Windows
start_web_player.bat

# Or directly
python web_mpv_main.py

Access web interface at:

Features Available

Debug Console:

  • Real-time log viewing
  • Manual NFC testing
  • Quick controls
  • Statistics display
  • Folder sequence reset

Web Interface:

  • Multi-page dashboard
  • Statistics page
  • Control page
  • Video selection
  • System management

🎮 Usage

Playing Videos

  1. NFC Scan: Simply scan an NFC tag to play mapped video
  2. Manual Selection: Use web interface to select videos
  3. Trailers: Play automatically between movies

Folder Sequences

  1. Scan NFC tag to play first video in sequence
  2. Video plays to completion
  3. Returns to trailer mode
  4. Next scan plays second video
  5. Continues through sequence, then loops

Controls

Keyboard (when focused):

  • Numbers + Enter: Manual NFC input

Web Interface:

  • Skip Video
  • Toggle Fullscreen
  • Mute/Unmute
  • Manual video selection

Debug Console:

  • Skip Video button
  • Toggle Fullscreen
  • Mute/Unmute
  • Reset Folder Sequences

🔧 Troubleshooting

NFC Reader Not Working

  1. Check USB connection
  2. Verify driver installation
  3. Test with NFC Test field in debug console
  4. Check global input capture status

Videos Won't Play

  1. Run validation script
  2. Check video format is supported
  3. Verify file paths in mapping files
  4. Check MPV is installed and in PATH

Web Interface Not Accessible

  1. Check firewall allows port 8547
  2. Verify Flask and Flask-SocketIO installed
  3. Check IP address is correct for network access
  4. Try http://localhost:8547 first

Folder Sequences Not Advancing

  1. Check folder_state.json in videos folder
  2. Use "Reset Folder Sequences" in debug console
  3. Verify folder structure is correct
  4. Check videos are named in correct order

📊 Advanced Configuration

Changing Web Port

Edit web_mpv_main.py:

web_port = 8547  # Change to your preferred port

Or pass as command line argument:

python web_mpv_main.py 9000

Custom Video Directories

Edit paths in config.py:

VIDEOS_DIR = BASE_DIR / "videos"
TRAILERS_DIR = VIDEOS_DIR / "trailers"

Anti-Repeat Settings

Edit mpv_seamless_player.py:

self.max_recent_trailers = 36  # Don't repeat within last N plays

Logging Level

Edit config.py:

LOG_LEVEL = logging.DEBUG  # Change to INFO, WARNING, or ERROR

🔄 Maintenance

Reloading Mappings

Without restart:

  1. Edit mapping files
  2. Use web interface → System → Reload Mappings
  3. Or press "Reload Mappings" in debug console

Clearing Folder State

To restart all sequences from beginning:

  1. Debug Console → "Reset Folder Sequences" button
  2. Or delete videos/folder_state.json

Log Files

Logs stored in logs/ directory:

  • Named by timestamp
  • Rotated automatically
  • Contains detailed debugging info

📝 Best Practices

  1. File Naming: Use numbers for ordering (01_, 02_, etc.)
  2. Video Formats: Prefer .mp4 for compatibility
  3. Backup Mappings: Keep copies of mapping files
  4. Test First: Use validation script before deployment
  5. Network: Use static IP for consistent web access

🆘 Support

Check the logs in logs/ directory for detailed error messages.

Run diagnostics:

python folder_diagnostic.py  # Check folder structure
python validate_videos.py    # Validate complete setup

🎯 Quick Start Checklist

  • Python 3.8+ installed
  • MPV player installed
  • Required packages installed (pip install -r web_requirements.txt)
  • Videos placed in appropriate directories
  • NFC tags mapped in configuration files
  • Validation script run successfully
  • Test with manual NFC input
  • Web interface accessible
  • NFC reader connected and working

You're ready to go! 🎬