@@ -1,13 +1,16 @@ | |||||
# Copyright 2015 Adafruit Industries. | # Copyright 2015 Adafruit Industries. | ||||
# Author: Tony DiCola | # Author: Tony DiCola | ||||
# License: GNU GPLv2, see LICENSE.txt | # License: GNU GPLv2, see LICENSE.txt | ||||
import random | |||||
class Playlist(object): | class Playlist(object): | ||||
"""Representation of a playlist of movies.""" | """Representation of a playlist of movies.""" | ||||
def __init__(self, movies): | |||||
def __init__(self, movies, is_random): | |||||
"""Create a playlist from the provided list of movies.""" | """Create a playlist from the provided list of movies.""" | ||||
self._movies = movies | self._movies = movies | ||||
self._index = None | self._index = None | ||||
self._is_random = is_random | |||||
def get_next(self): | def get_next(self): | ||||
"""Get the next movie in the playlist. Will loop to start of playlist | """Get the next movie in the playlist. Will loop to start of playlist | ||||
@@ -16,14 +19,19 @@ class Playlist(object): | |||||
# Check if no movies are in the playlist and return nothing. | # Check if no movies are in the playlist and return nothing. | ||||
if len(self._movies) == 0: | if len(self._movies) == 0: | ||||
return None | return None | ||||
# Start at the first movie and increment through them in order. | |||||
if self._index is None: | |||||
self._index = 0 | |||||
# Start Random movie | |||||
if self._is_random: | |||||
self._index = random.randrange(0, len(self._movies)) | |||||
else: | else: | ||||
self._index += 1 | |||||
# Wrap around to the start after finishing. | |||||
if self._index >= len(self._movies): | |||||
self._index = 0 | |||||
# Start at the first movie and increment through them in order. | |||||
if self._index is None: | |||||
self._index = 0 | |||||
else: | |||||
self._index += 1 | |||||
# Wrap around to the start after finishing. | |||||
if self._index >= len(self._movies): | |||||
self._index = 0 | |||||
return self._movies[self._index] | return self._movies[self._index] | ||||
def length(self): | def length(self): | ||||
@@ -53,6 +53,7 @@ class VideoLooper(object): | |||||
self._reader = self._load_file_reader() | self._reader = self._load_file_reader() | ||||
# Load other configuration values. | # Load other configuration values. | ||||
self._osd = self._config.getboolean('video_looper', 'osd') | self._osd = self._config.getboolean('video_looper', 'osd') | ||||
self._is_random = self._config.getboolean('video_looper', 'is_random') | |||||
# Parse string of 3 comma separated values like "255, 255, 255" into | # Parse string of 3 comma separated values like "255, 255, 255" into | ||||
# list of ints for colors. | # list of ints for colors. | ||||
self._bgcolor = map(int, self._config.get('video_looper', 'bgcolor') \ | self._bgcolor = map(int, self._config.get('video_looper', 'bgcolor') \ | ||||
@@ -130,7 +131,7 @@ class VideoLooper(object): | |||||
if self._is_number(sound_vol_string): | if self._is_number(sound_vol_string): | ||||
self._sound_vol = int(float(sound_vol_string)) | self._sound_vol = int(float(sound_vol_string)) | ||||
# Create a playlist with the sorted list of movies. | # Create a playlist with the sorted list of movies. | ||||
return Playlist(sorted(movies)) | |||||
return Playlist(sorted(movies), self._is_random) | |||||
def _blank_screen(self): | def _blank_screen(self): | ||||
"""Render a blank screen filled with the background color.""" | """Render a blank screen filled with the background color.""" | ||||
@@ -33,6 +33,9 @@ file_reader = usb_drive | |||||
osd = true | osd = true | ||||
#osd = false | #osd = false | ||||
# To play random playlist. | |||||
is_random = false | |||||
# Change the color of the background that is displayed behind movies (only works | # Change the color of the background that is displayed behind movies (only works | ||||
# with omxplayer). Provide 3 numeric values from 0 to 255 separated by a commma | # with omxplayer). Provide 3 numeric values from 0 to 255 separated by a commma | ||||
# for the red, green, and blue color value. Default is 0, 0, 0 or black. | # for the red, green, and blue color value. Default is 0, 0, 0 or black. | ||||