Merge pull request #279 from aceinnolab/feature/#245

text-module enhancement
This commit is contained in:
Ace 2023-11-08 22:30:02 +01:00 committed by GitHub
commit 2b2eca2271
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 37 additions and 43 deletions

View File

@ -6,12 +6,12 @@ Inkycal custom-functions for ease-of-use
Copyright by aceinnolab Copyright by aceinnolab
""" """
import logging import logging
import traceback
from PIL import Image, ImageDraw, ImageFont, ImageColor
import requests
import os import os
import time import time
import traceback
import requests
from PIL import Image, ImageDraw, ImageFont
logs = logging.getLogger(__name__) logs = logging.getLogger(__name__)
logs.setLevel(level=logging.INFO) logs.setLevel(level=logging.INFO)
@ -267,13 +267,14 @@ def internet_available():
>>> if internet_available(): >>> if internet_available():
>>> #...do something that requires internet connectivity >>> #...do something that requires internet connectivity
""" """
for attempt in range(3):
try: try:
requests.get('https://google.com', timeout=5) requests.get('https://google.com', timeout=5)
return True return True
except: except:
print(f"Network could not be reached: {traceback.print_exc()}") print(f"Network could not be reached: {traceback.print_exc()}")
return False time.sleep(5)
return False
def draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1, 0.1)): def draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1, 0.1)):

View File

@ -65,12 +65,6 @@ class TextToDisplay(inkycal_module):
im_black = Image.new('RGB', size=im_size, color='white') im_black = Image.new('RGB', size=im_size, color='white')
im_colour = Image.new('RGB', size=im_size, color='white') im_colour = Image.new('RGB', size=im_size, color='white')
# Check if internet is available
if internet_available():
logger.info('Connection test passed')
else:
raise NetworkNotReachableError
# Set some parameters for formatting feeds # Set some parameters for formatting feeds
line_spacing = 4 line_spacing = 4
text_bbox_height = self.font.getbbox("hg") text_bbox_height = self.font.getbbox("hg")
@ -87,6 +81,11 @@ class TextToDisplay(inkycal_module):
if self.make_request: if self.make_request:
logger.info("Detected http path, making request") logger.info("Detected http path, making request")
# Check if internet is available
if internet_available():
logger.info('Connection test passed')
else:
raise NetworkNotReachableError
file_content = urlopen(self.filepath).read().decode('utf-8') file_content = urlopen(self.filepath).read().decode('utf-8')
else: else:
# Create list containing all lines # Create list containing all lines

View File

@ -28,6 +28,8 @@ class Config:
# inkycal_todoist_test # inkycal_todoist_test
TODOIST_API_KEY = get("TODOIST_API_KEY") TODOIST_API_KEY = get("TODOIST_API_KEY")
TEMP_PATH = f"{basedir}/tmp"

View File

@ -3,14 +3,16 @@ import logging
import os import os
import sys import sys
import unittest import unittest
from inkycal.modules import TextToDisplay as Module
from inkycal.modules import TextToDisplay as Module
from inkycal.modules.inky_image import Inkyimage from inkycal.modules.inky_image import Inkyimage
from inkycal.tests import Config from inkycal.tests import Config
preview = Inkyimage.preview preview = Inkyimage.preview
merge = Inkyimage.merge merge = Inkyimage.merge
file_path = None
temp_path = f"{Config.TEMP_PATH}/temp.txt"
dummy_data = [ dummy_data = [
'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', ' Donec feugiat facilisis neque vel blandit.', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', ' Donec feugiat facilisis neque vel blandit.',
@ -56,7 +58,7 @@ tests = [
"name": "TextToFile", "name": "TextToFile",
"config": { "config": {
"size": [500, 100], "size": [500, 100],
"filepath": file_path, "filepath": temp_path,
"padding_x": 10, "padding_x": 10,
"padding_y": 10, "padding_y": 10,
"fontsize": 12, "fontsize": 12,
@ -68,7 +70,7 @@ tests = [
"name": "TextToFile", "name": "TextToFile",
"config": { "config": {
"size": [500, 400], "size": [500, 400],
"filepath": file_path, "filepath": "https://de.wikipedia.org/wiki/Nationale_Rotkreuz-_und_Rothalbmond-Gesellschaft",
"padding_x": 10, "padding_x": 10,
"padding_y": 10, "padding_y": 10,
"fontsize": 12, "fontsize": 12,
@ -80,31 +82,19 @@ tests = [
class TestTextToDisplay(unittest.TestCase): class TestTextToDisplay(unittest.TestCase):
def setUp(self):
self.temp_path = temp_path
if not os.path.exists(self.temp_path):
print("could not find temporary file, creating now.")
with open(self.temp_path, encoding="utf-8", mode="w") as file:
file.writelines(dummy_data)
def test_get_config(self): def test_get_config(self):
print('getting data for web-ui...', end="") print('getting data for web-ui...', end="")
Module.get_config() Module.get_config()
print('OK') print('OK')
def test_generate_image(self): def test_generate_image(self):
delete_file_after_parse = False
if not file_path:
delete_file_after_parse = True
print("Filepath does not exist. Creating dummy file")
tmp_path = "tmp.txt"
with open(tmp_path, mode="w", encoding="utf-8") as file:
file.writelines(dummy_data)
# update tests with new temp path
for test in tests:
test["config"]["filepath"] = tmp_path
else:
make_request = bool(file_path.startswith("https://"))
if not make_request and not os.path.exists(file_path):
raise FileNotFoundError("Your text file could not be found")
for test in tests: for test in tests:
print(f'test {tests.index(test) + 1} generating image..') print(f'test {tests.index(test) + 1} generating image..')
module = Module(test) module = Module(test)
@ -113,9 +103,10 @@ class TestTextToDisplay(unittest.TestCase):
if Config.USE_PREVIEW: if Config.USE_PREVIEW:
preview(merge(im_black, im_colour)) preview(merge(im_black, im_colour))
if delete_file_after_parse: def tearDown(self):
print("cleaning up temp file") if os.path.exists(self.temp_path):
os.remove("tmp.txt") print("deleting temporary file.")
os.remove(self.temp_path)
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -23,3 +23,4 @@ typing_extensions==4.8.0
urllib3==2.0.7 urllib3==2.0.7
python-dotenv==1.0.0 python-dotenv==1.0.0
setuptools==68.2.2 setuptools==68.2.2
html2text==2020.1.16