Files
rpi-tulivision/video_control.py

116 lines
3.2 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Video Control Script
Simple command-line interface for controlling the video player
"""
import os
import sys
import argparse
import subprocess
from pathlib import Path
def run_video_player(args):
"""Run the video player with specified arguments"""
script_dir = Path(__file__).parent
video_player_script = script_dir / "video_player.py"
if not video_player_script.exists():
print(f"Error: video_player.py not found at {video_player_script}")
return False
# Build command
cmd = ["sudo", "python3", str(video_player_script)]
if args.random:
cmd.append("--random")
elif args.channel is not None:
cmd.extend(["--channel", str(args.channel)])
elif args.index is not None:
cmd.extend(["--index", str(args.index)])
elif args.list_channels:
cmd.append("--list-channels")
elif args.list_videos:
cmd.append("--list-videos")
if args.config:
cmd.extend(["--config", args.config])
try:
print(f"Running: {' '.join(cmd)}")
subprocess.run(cmd, check=True)
return True
except subprocess.CalledProcessError as e:
print(f"Error running video player: {e}")
return False
except KeyboardInterrupt:
print("\nInterrupted by user")
return False
def main():
"""Main entry point"""
parser = argparse.ArgumentParser(
description="Video Control - Simple interface for video player",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
python3 video_control.py --random # Play random video
python3 video_control.py --channel 5 # Play channel 5
python3 video_control.py --index 2 # Play video at index 2
python3 video_control.py --list-channels # List channels
python3 video_control.py --list-videos # List videos
"""
)
# Mode arguments (mutually exclusive)
mode_group = parser.add_mutually_exclusive_group()
mode_group.add_argument(
'--random',
action='store_true',
help='Play a random video'
)
mode_group.add_argument(
'--channel',
type=int,
metavar='N',
help='Play specific channel number'
)
mode_group.add_argument(
'--index',
type=int,
metavar='N',
help='Play video at specific index (0-based)'
)
mode_group.add_argument(
'--list-channels',
action='store_true',
help='List available channels and exit'
)
mode_group.add_argument(
'--list-videos',
action='store_true',
help='List available videos with indices and exit'
)
# Configuration arguments
parser.add_argument(
'--config',
type=str,
help='Path to configuration file'
)
args = parser.parse_args()
# Check if at least one mode is specified
if not any([args.random, args.channel is not None, args.index is not None,
args.list_channels, args.list_videos]):
parser.print_help()
return
# Run video player
success = run_video_player(args)
sys.exit(0 if success else 1)
if __name__ == "__main__":
main()