projects
/
kiosk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changes needed to get the kiosk to run on the rpi.
[kiosk.git]
/
chooser.py
diff --git
a/chooser.py
b/chooser.py
index 35d38b5ad9ede0e4a3f1170dc31051fcb0f06c70..3fecc09717ff47c43988d76ac167b79cc2e4ef3d 100644
(file)
--- a/
chooser.py
+++ b/
chooser.py
@@
-8,7
+8,7
@@
import random
import re
import sys
import time
import re
import sys
import time
-from typing import Callable, List, Optional, Set, Tuple
+from typing import
Any,
Callable, List, Optional, Set, Tuple
import constants
import trigger
import constants
import trigger
@@
-43,21
+43,21
@@
class chooser(ABC):
return filenames
@abstractmethod
return filenames
@abstractmethod
- def choose_next_page(self) ->
str
:
+ def choose_next_page(self) ->
Any
:
pass
class weighted_random_chooser(chooser):
"""Chooser that does it via weighted RNG."""
pass
class weighted_random_chooser(chooser):
"""Chooser that does it via weighted RNG."""
- def __init__(self, filter_list:
List[Callable[[str], bool
]]) -> None:
+ def __init__(self, filter_list:
Optional[List[Callable[[str], bool]
]]) -> None:
self.last_choice = ""
self.valid_filename = re.compile("([^_]+)_(\d+)_([^\.]+)\.html")
self.pages: Optional[List[str]] = None
self.count = 0
self.last_choice = ""
self.valid_filename = re.compile("([^_]+)_(\d+)_([^\.]+)\.html")
self.pages: Optional[List[str]] = None
self.count = 0
- self.filter_list
= filter_list
- if filter_list is None:
- self.filter_list
= []
+ self.filter_list
: List[Callable[[str], bool]] = []
+ if filter_list is
not
None:
+ self.filter_list
.extend(filter_list)
self.filter_list.append(self.dont_choose_page_twice_in_a_row_filter)
def dont_choose_page_twice_in_a_row_filter(self, choice: str) -> bool:
self.filter_list.append(self.dont_choose_page_twice_in_a_row_filter)
def dont_choose_page_twice_in_a_row_filter(self, choice: str) -> bool:
@@
-66,7
+66,7
@@
class weighted_random_chooser(chooser):
self.last_choice = choice
return True
self.last_choice = choice
return True
- def choose_next_page(self) ->
str
:
+ def choose_next_page(self) ->
Any
:
if self.pages is None or self.count % 100 == 0:
self.pages = self.get_page_list()
if self.pages is None or self.count % 100 == 0:
self.pages = self.get_page_list()
@@
-110,13
+110,13
@@
class weighted_random_chooser_with_triggers(weighted_random_chooser):
def __init__(
self,
def __init__(
self,
- trigger_list:
List[trigger.trigger
],
+ trigger_list:
Optional[List[trigger.trigger]
],
filter_list: List[Callable[[str], bool]],
) -> None:
weighted_random_chooser.__init__(self, filter_list)
filter_list: List[Callable[[str], bool]],
) -> None:
weighted_random_chooser.__init__(self, filter_list)
- self.trigger_list
= trigger_list
- if trigger_list is None:
- self.trigger_list
= []
+ self.trigger_list
: List[trigger.trigger] = []
+ if trigger_list is
not
None:
+ self.trigger_list
.extend(trigger_list)
self.page_queue: Set[Tuple[str, int]] = set(())
def check_for_triggers(self) -> bool:
self.page_queue: Set[Tuple[str, int]] = set(())
def check_for_triggers(self) -> bool:
@@
-136,6
+136,7
@@
class weighted_random_chooser_with_triggers(weighted_random_chooser):
triggered = self.check_for_triggers()
# First try to satisfy from the page queue.
triggered = self.check_for_triggers()
# First try to satisfy from the page queue.
+ now = datetime.datetime.now()
if len(self.page_queue) > 0:
print("chooser: Pulling page from queue...")
page = None
if len(self.page_queue) > 0:
print("chooser: Pulling page from queue...")
page = None
@@
-149,6
+150,12
@@
class weighted_random_chooser_with_triggers(weighted_random_chooser):
self.page_queue.remove((page, priority))
return (page, triggered)
self.page_queue.remove((page, priority))
return (page, triggered)
+ # Always show the clock in the middle of the night.
+ elif now.hour < 7:
+ for page in self.pages:
+ if "clock" in page:
+ return (page, False)
+
# Fall back on weighted random choice.
else:
return (weighted_random_chooser.choose_next_page(self), False)
# Fall back on weighted random choice.
else:
return (weighted_random_chooser.choose_next_page(self), False)