diff --git a/config.py b/config.py index 5e666a9..ce3bda5 100644 --- a/config.py +++ b/config.py @@ -1,3 +1,4 @@ imgdir = "." refresh = 5 -cachedir = ".webslider" +cachedir = "/tmp/webslider" +resolution = (1920, 1080) diff --git a/requirements.txt b/requirements.txt index f1a6954..533b660 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ Flask==1.0.2 Pillow==5.3.0 +Click==7.0 diff --git a/slider.py b/slider.py index da7d743..382e270 100755 --- a/slider.py +++ b/slider.py @@ -13,7 +13,8 @@ import config app = Flask(__name__) -cache_resolution = (1920, 1080) +imgdir = Path(config.imgdir).expanduser().resolve() +cache_resolution = config.resolution cache_dir = Path(config.cachedir) / ("%sx%s" % cache_resolution) @@ -25,7 +26,6 @@ def random(): @app.route("/random_image/") def random_image(): img_glob = "*jpg" - imgdir = Path(config.imgdir) last_modified_time, last_modified_file = max( (f.stat().st_mtime, f) for f in imgdir.glob(img_glob) ) @@ -36,7 +36,7 @@ def random_image(): images = list(imgdir.glob(img_glob)) selected_image = choice(images).relative_to(imgdir) - return redirect(url_for("image", filename=selected_image)) + return redirect(url_for("image", filename=selected_image) + "?hash=%s" % get_cache_filename(selected_image)) @app.route("/img/") @@ -64,7 +64,7 @@ def create_cache_file(filename): if not (cache_dir / cache_file).exists(): print("Creating cache file", filename) - img = Image.open(Path(config.imgdir) / filename) + img = Image.open(imgdir / filename) img.thumbnail(cache_resolution) img.save(cache_dir / cache_file, "JPEG") @@ -72,12 +72,11 @@ def create_cache_file(filename): def get_cache_filename(filename): - original_file_path = Path(config.imgdir) / filename + original_file_path = imgdir / filename return sha256(str(original_file_path.resolve()).encode("utf-8")).hexdigest() def pre_cache_images(): - imgdir = Path(config.imgdir) for image_file in sorted(imgdir.glob("*.jpg")): create_cache_file(image_file.relative_to(imgdir))