diff --git a/display.py b/display.py index e363360..52de9ab 100644 --- a/display.py +++ b/display.py @@ -1,20 +1,30 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +import logging + +logging.basicConfig(level=logging.INFO, +format='%(asctime)s - %(levelname)s - %(message)s', +datefmt='%Y-%m-%d %H:%m:%S') + + import gi gi.require_version('Gtk', '3.0') gi.require_version('GdkPixbuf', '2.0') -from gi.repository import Gtk,GdkPixbuf +from gi.repository import Gtk,GdkPixbuf, GLib from io import BytesIO import argparse import threading import time from datetime import date +import signal import requests DEFAULT_BASE = "https://www.agp8x.org/temp/new/pchart/" +log = logging + def today(): return date.today().strftime("temp_%d.%m.%Y.png") @@ -27,10 +37,11 @@ class Updater(threading.Thread): def run(self): while not self.exit.is_set(): try: + log.info("run update") self.target.update() except Exception as e: - print(e, e.args) - self.exit.wait(10) + log.exception(e) + self.exit.wait(300) class Window(object): @@ -41,13 +52,17 @@ class Window(object): #self.window.set_resizable(False) self.window.connect("destroy", self.destroy) self.window.connect("key-press-event", self.on_key) - self.window.connect("button-press-event", self.on_click) - self.window.fullscreen() + #self.window.connect("button-press-event", self.on_click) self.args = args + if self.args.fullscreen: + log.info("use fullscreen") + self.window.fullscreen() self.image = Gtk.Image() self.window.add(self.image) self.image.show() self.window.show() + GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, +signal.SIGINT, self.destroy) def destroy(self, data=None): if self.updater: @@ -58,16 +73,22 @@ class Window(object): self.updater.start() Gtk.main() def on_click(self, widget, data=None): + log.info("on_click called") self.update() def on_key(self, event, data=None): + log.info("on_key called") self.destroy() def update(self): + log.info("start update") filename = today() url = self.args.base_url + "/" + filename new_image = self.fetch_image(url) self.image.set_from_pixbuf(new_image) + log.info("update finished") def fetch_image(self, url): + log.info("start download") response = requests.get(url) + log.info(f"result({url})={response.status_code}, {response.ok}") with BytesIO(response.content) as buff: loader = GdkPixbuf.PixbufLoader.new_with_type('png') loader.write(buff.getvalue()) @@ -78,6 +99,7 @@ class Window(object): if __name__=="__main__": parser = argparse.ArgumentParser() parser.add_argument("base_url", nargs="?", default=DEFAULT_BASE) + parser.add_argument("-f", "--fullscreen", action="store_false", help="don't start in fullscreen") args = parser.parse_args() window = Window(args) window.main()