summaryrefslogtreecommitdiff
path: root/geshem.py
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2017-10-21 18:10:55 +0300
committerYuval Adam <_@yuv.al>2017-10-21 18:10:55 +0300
commit535389cd00f66b6d7c2087c4c42b0021a90a80f1 (patch)
tree27e7af3ef3508fda98041213a8e18367d22f55f3 /geshem.py
parentaaea9e2ce63494072c6bb6b5a92be97dfb03a11b (diff)
Bye bye python
Diffstat (limited to 'geshem.py')
-rw-r--r--geshem.py77
1 files changed, 0 insertions, 77 deletions
diff --git a/geshem.py b/geshem.py
deleted file mode 100644
index b192e08..0000000
--- a/geshem.py
+++ /dev/null
@@ -1,77 +0,0 @@
-import redis
-import requests
-
-from datetime import datetime
-from flask import Flask, jsonify, render_template
-from os import environ, listdir
-from pathlib import Path
-from pytz import utc, timezone
-from redis.exceptions import ConnectionError
-
-MAPS_JSON = 'http://map.govmap.gov.il/rainradar/radar.json'
-STATIC_DIR = Path(__file__).resolve().parents[0] / 'static'
-
-app = Flask(__name__)
-redis = redis.from_url(environ.get('REDIS_URL', 'redis://localhost'))
-
-def fetch_latest_images(local=False):
- maps_json = requests.get(MAPS_JSON).json()
- for r in ['images140', 'images280']:
- imgs = sorted(maps_json[r].items(), key=lambda x: x[0], reverse=True)
- res = r[-3:]
- for ts, url in imgs:
- if not local:
- if redis.get('processed:{}:{}'.format(res, ts)):
- continue
- else:
- redis.set('processed:{}:{}'.format(res, ts), '1')
- dt = datetime.strptime(ts, '%Y:%m:%d:%H:%M').strftime('%Y%m%d_%H%M%S')
- image = requests.get('http://' + url)
- if not local:
- redis.set('latest_{}'.format(res), dt)
- else:
- dt = 'dev'
- filename = '{}_{}.png'.format(dt, res)
- with open(str(STATIC_DIR / 'img' / filename), 'wb+') as f:
- f.write(image.content)
-
-def get_imgs():
- img_files = sorted(
- filter(
- lambda f: f.endswith('.png'), listdir(str(STATIC_DIR / 'img'))
- ), reverse=True
- )
- img_140_files = list(filter(lambda f: f.endswith('140.png'), img_files))
- img_280_files = list(filter(lambda f: f.endswith('280.png'), img_files))
- imgs = {
- '140': img_140_files[:7],
- '280': img_280_files[:7]
- }
- return imgs
-
-@app.route('/imgs')
-def imgs():
- return jsonify(get_imgs())
-
-@app.route('/')
-def home():
- return render_template('index.html', imgs=get_imgs())
-
-@app.after_request
-def update_images(response):
- # poor man's background task
- try:
- if not redis.get('fresh'):
- redis.setex('fresh', 'yes', 60)
- fetch_latest_images()
- except ConnectionError as e:
- if app.debug:
- fetch_latest_images(local=True)
- return response
-
-@app.context_processor
-def inject_debug():
- return dict(debug=app.debug)
-
-if __name__ == '__main__':
- app.run(host='0.0.0.0', debug=True)