| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #!/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
|