install stuff

This commit is contained in:
2025-09-25 15:16:52 +02:00
parent cfd1b0bc43
commit 89ad062d42
4 changed files with 172 additions and 12 deletions

View File

@@ -176,7 +176,7 @@ IR codes are mapped in `/etc/video_player/ir_mapping.json`:
1. **Start IR learning mode**: 1. **Start IR learning mode**:
```bash ```bash
sudo python3 /opt/video_player/ir_remote.py sudo /opt/video_player/venv/bin/python /opt/video_player/ir_remote.py
``` ```
2. **Press buttons** on your remote control 2. **Press buttons** on your remote control

View File

@@ -117,13 +117,20 @@ install_packages() {
install_python_dependencies() { install_python_dependencies() {
print_status "Installing Python dependencies..." print_status "Installing Python dependencies..."
# Install pip packages # Create virtual environment
pip3 install --upgrade pip python3 -m venv "$INSTALL_DIR/venv"
pip3 install \
# Activate virtual environment and install packages
source "$INSTALL_DIR/venv/bin/activate"
# Upgrade pip in virtual environment
pip install --upgrade pip
# Install packages in virtual environment
pip install \
python-vlc \ python-vlc \
python-dotenv \ python-dotenv \
psutil \ psutil \
pathlib \
PyYAML \ PyYAML \
RPi.GPIO \ RPi.GPIO \
pigpio \ pigpio \
@@ -133,7 +140,10 @@ install_python_dependencies() {
numpy \ numpy \
opencv-python-headless opencv-python-headless
print_success "Python dependencies installed" # Deactivate virtual environment
deactivate
print_success "Python dependencies installed in virtual environment"
} }
# Function to create directories # Function to create directories
@@ -166,6 +176,7 @@ copy_files() {
cp video_player.py "$INSTALL_DIR/" cp video_player.py "$INSTALL_DIR/"
cp ir_remote.py "$INSTALL_DIR/" cp ir_remote.py "$INSTALL_DIR/"
cp config_manager.py "$INSTALL_DIR/" cp config_manager.py "$INSTALL_DIR/"
cp test_venv_setup.py "$INSTALL_DIR/"
# Copy USB auto-mount script # Copy USB auto-mount script
cp usb_automount.sh "$INSTALL_DIR/" cp usb_automount.sh "$INSTALL_DIR/"
@@ -472,6 +483,12 @@ EOF
cat > /usr/local/bin/video-player-usb << 'EOF' cat > /usr/local/bin/video-player-usb << 'EOF'
#!/bin/bash #!/bin/bash
/opt/video_player/usb_automount.sh "$@" /opt/video_player/usb_automount.sh "$@"
EOF
# Create test script
cat > /usr/local/bin/video-player-test << 'EOF'
#!/bin/bash
/opt/video_player/venv/bin/python /opt/video_player/test_venv_setup.py
EOF EOF
# Set permissions # Set permissions
@@ -498,15 +515,17 @@ display_summary() {
echo "Restart: video-player-restart" echo "Restart: video-player-restart"
echo "Status: video-player-status" echo "Status: video-player-status"
echo "Logs: video-player-logs" echo "Logs: video-player-logs"
echo "Test: video-player-test"
echo "USB: video-player-usb {scan|mount-all}" echo "USB: video-player-usb {scan|mount-all}"
echo echo
echo "Next Steps:" echo "Next Steps:"
echo "===========" echo "==========="
echo "1. Add video files to: $VIDEO_FOLDER" echo "1. Test the installation: video-player-test"
echo "2. Insert USB drives - they will auto-mount to: /media/usb/" echo "2. Add video files to: $VIDEO_FOLDER"
echo "3. Configure IR remote codes in: $CONFIG_DIR/ir_mapping.json" echo "3. Insert USB drives - they will auto-mount to: /media/usb/"
echo "4. Start the service: video-player-start" echo "4. Configure IR remote codes in: $CONFIG_DIR/ir_mapping.json"
echo "5. Check status: video-player-status" echo "5. Start the service: video-player-start"
echo "6. Check status: video-player-status"
echo echo
echo "For more information, see the documentation in $INSTALL_DIR" echo "For more information, see the documentation in $INSTALL_DIR"
} }

141
test_venv_setup.py Normal file
View File

@@ -0,0 +1,141 @@
#!/usr/bin/env python3
"""
Test script to verify virtual environment setup
This script tests if the virtual environment is properly configured
"""
import sys
import os
import subprocess
from pathlib import Path
def test_virtual_environment():
"""Test if virtual environment is properly set up"""
print("Testing Virtual Environment Setup")
print("=" * 40)
# Check if we're in a virtual environment
if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
print("✅ Running in virtual environment")
print(f" Python executable: {sys.executable}")
print(f" Virtual env path: {sys.prefix}")
else:
print("❌ Not running in virtual environment")
print(f" Python executable: {sys.executable}")
return False
# Test required packages
required_packages = [
'vlc',
'dotenv',
'psutil',
'yaml',
'RPi.GPIO',
'pigpio',
'requests',
'PIL',
'numpy',
'cv2'
]
print("\nTesting Required Packages:")
print("-" * 30)
missing_packages = []
for package in required_packages:
try:
if package == 'yaml':
import yaml
elif package == 'PIL':
from PIL import Image
elif package == 'cv2':
import cv2
else:
__import__(package)
print(f"{package}")
except ImportError:
print(f"{package} - Missing")
missing_packages.append(package)
if missing_packages:
print(f"\n❌ Missing packages: {', '.join(missing_packages)}")
return False
else:
print("\n✅ All required packages are available")
# Test VLC
print("\nTesting VLC:")
print("-" * 15)
try:
import vlc
instance = vlc.Instance()
print("✅ VLC instance created successfully")
except Exception as e:
print(f"❌ VLC test failed: {e}")
return False
# Test GPIO (if on Raspberry Pi)
print("\nTesting GPIO:")
print("-" * 15)
try:
import RPi.GPIO as GPIO
print("✅ RPi.GPIO module available")
except ImportError:
print("⚠️ RPi.GPIO not available (may not be on Raspberry Pi)")
except Exception as e:
print(f"❌ GPIO test failed: {e}")
return False
print("\n✅ Virtual environment setup test passed!")
return True
def test_installation_paths():
"""Test if installation paths are correct"""
print("\nTesting Installation Paths")
print("=" * 30)
install_dir = Path("/opt/video_player")
venv_dir = install_dir / "venv"
config_dir = Path("/etc/video_player")
paths_to_check = [
(install_dir, "Installation directory"),
(venv_dir, "Virtual environment directory"),
(venv_dir / "bin" / "python", "Virtual environment Python"),
(config_dir, "Configuration directory"),
(install_dir / "video_player.py", "Main video player script"),
(install_dir / "ir_remote.py", "IR remote script"),
(install_dir / "config_manager.py", "Config manager script")
]
all_good = True
for path, description in paths_to_check:
if path.exists():
print(f"{description}: {path}")
else:
print(f"{description}: {path} - Missing")
all_good = False
return all_good
def main():
"""Main test function"""
print("Video Player Virtual Environment Test")
print("=" * 50)
# Test installation paths
paths_ok = test_installation_paths()
# Test virtual environment
venv_ok = test_virtual_environment()
print("\n" + "=" * 50)
if paths_ok and venv_ok:
print("🎉 All tests passed! Virtual environment is properly configured.")
return 0
else:
print("❌ Some tests failed. Please check the installation.")
return 1
if __name__ == "__main__":
sys.exit(main())

View File

@@ -9,7 +9,7 @@ Type=simple
User=root User=root
Group=root Group=root
WorkingDirectory=/opt/video_player WorkingDirectory=/opt/video_player
ExecStart=/usr/bin/python3 /opt/video_player/video_player.py ExecStart=/opt/video_player/venv/bin/python /opt/video_player/video_player.py
ExecReload=/bin/kill -HUP $MAINPID ExecReload=/bin/kill -HUP $MAINPID
Restart=always Restart=always
RestartSec=10 RestartSec=10