diff options
| author | user@node5.net <user@node5.net> | 2026-06-28 21:25:56 +0200 |
|---|---|---|
| committer | user@node5.net <user@node5.net> | 2026-06-28 21:25:56 +0200 |
| commit | 50ab73d694f474ecb7e61db0d56a9f1ef769e70c (patch) | |
| tree | 0160033753e48d729509b034e5f8628ab7daf411 | |
| parent | 8e42b509a485307b18686f14ca693eedceb51f6d (diff) | |
pixel flut, move progress to start of line for more stable parsing
| -rw-r--r-- | src/program.py | 5 | ||||
| -rwxr-xr-x | src/program_parser.py | 8 | ||||
| -rw-r--r-- | src/text_tv.py | 2 |
3 files changed, 7 insertions, 8 deletions
diff --git a/src/program.py b/src/program.py index b70e501..16634ce 100644 --- a/src/program.py +++ b/src/program.py @@ -3,9 +3,6 @@ import os from program_parser import program_parser_factory, Event def main(): - ''' - Get program in text for, for pixel flut client - ''' program_parser = program_parser_factory() lines: int = int(os.environ["LINES"]) if "LINES" in os.environ else 100 @@ -14,7 +11,7 @@ def main(): programs_formatted_list = [] last_event = None for event in events_to_show: - programs_formatted_list.append(f"{event.title} {event.time} {event.icon} {event.progress if event.progress > 0 else ''}") + programs_formatted_list.append(f"{f"{int(event.progress):03d}"} {event.title} {event.time} {event.icon}") if last_event and last_event.day != event.day: # Day change programs_formatted_list += [f'', '', event.day,''] diff --git a/src/program_parser.py b/src/program_parser.py index 7233c49..54c5a9b 100755 --- a/src/program_parser.py +++ b/src/program_parser.py @@ -18,7 +18,7 @@ class Event: time: str = None duration: datetime.timedelta = None pretty: str = None - progress: int = None + progress: float = 0 class ProgramParser: @@ -69,7 +69,7 @@ class ProgramParser: program = sorted(program, key=lambda x: x.start_date) return program - def get_events_to_show(self, program: list[Event], lines=4) -> list[Event]: + def get_events_to_show(self, program: list[Event], lines=1000) -> list[Event]: current_datetime = datetime.datetime.now() if not self.override_date else self.override_date #current_datetime = datetime.datetime(year=2025, month=7, day=18, hour=15, minute=30) # DEBUG # Get events to show @@ -100,7 +100,9 @@ class ProgramParser: event_to_show.pretty = format_program(event_to_show) duration_sec = (event_to_show.end_date - event_to_show.start_date).total_seconds() progress_sec = (current_datetime - event_to_show.end_date).total_seconds() - event_to_show.progress = 100 + (progress_sec / duration_sec) * 100 + progress = 100 + (progress_sec / duration_sec) * 100 + if progress > 0: + event_to_show.progress = progress return events_to_show diff --git a/src/text_tv.py b/src/text_tv.py index 1a5a290..c0baf90 100644 --- a/src/text_tv.py +++ b/src/text_tv.py @@ -21,7 +21,7 @@ def top(): @app.route('/program.json') def program(): - events_to_show: list[Event] = program_parser.get_events_to_show(program_parser.get_program(), programs_to_show_count = 1000) + events_to_show: list[Event] = program_parser.get_events_to_show(program_parser.get_program()) #{event.title} {day} {start_time}-{end_time} {icon} json = [{'title': a.title, 'day': a.day, 'time': a.time, 'progress': a.progress, 'icon': a.icon} for a in events_to_show] return json |
