commit 1a62f4caf04ea187a654987df57f288e6718e4fc Author: agp8x Date: Fri Aug 17 16:27:43 2018 +0200 Initialer Commit diff --git a/hints.txt b/hints.txt new file mode 100644 index 0000000..7e2c019 --- /dev/null +++ b/hints.txt @@ -0,0 +1 @@ +gtk+3.0 py3-gobject3 \ No newline at end of file diff --git a/qr.py b/qr.py new file mode 100644 index 0000000..e9f52fc --- /dev/null +++ b/qr.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import gi +gi.require_version('Gtk', '3.0') +gi.require_version('GdkPixbuf', '2.0') +from gi.repository import Gtk,GdkPixbuf +from io import BytesIO +import argparse +import threading +import time +from datetime import date + +import requests + +DEFAULT_BASE = "https://www.agp8x.org/temp/new/pchart/" + +def today(): + return date.today().strftime("temp_%d.%m.%Y.png") + +class Updater(threading.Thread): + def __init__(self, target): + threading.Thread.__init__(self) + self.target = target + + def run(self): + while True: + self.target.update() + try: + time.sleep(10*60) + except Exception as e: + print(e, e.args) + + +class Window(object): + def __init__(self, args): + self.window = Gtk.Window() + self.window.set_title("weather") + #self.window.set_default_size(150, 150) + self.window.connect("destroy", self.destroy) + self.window.connect("key-press-event", self.on_key) + self.window.fullscreen() + self.args = args + self.image = Gtk.Image() + self.window.add(self.image) + self.image.show() + self.window.show() + + def destroy(self, data=None): + Gtk.main_quit() + def main(self): + self.updater = Updater(self) + self.updater.start() + Gtk.main() + def on_key(self, event, data=None): + self.destroy() + def update(self): + filename = today() + url = self.args.base_url + "/" + filename + new_image = self.fetch_image(url) + self.image.set_from_pixbuf(new_image) + def fetch_image(self, url): + response = requests.get(url) + with BytesIO(response.content) as buff: + loader = GdkPixbuf.PixbufLoader.new_with_type('png') + loader.write(buff.getvalue()) + pixbuf = loader.get_pixbuf() + loader.close() + return pixbuf + + def image2pixbuf(self, im): + buff = BytesIO() + im.save(buff, 'ppm') + contents = buff.getvalue() + buff.close() + loader = GdkPixbuf.PixbufLoader.new_with_type('png') + loader.write(contents) + pixbuf = loader.get_pixbuf() + loader.close() + return pixbuf + +if __name__=="__main__": + parser = argparse.ArgumentParser() + parser.add_argument("base_url", nargs="?", default=DEFAULT_BASE) + args = parser.parse_args() + window = Window(args) + window.main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..663bd1f --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +requests \ No newline at end of file