chore(playout): use EventKind enum
This commit is contained in:
parent
97b723d0a5
commit
b8056a9f7a
|
@ -0,0 +1,10 @@
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class EventKind(str, Enum):
|
||||||
|
FILE = "file"
|
||||||
|
EVENT = "event"
|
||||||
|
STREAM_BUFFER_START = "stream_buffer_start"
|
||||||
|
STREAM_OUTPUT_START = "stream_output_start"
|
||||||
|
STREAM_BUFFER_END = "stream_buffer_end"
|
||||||
|
STREAM_OUTPUT_END = "stream_output_end"
|
|
@ -1,6 +0,0 @@
|
||||||
FILE = "file"
|
|
||||||
EVENT = "event"
|
|
||||||
STREAM_BUFFER_START = "stream_buffer_start"
|
|
||||||
STREAM_OUTPUT_START = "stream_output_start"
|
|
||||||
STREAM_BUFFER_END = "stream_buffer_end"
|
|
||||||
STREAM_OUTPUT_END = "stream_output_end"
|
|
|
@ -3,7 +3,7 @@ from datetime import datetime, timedelta
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from . import eventtypes
|
from .events import EventKind
|
||||||
from .telnetliquidsoap import TelnetLiquidsoap
|
from .telnetliquidsoap import TelnetLiquidsoap
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,13 +25,13 @@ class PypoLiquidsoap:
|
||||||
return self.telnet_liquidsoap
|
return self.telnet_liquidsoap
|
||||||
|
|
||||||
def play(self, media_item):
|
def play(self, media_item):
|
||||||
if media_item["type"] == eventtypes.FILE:
|
if media_item["type"] == EventKind.FILE:
|
||||||
self.handle_file_type(media_item)
|
self.handle_file_type(media_item)
|
||||||
elif media_item["type"] == eventtypes.EVENT:
|
elif media_item["type"] == EventKind.EVENT:
|
||||||
self.handle_event_type(media_item)
|
self.handle_event_type(media_item)
|
||||||
elif media_item["type"] == eventtypes.STREAM_BUFFER_START:
|
elif media_item["type"] == EventKind.STREAM_BUFFER_START:
|
||||||
self.telnet_liquidsoap.start_web_stream_buffer(media_item)
|
self.telnet_liquidsoap.start_web_stream_buffer(media_item)
|
||||||
elif media_item["type"] == eventtypes.STREAM_OUTPUT_START:
|
elif media_item["type"] == EventKind.STREAM_OUTPUT_START:
|
||||||
if (
|
if (
|
||||||
media_item["row_id"]
|
media_item["row_id"]
|
||||||
!= self.telnet_liquidsoap.current_prebuffering_stream_id
|
!= self.telnet_liquidsoap.current_prebuffering_stream_id
|
||||||
|
@ -40,9 +40,9 @@ class PypoLiquidsoap:
|
||||||
# so that the prebuffering stage could take effect. Let's do the prebuffering now.
|
# so that the prebuffering stage could take effect. Let's do the prebuffering now.
|
||||||
self.telnet_liquidsoap.start_web_stream_buffer(media_item)
|
self.telnet_liquidsoap.start_web_stream_buffer(media_item)
|
||||||
self.telnet_liquidsoap.start_web_stream(media_item)
|
self.telnet_liquidsoap.start_web_stream(media_item)
|
||||||
elif media_item["type"] == eventtypes.STREAM_BUFFER_END:
|
elif media_item["type"] == EventKind.STREAM_BUFFER_END:
|
||||||
self.telnet_liquidsoap.stop_web_stream_buffer()
|
self.telnet_liquidsoap.stop_web_stream_buffer()
|
||||||
elif media_item["type"] == eventtypes.STREAM_OUTPUT_END:
|
elif media_item["type"] == EventKind.STREAM_OUTPUT_END:
|
||||||
self.telnet_liquidsoap.stop_web_stream_output()
|
self.telnet_liquidsoap.stop_web_stream_output()
|
||||||
else:
|
else:
|
||||||
raise UnknownMediaItemType(str(media_item))
|
raise UnknownMediaItemType(str(media_item))
|
||||||
|
@ -123,13 +123,11 @@ class PypoLiquidsoap:
|
||||||
|
|
||||||
try:
|
try:
|
||||||
scheduled_now_files = [
|
scheduled_now_files = [
|
||||||
x for x in scheduled_now if x["type"] == eventtypes.FILE
|
x for x in scheduled_now if x["type"] == EventKind.FILE
|
||||||
]
|
]
|
||||||
|
|
||||||
scheduled_now_webstream = [
|
scheduled_now_webstream = [
|
||||||
x
|
x for x in scheduled_now if x["type"] in (EventKind.STREAM_OUTPUT_START)
|
||||||
for x in scheduled_now
|
|
||||||
if x["type"] in (eventtypes.STREAM_OUTPUT_START)
|
|
||||||
]
|
]
|
||||||
|
|
||||||
schedule_ids = {x["row_id"] for x in scheduled_now_files}
|
schedule_ids = {x["row_id"] for x in scheduled_now_files}
|
||||||
|
@ -202,7 +200,7 @@ class PypoLiquidsoap:
|
||||||
self.liq_queue_tracker[queue] = None
|
self.liq_queue_tracker[queue] = None
|
||||||
|
|
||||||
def is_file(self, media_item):
|
def is_file(self, media_item):
|
||||||
return media_item["type"] == eventtypes.FILE
|
return media_item["type"] == EventKind.FILE
|
||||||
|
|
||||||
def clear_queue_tracker(self):
|
def clear_queue_tracker(self):
|
||||||
for i in self.liq_queue_tracker.keys():
|
for i in self.liq_queue_tracker.keys():
|
||||||
|
|
|
@ -9,6 +9,8 @@ from libretime_shared.datetime import (
|
||||||
time_in_seconds,
|
time_in_seconds,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from .events import EventKind
|
||||||
|
|
||||||
EVENT_KEY_FORMAT = "%Y-%m-%d-%H-%M-%S"
|
EVENT_KEY_FORMAT = "%Y-%m-%d-%H-%M-%S"
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,7 +66,7 @@ def generate_file_events(
|
||||||
schedule_end_event_key = datetime_to_event_key(schedule["ends"])
|
schedule_end_event_key = datetime_to_event_key(schedule["ends"])
|
||||||
|
|
||||||
events[schedule_start_event_key] = {
|
events[schedule_start_event_key] = {
|
||||||
"type": "file",
|
"type": EventKind.FILE,
|
||||||
"independent_event": False,
|
"independent_event": False,
|
||||||
"row_id": schedule["id"],
|
"row_id": schedule["id"],
|
||||||
"start": schedule_start_event_key,
|
"start": schedule_start_event_key,
|
||||||
|
@ -104,7 +106,7 @@ def generate_webstream_events(
|
||||||
schedule_end_event_key = datetime_to_event_key(schedule["ends"])
|
schedule_end_event_key = datetime_to_event_key(schedule["ends"])
|
||||||
|
|
||||||
events[schedule_start_event_key] = {
|
events[schedule_start_event_key] = {
|
||||||
"type": "stream_buffer_start",
|
"type": EventKind.STREAM_BUFFER_START,
|
||||||
"independent_event": True,
|
"independent_event": True,
|
||||||
"row_id": schedule["id"],
|
"row_id": schedule["id"],
|
||||||
"start": datetime_to_event_key(schedule["starts"] - timedelta(seconds=5)),
|
"start": datetime_to_event_key(schedule["starts"] - timedelta(seconds=5)),
|
||||||
|
@ -114,7 +116,7 @@ def generate_webstream_events(
|
||||||
}
|
}
|
||||||
|
|
||||||
events[f"{schedule_start_event_key}_0"] = {
|
events[f"{schedule_start_event_key}_0"] = {
|
||||||
"type": "stream_output_start",
|
"type": EventKind.STREAM_OUTPUT_START,
|
||||||
"independent_event": True,
|
"independent_event": True,
|
||||||
"row_id": schedule["id"],
|
"row_id": schedule["id"],
|
||||||
"start": schedule_start_event_key,
|
"start": schedule_start_event_key,
|
||||||
|
@ -127,7 +129,7 @@ def generate_webstream_events(
|
||||||
|
|
||||||
# NOTE: stream_*_end were previously triggerered 1 second before the schedule end.
|
# NOTE: stream_*_end were previously triggerered 1 second before the schedule end.
|
||||||
events[schedule_end_event_key] = {
|
events[schedule_end_event_key] = {
|
||||||
"type": "stream_buffer_end",
|
"type": EventKind.STREAM_BUFFER_END,
|
||||||
"independent_event": True,
|
"independent_event": True,
|
||||||
"row_id": schedule["id"],
|
"row_id": schedule["id"],
|
||||||
"start": schedule_end_event_key,
|
"start": schedule_end_event_key,
|
||||||
|
@ -137,7 +139,7 @@ def generate_webstream_events(
|
||||||
}
|
}
|
||||||
|
|
||||||
events[f"{schedule_end_event_key}_0"] = {
|
events[f"{schedule_end_event_key}_0"] = {
|
||||||
"type": "stream_output_end",
|
"type": EventKind.STREAM_OUTPUT_END,
|
||||||
"independent_event": True,
|
"independent_event": True,
|
||||||
"row_id": schedule["id"],
|
"row_id": schedule["id"],
|
||||||
"start": schedule_end_event_key,
|
"start": schedule_end_event_key,
|
||||||
|
|
Loading…
Reference in New Issue