Set min jpeg size. Organize logging into single method. Use auto GC instead of manual. Better file handling.

This commit is contained in:
2023-11-05 16:12:23 -05:00
parent 70ce4477a8
commit 345e27b345
3 changed files with 22 additions and 23 deletions

View File

@@ -1,2 +1,2 @@
#!/bin/bash
convert "$1" -resize '800x480!' -define modulate:colorspace=HSB -modulate 100,120 -level 2% -quality 70 "${1%.*}.inky.jpeg"
convert "$1" -resize '800x480!' -define modulate:colorspace=HSB -modulate 100,120 -level 2% -quality 60 -define jpeg:extent=120kb "${1%.*}.inky.jpeg"

19
main.py
View File

@@ -5,20 +5,25 @@ import inky_frame
import gc
import random
def write_err(text):
with open('/sd/errors.log', 'a+') as error_log:
error_log.write(f'{text} \n')
gc.enable()
gc.threshold(50000)
sd_spi = machine.SPI(0, sck=machine.Pin(18, machine.Pin.OUT), mosi=machine.Pin(19, machine.Pin.OUT), miso=machine.Pin(16, machine.Pin.OUT))
sd = sdcard.SDCard(sd_spi, machine.Pin(22))
uos.mount(sd, "/sd")
gc.collect()
from secrets import WIFI_SSID, WIFI_PASSWORD, NEXTCLOUD_USERNAME, NEXTCLOUD_PASSWORD
try:
ih.network_connect_better(WIFI_SSID, WIFI_PASSWORD)
except RuntimeError as e:
print(e)
with open('/sd/errors.log', 'a+') as error_log:
error_log.write(f'{e} \n')
write_err(e)
#Likely a network oops, try starting again
uos.umount("/sd")
machine.soft_reset()
try:
@@ -27,9 +32,9 @@ try:
response = nc.get_folder_items("eink-frame")
except OSError as e:
print(e)
with open('/sd/errors.log', 'a+') as error_log:
error_log.write(f'{e} \n')
write_err(e)
#Likely a network oops, try starting again
uos.umount("/sd")
machine.soft_reset()
try:
@@ -48,9 +53,8 @@ if response != None:
with open('/sd/last_wallpaper', 'w+') as update_last:
update_last.write(ran.url_path)
print(ran.url_path)
gc.collect()
print(gc.mem_free())
nc.download_file_to_path(ran.url_path, "/sd/current_image.jpg")
gc.collect()
from picographics import PicoGraphics, DISPLAY_INKY_FRAME_7 as DISPLAY
from jpegdec import JPEG
graphics = PicoGraphics(DISPLAY)
@@ -60,4 +64,5 @@ if response != None:
j.decode()
graphics.update()
uos.umount("/sd")
inky_frame.sleep_for(180)

View File

@@ -1,5 +1,4 @@
import urequests
import gc, sys
import ElementTree
@@ -40,33 +39,28 @@ class uNextcloud:
if content_type != None:
file_list.append(self.File(href.text, content_type.text))
response.close()
gc.collect()
return file_list
except AttributeError:
response.close()
gc.collect()
return None
else:
response.close()
gc.collect()
return None
def download_file_to_path(self, url_path, destination_path):
response = urequests.request("GET", self.url+url_path, auth=(self.username, self.password))
if 200 <= response.status_code < 300:
dest = open(destination_path, 'wb')
data = bytearray(1024)
len = 0
with open(destination_path, 'wb') as dest:
data = bytearray(1024)
while True:
print(f"downloaded {len}")
gc.collect()
if response.raw.readinto(data) == 0:
break
len += 1024
dest.write(data)
dest.close()
dest.flush()
response.close()
gc.collect()
else:
response.close()
raise Exception()