diff options
Diffstat (limited to 'src/text_tv.py')
| -rw-r--r-- | src/text_tv.py | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/src/text_tv.py b/src/text_tv.py index 21ff2e8..abd86e2 100644 --- a/src/text_tv.py +++ b/src/text_tv.py @@ -12,33 +12,51 @@ app = flask.Flask(__name__, template_folder='templates', static_folder='static', debug = 'PROD' not in os.environ - +@app.route('/top', defaults={'width': 34}) +@app.route('/top/<width>') @app.route('/top') -def top(): +def top(width: int): now = datetime.datetime.now() if not program_parser.override_date else program_parser.override_date - return ' '.join(['BornHack', 'S105', now.strftime("%a %d %b"), now.strftime("%R:%S")]) + parts = ['BornHack', 'S105', now.strftime("%a %d %b"), now.strftime("%R:%S")] + parts_length = len(''.join(parts)) + padding_length = width - parts_length + padding = int(padding_length / (len(parts) - 1)) + top = (' ' * padding).join(parts) + remainder = width - len(top) + top = top + " " * remainder + return top @app.route('/update') def update(): return top() + '\n' + flask.render_template('program.html', parts=text()) -@app.route('/program.json') -def program(): - events_to_show: list[Event] = program_parser.get_events_to_show(program_parser.get_program()) +@app.route('/program.json', defaults={'width': 34}) +@app.route('/program.json/<width>') +def program(width: int): + title_max_length = width - 17 # Truncate the title minus the length of the date, icon and associated whitespace + print(f'title_max_length: {title_max_length}') + events_to_show: list[Event] = program_parser.get_events_to_show(program_parser.get_program(), title_max_length=title_max_length) #{event.title} {day} {start_time}-{end_time} {icon} return events_to_show -@app.route('/text') -def text() -> dict[str, str]: - return {part: eval(part)() for part in ['top', 'program']} +@app.route("/text/", defaults={'width': 34}) +@app.route("/text/<width>") +def text(width: int) -> dict[str, str]: + return {part: eval(part)(width=width) for part in ['top', 'program']} @app.route('/') def index(): - scale = flask.request.args.get("scale", "2") - return flask.render_template('index.html', parts=text(), scale=scale) + arg_defaults = { + 'scale': 2, + 'line_height': 1.5, + 'width': 50, + } + args = {key: flask.request.args.get(key, value) for key, value in arg_defaults.items()} + args['width'] = int(args['width']) + return flask.render_template('index.html', parts=text(width=args['width']), **args) def main(): |
