import uNextcloud import sdcard, uos import inky_helper as ih import inky_frame import gc import random import time 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") from secrets import WIFI_SSID, WIFI_PASSWORD, NEXTCLOUD_USERNAME, NEXTCLOUD_PASSWORD, NEXTCLOUD_URL try: ih.network_connect_better(WIFI_SSID, WIFI_PASSWORD) except RuntimeError as e: print(f' connect error: {e}') write_err(f' connect error: {e}') #Likely a network oops uos.umount("/sd") #machine.soft_reset() #Don't start right away inky_frame.sleep_for(60) try: nc = uNextcloud.uNextcloud(NEXTCLOUD_URL) nc.set_auth(NEXTCLOUD_USERNAME, NEXTCLOUD_PASSWORD) response = nc.get_folder_items("eink-frame") except OSError as e: print(f' nextcloud error: {e}') write_err(f' nextcloud error: {e}') #Likely a network oops uos.umount("/sd") #machine.soft_reset() #Don't start right away inky_frame.sleep_for(60) inky_frame.set_time() try: last = open('/sd/last_wallpaper', 'r') last_file = last.read() last.close() except OSError: last_file = "" if response != None: for item in response: if item.url_path == last_file: response.remove(item) random.seed(time.time()) ran = random.choice(response) if ran.mimetype == "image/jpeg": with open('/sd/last_wallpaper', 'w+') as update_last: update_last.write(ran.url_path) print(ran.url_path) print(gc.mem_free()) nc.download_file_to_path(ran.url_path, "/sd/current_image.jpg") from picographics import PicoGraphics, DISPLAY_INKY_FRAME_7 as DISPLAY from jpegdec import JPEG graphics = PicoGraphics(DISPLAY) j = JPEG(graphics) j.open_file("/sd/current_image.jpg") j.decode() graphics.update() uos.umount("/sd") inky_frame.sleep_for(360)