#!/usr/bin/env python3 # -*- coding:utf-8 -*- def loadFontSize(text, imagesize, fontpath): from PIL import ImageFont fontsize = 1 # starting font size font = ImageFont.truetype(fontpath, fontsize) splittext = text.splitlines() while True: fontsize += 1 font = ImageFont.truetype(fontpath, fontsize) # fsize = draw.textsize(text, font=font) fsize = getFontSize(font, splittext) print("Fontsize:", font.size, fsize, imagesize) if ((fsize[0] >= imagesize[0]) or (fsize[1] >= imagesize[1])): break fontsize -= 1 font = ImageFont.truetype(fontpath, fontsize) fsize = getFontSize(font, splittext) print("Fontsize:", font.size, fsize, imagesize) return font def getFontSize(font,splittext): fsize = [0,0] for l in splittext: fs = font.getsize(l) if fsize[0] < fs[0]: fsize[0] = fs[0] fsize[1] += fs[1] print("Fs:", fsize,fs) return fsize def wrapText(text, aspect_ratio, font_factor=3): import textwrap text = " ".join(text.split()) iter_width = len(text) splittext = [text] longestline = getLongestLine(splittext) while len(longestline) > font_factor * aspect_ratio * len(splittext): iter_width -= 1 splittext = textwrap.wrap(text, width=iter_width) longestline = getLongestLine(splittext) print("Wrap:", iter_width, "Rows:",len(splittext)) return "\n".join(splittext) def fitText(isize, fontpath, text): text = wrapText(text, (isize[0]/isize[1])) font = loadFontSize(text, isize, fontpath) return text, font def getLongestLine(split): longline = "" for l in split: if len(l) > len(longline): longline = l return longline def convert_qr(quote): import qrcode qr = qrcode.QRCode(version=1, box_size=3, border=1) qr.add_data("https://css.tsimnet.eu") qr.make() return qr.make_image().get_image() def getQuote( maxLength=100 ): try: import requests # r = requests.get('https://type.fit/api/quotes') r = requests.get('http://api.quotable.io/random?maxLength='+str(maxLength)) r = r.json() text = r except Exception as ex: return return text def getRedditJson(reddit,res,interval): import requests from urllib.parse import urlencode base_url = f"https://www.reddit.com/r/{reddit}/{res}.json" headers = { 'User-agent': 'raspi-zero-waveshare' } params = urlencode({ "t": interval, }) url = base_url + '?' + str(params) print(url) r = requests.get(url, headers=headers) return r.json() def short_url(text): import requests from urllib.parse import urlencode try: params = urlencode({ "url": text, }) r = requests.get('https://tinyurl.com/api-create.php?'+str(params)) t = r.text except Exception as ex: t = str(ex)[:100] return t