# 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 ```bash # 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:** ```bash 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/ ``` 2. Add numbered videos: ``` videos/groupvideos/LOTR/01_fellowship.mp4 videos/groupvideos/LOTR/02_towers.mp4 videos/groupvideos/LOTR/03_return.mp4 ``` 3. Map to NFC in `videos/folder_mapping.txt`: ``` 11111111,LOTR ``` 4. 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: ```bash 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) ```bash # Windows movie.bat # Or directly python mpv_main_fixed.py ``` ### Web Interface Mode ```bash # Windows start_web_player.bat # Or directly python web_mpv_main.py ``` Access web interface at: - Local: http://localhost:8547 - Network: http://[your-ip]:8547 ### 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`: ```python web_port = 8547 # Change to your preferred port ``` Or pass as command line argument: ```bash python web_mpv_main.py 9000 ``` ### Custom Video Directories Edit paths in `config.py`: ```python VIDEOS_DIR = BASE_DIR / "videos" TRAILERS_DIR = VIDEOS_DIR / "trailers" ``` ### Anti-Repeat Settings Edit `mpv_seamless_player.py`: ```python self.max_recent_trailers = 36 # Don't repeat within last N plays ``` ### Logging Level Edit `config.py`: ```python 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: ```bash 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! 🎬