X-Git-Url: https://git.josue.xyz/?p=dotfiles%2F.git;a=blobdiff_plain;f=.local%2Flib%2Fpython3.9%2Fsite-packages%2Fpywal%2Fimage.py;fp=.local%2Flib%2Fpython3.9%2Fsite-packages%2Fpywal%2Fimage.py;h=897f443ca795bc88d352d7b094e9c10b0fbd7978;hp=0000000000000000000000000000000000000000;hb=be62f45026507330c54b0d3ace90aceb312e1841;hpb=812379a745a7f23788c538f26d71c84232bf09cc diff --git a/.local/lib/python3.9/site-packages/pywal/image.py b/.local/lib/python3.9/site-packages/pywal/image.py new file mode 100644 index 00000000..897f443c --- /dev/null +++ b/.local/lib/python3.9/site-packages/pywal/image.py @@ -0,0 +1,84 @@ +""" +Get the image file. +""" +import logging +import os +import random +import re +import sys + +from .settings import CACHE_DIR +from . import util +from . import wallpaper + + +def get_image_dir(img_dir): + """Get all images in a directory.""" + current_wall = wallpaper.get() + current_wall = os.path.basename(current_wall) + + file_types = (".png", ".jpg", ".jpeg", ".jpe", ".gif") + + return [img.name for img in os.scandir(img_dir) + if img.name.lower().endswith(file_types)], current_wall + + +def get_random_image(img_dir): + """Pick a random image file from a directory.""" + images, current_wall = get_image_dir(img_dir) + + if len(images) > 2 and current_wall in images: + images.remove(current_wall) + + elif not images: + logging.error("No images found in directory.") + sys.exit(1) + + random.shuffle(images) + return os.path.join(img_dir, images[0]) + + +def get_next_image(img_dir): + """Get the next image in a dir.""" + images, current_wall = get_image_dir(img_dir) + images.sort(key=lambda img: [int(x) if x.isdigit() else x + for x in re.split('([0-9]+)', img)]) + + try: + next_index = images.index(current_wall) + 1 + + except ValueError: + next_index = 0 + + try: + image = images[next_index] + + except IndexError: + image = images[0] + + return os.path.join(img_dir, image) + + +def get(img, cache_dir=CACHE_DIR, iterative=False): + """Validate image input.""" + if os.path.isfile(img): + wal_img = img + + elif os.path.isdir(img): + if iterative: + wal_img = get_next_image(img) + + else: + wal_img = get_random_image(img) + + else: + logging.error("No valid image file found.") + sys.exit(1) + + wal_img = os.path.abspath(wal_img) + + # Cache the image file path. + util.save_file(wal_img, os.path.join(cache_dir, "wal")) + + logging.info("Using image \033[1;37m%s\033[0m.", os.path.basename(wal_img)) + return wal_img