add logging

master
Linux User 2018-08-31 12:26:18 +02:00
parent 74641a57ee
commit 00bfc9226d
1 changed files with 27 additions and 5 deletions

View File

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