From 2c84a53df309cb3082c3213e8f3b556aaadc9372 Mon Sep 17 00:00:00 2001 From: Lukas Winkler Date: Sat, 28 Apr 2018 18:22:11 +0200 Subject: [PATCH 1/3] open graph data and image --- server.py | 40 ++++++++++++++++++++++++++++++++++++---- templates/base.html | 11 +++++++++-- templates/detail.html | 12 +++++++++++- templates/list.html | 11 +++++++++++ templates/quiz.html | 12 ++++++++++-- utils.py | 1 + 6 files changed, 78 insertions(+), 9 deletions(-) diff --git a/server.py b/server.py index 3f9de76..ef30825 100644 --- a/server.py +++ b/server.py @@ -1,10 +1,12 @@ import subprocess import time +from io import BytesIO from random import shuffle, randint import sass +from PIL import ImageFont, Image, ImageDraw from flask import render_template, send_from_directory, abort, session, jsonify, make_response, redirect, url_for, \ - request + request, send_file from flask_limiter import Limiter from flask_limiter.util import get_remote_address from flask_session import Session @@ -157,9 +159,39 @@ def sites(): return jsonify(data) -@app.route('/test') -def sdfdsfds(): - return "" +@app.route('/image') +@app.route('/image/') +@limiter.limit("10 per minute") +def image(site_id=None): + if site_id: + query = Site.select().where((Site.last_download.is_null(False)) & (Site.id == site_id)) + site = get_object_or_404(query) + else: + class DummySite(object): + pass + + site = DummySite() + site.foreground_color = 'black' + site.background_color = 'white' + # parameters + text = "Stack Exchange\nSimulator" + selected_font = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf" + font_size = 70 + W, H = (600, 600) + # # get the size of the text + img = Image.new('RGBA', (W, H), (site.background_color if site.background_color else "white")) + font = ImageFont.truetype(selected_font, font_size) + draw = ImageDraw.Draw(img) + w, h = draw.multiline_textsize(text, font) + + draw.multiline_text(((W - w) / 2, (H - h) / 2), text, + font=font, align="center", + fill=(site.foreground_color if site.foreground_color else "black")) + + byte_io = BytesIO() + img.save(byte_io, 'PNG', optimize=True) + byte_io.seek(0) + return send_file(byte_io, mimetype='image/png') @app.route('/api/vote///', methods=["POST"]) diff --git a/templates/base.html b/templates/base.html index 4427952..1d74383 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,8 +1,8 @@ - + - {% block title %}Stackexchange Simulator{% endblock %} + {% block title %}Stack Exchange Simulator{% endblock %} {% if config['DEBUG'] %} @@ -10,6 +10,13 @@ {% endif %} + + + + + + + {% block extrameta %}{% endblock %}