diff --git a/changedetectionio/model/Watch.py b/changedetectionio/model/Watch.py index f6cf8f3b..fd3ce4f4 100644 --- a/changedetectionio/model/Watch.py +++ b/changedetectionio/model/Watch.py @@ -311,22 +311,6 @@ class model(dict): # False is not an option for AppRise, must be type None return None - def get_screenshot_as_jpeg(self): - # Created by save_screenshot() - fname = os.path.join(self.watch_data_dir, "last-screenshot.png") - if os.path.isfile(fname): - import io - # Make a JPEG that's used in notifications (due to being a smaller size) available - from PIL import Image - im = Image.open(fname) - img_byte_arr = io.BytesIO() - im.convert('RGB').save(img_byte_arr, format='JPEG', quality=int(os.getenv("NOTIFICATION_SCREENSHOT_JPG_QUALITY", 75))) - return img_byte_arr.getvalue() - - # False is not an option for AppRise, must be type None - return None - - def __get_file_ctime(self, filename): fname = os.path.join(self.watch_data_dir, filename) if os.path.isfile(fname): diff --git a/changedetectionio/tests/test_notification.py b/changedetectionio/tests/test_notification.py index 9564fcd2..036bf730 100644 --- a/changedetectionio/tests/test_notification.py +++ b/changedetectionio/tests/test_notification.py @@ -73,17 +73,12 @@ def test_check_notification(client, live_server): # We write the PNG to disk, but a JPEG should appear in the notification # Write the last screenshot png testimage_png = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=' - # This one is created when we save the screenshot from the webdriver/playwright session (converted from PNG) - testimage_jpg = '/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AKp//2Q==' uuid = extract_UUID_from_client(client) datastore = 'test-datastore' with open(os.path.join(datastore, str(uuid), 'last-screenshot.png'), 'wb') as f: f.write(base64.b64decode(testimage_png)) -# We no longer create two images -# with open(os.path.join(datastore, str(uuid), 'last-screenshot.jpg'), 'wb') as f: -# f.write(base64.b64decode(testimage_jpg)) # Goto the edit page, add our ignore text # Add our URL to the import page @@ -163,13 +158,12 @@ def test_check_notification(client, live_server): # Check the attachment was added, and that it is a JPEG from the original PNG notification_submission_object = json.loads(notification_submission) - # We actually convert the PNG to JPEG and send it - assert notification_submission_object['attachments'][0]['filename'] == 'last-screenshot.jpg' + # We keep PNG screenshots for now + assert notification_submission_object['attachments'][0]['filename'] == 'last-screenshot.png' assert len(notification_submission_object['attachments'][0]['base64']) - assert notification_submission_object['attachments'][0]['mimetype'] == 'image/jpeg' + assert notification_submission_object['attachments'][0]['mimetype'] == 'image/png' jpeg_in_attachment = base64.b64decode(notification_submission_object['attachments'][0]['base64']) - assert b'JFIF' in jpeg_in_attachment - assert testimage_png not in notification_submission + # Assert that the JPEG is readable (didn't get chewed up somewhere) from PIL import Image import io @@ -301,7 +295,10 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server): follow_redirects=True ) assert b'Settings updated' in res.data - + client.get( + url_for("form_delete", uuid="all"), + follow_redirects=True + ) # Add a watch and trigger a HTTP POST test_url = url_for('test_endpoint', _external=True) res = client.post( diff --git a/changedetectionio/update_worker.py b/changedetectionio/update_worker.py index 3dd1059c..f3536224 100644 --- a/changedetectionio/update_worker.py +++ b/changedetectionio/update_worker.py @@ -74,7 +74,7 @@ class update_worker(threading.Thread): n_object.update({ 'watch_url': watch['url'], 'uuid': watch_uuid, - 'screenshot': watch.get_screenshot_as_jpeg() if watch.get('notification_screenshot') else None, + 'screenshot': watch.get_screenshot() if watch.get('notification_screenshot') else None, 'current_snapshot': snapshot_contents.decode('utf-8'), 'diff': diff.render_diff(watch_history[dates[-2]], watch_history[dates[-1]], line_feed_sep=line_feed_sep), 'diff_added': diff.render_diff(watch_history[dates[-2]], watch_history[dates[-1]], include_removed=False, line_feed_sep=line_feed_sep),