Initialer Commit
commit
1a62f4caf0
|
|
@ -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()
|
||||
|
|
@ -0,0 +1 @@
|
|||
requests
|
||||
Loading…
Reference in New Issue