__init__.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. def loadFontSize(text, imagesize, fontpath):
  4. from PIL import ImageFont
  5. fontsize = 1 # starting font size
  6. font = ImageFont.truetype(fontpath, fontsize)
  7. splittext = text.splitlines()
  8. while True:
  9. fontsize += 1
  10. font = ImageFont.truetype(fontpath, fontsize)
  11. fsize = [0,0]
  12. for l in splittext:
  13. fs = font.getsize(l)
  14. if fsize[0] < fs[0]:
  15. fsize[0] = fs[0]
  16. fsize[1] += fs[1]
  17. fsize[1] += 2
  18. print("Fs:", fsize,fs)
  19. # fsize = draw.textsize(text, font=font)
  20. if ((fsize[0] > imagesize[0]) or (fsize[1] > imagesize[1])):
  21. break
  22. print("Fontsize:", font.size, fsize, imagesize)
  23. fontsize -= 1
  24. font = ImageFont.truetype(fontpath, fontsize)
  25. return font
  26. def wrapText(text, aspect_ratio, font_factor=3.2):
  27. import textwrap
  28. text = " ".join(text.split())
  29. iter_width = len(text)
  30. splittext = [text]
  31. longestline = getLongestLine(splittext)
  32. while len(longestline) > font_factor * aspect_ratio * len(splittext):
  33. iter_width -= 1
  34. splittext = textwrap.wrap(text, width=iter_width)
  35. longestline = getLongestLine(splittext)
  36. print("Wrap:", iter_width, "Rows:",len(splittext))
  37. return "\n".join(splittext)
  38. def fitText(isize, fontpath, text):
  39. text = wrapText(text, (isize[0]/isize[1]))
  40. font = loadFontSize(text, isize, fontpath)
  41. return text, font
  42. def getLongestLine(split):
  43. longline = ""
  44. for l in split:
  45. if len(l) > len(longline):
  46. longline = l
  47. return longline
  48. def convert_qr(quote):
  49. import qrcode
  50. qr = qrcode.QRCode(version=1, box_size=3, border=1)
  51. qr.add_data("https://css.tsimnet.eu")
  52. qr.make()
  53. return qr.make_image().get_image()
  54. def getQuote( maxLength=100 ):
  55. try:
  56. import requests
  57. # r = requests.get('https://type.fit/api/quotes')
  58. r = requests.get('http://api.quotable.io/random?maxLength='+str(maxLength))
  59. r = r.json()
  60. text = r
  61. except Exception as ex:
  62. return
  63. return text
  64. def getRedditJson(reddit,res,interval):
  65. import requests
  66. from urllib.parse import urlencode
  67. base_url = f"https://www.reddit.com/r/{reddit}/{res}.json"
  68. headers = {
  69. 'User-agent': 'raspi-zero-waveshare'
  70. }
  71. params = urlencode({
  72. "t": interval,
  73. })
  74. url = base_url + '?' + str(params)
  75. print(url)
  76. r = requests.get(url, headers=headers)
  77. return r.json()
  78. def short_url(text):
  79. import requests
  80. from urllib.parse import urlencode
  81. try:
  82. params = urlencode({
  83. "url": text,
  84. })
  85. r = requests.get('https://tinyurl.com/api-create.php?'+str(params))
  86. t = r.text
  87. except Exception as ex:
  88. t = str(ex)[:100]
  89. return t