summaryrefslogtreecommitdiff
path: root/src/text_tv.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/text_tv.py')
-rw-r--r--src/text_tv.py40
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():