From 3cd793ea7856ed67f617d805e86b0a851667f413 Mon Sep 17 00:00:00 2001 From: Kiryl Date: Wed, 3 Aug 2022 16:44:23 +0300 Subject: [PATCH] Update utils to current project --- src/util/check_dirs.py | 8 ++--- src/util/color_reader.py | 64 +++++++++++++++++------------------ src/util/rgb2closest_color.py | 2 +- 3 files changed, 36 insertions(+), 38 deletions(-) diff --git a/src/util/check_dirs.py b/src/util/check_dirs.py index 03920a3..f7a0af0 100644 --- a/src/util/check_dirs.py +++ b/src/util/check_dirs.py @@ -9,7 +9,7 @@ def parse_args(): return args -def check_dir(dir_path): +def check_dir(dir_path: str): if not os.path.exists(dir_path): try: os.mkdir(dir_path) @@ -20,15 +20,13 @@ def check_dir(dir_path): if __name__ == "__main__": folders = parse_args().folders if not folders: - folders = ["docx", "html", "json", "logs", "config"] + folders = ["books/epub", "books/docx", "books/html", "books/json", "logs", "config"] folder_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) folders = [os.path.join(folder_path, folder) for folder in folders] try: - for folder in folders: - check_dir(folder) - + [check_dir(folder) for folder in folders] except OSError as exc: print(exc) raise diff --git a/src/util/color_reader.py b/src/util/color_reader.py index 874e061..92b3ee7 100644 --- a/src/util/color_reader.py +++ b/src/util/color_reader.py @@ -4,7 +4,7 @@ from colorsys import hls_to_rgb from webcolors import html4_hex_to_names, hex_to_rgb, rgb_to_name, rgb_percent_to_hex, rgb_to_hex, css3_names_to_hex -def closest_colour_rgb(requested_color): +def closest_colour_rgb(requested_color: Tuple[int, ...]) -> str: """ Function finds closes colour rgb """ min_colours = {} for key, name in html4_hex_to_names.items(): @@ -17,10 +17,10 @@ def closest_colour_rgb(requested_color): return min_colours[min(min_colours.keys())] -def rgb2color_name(color): +def rgb2color_name(color: Tuple[int, ...]) -> str: """ Transform rgb -> color name """ try: - closest_name = actual_name = rgb_to_name(color, 'html4') + closest_name = actual_name = rgb_to_name(color, "html4") except ValueError: closest_name = closest_colour_rgb(color) actual_name = None @@ -30,15 +30,15 @@ def rgb2color_name(color): return closest_name -def hex2color_name(color): +def hex2color_name(color: str) -> str: """ Transform hex -> color name """ try: color = hex_to_rgb(color) except ValueError: - return '' + return "" try: - closest_name = actual_name = rgb_to_name(color, 'html4') + closest_name = actual_name = rgb_to_name(color, "html4") except ValueError: closest_name = closest_colour_rgb(color) actual_name = None @@ -50,36 +50,36 @@ def hex2color_name(color): def str2closest_html_color_name(s: str) -> str: """ Transform str -> closest color name """ - if 'rgb' in s: - rgb_str = 'rgba' if ('rgba' in s) else 'rgb' - s = s.replace(rgb_str, '').replace('(', '').replace(')', '') + if "rgb" in s: + rgb_str = "rgba" if ("rgba" in s) else "rgb" + s = s.replace(rgb_str, "").replace("(", "").replace(")", "") try: - rgb = [int(x) for x in s.split(',')[:3]] + rgb = [int(x) for x in s.split(",")[:3]] rgb = tuple(rgb) except ValueError: - return '' + return "" if len(rgb) != 3: - return '' + return "" name = rgb2color_name(rgb) return name - elif '#' in s: - if s in ['#996A95', '#D5C9D3', '#E9E2E8', '#70416F']: - return 'purple' - if s in ['#FFD472', '#F47B4D', '#FFFBEF', '#F47B4D']: - return 'olive' - if s in ['#B0DFD7', '#EFF8F6', '#5CC4B7']: - return 'teal' + elif "#" in s: + if s in ["#996A95", "#D5C9D3", "#E9E2E8", "#70416F"]: + return "purple" + if s in ["#FFD472", "#F47B4D", "#FFFBEF", "#F47B4D"]: + return "olive" + if s in ["#B0DFD7", "#EFF8F6", "#5CC4B7"]: + return "teal" name = hex2color_name(s) - if (name == 'white') and (s.lower() not in ['#ffffff', '#fff']): - name = 'gray' + if (name == "white") and (s.lower() not in ["#ffffff", "#fff"]): + name = "gray" return name elif s in html4_hex_to_names.items(): return s else: - return '' + return "" def rgba2rgb(r: int, g: int, b: int, alpha: float) -> Tuple[int, int, int]: @@ -93,26 +93,26 @@ def rgba2rgb(r: int, g: int, b: int, alpha: float) -> Tuple[int, int, int]: def str2hex(s: str) -> str: """ Transform str -> hex """ - if '#' in s and (len(s) <= 7): + if "#" in s and (len(s) <= 7): return s.lower() - if ('rgb' in s.lower()) and ('%' in s): - match = re.search(r'rgba*\(((\d+)%, *(\d+)%, *(\d+)%(, \d\.\d+)*)\)', s) + if ("rgb" in s.lower()) and ("%" in s): + match = re.search(r"rgba*\(((\d+)%, *(\d+)%, *(\d+)%(, \d\.\d+)*)\)", s) if match: r, g, b = int(match.group(2)), int(match.group(3)), int(match.group(4)) return rgb_percent_to_hex((r, g, b)) - if 'rgb' in s.lower(): - rgba = re.findall('([0-9] *\.?[0-9]+)', s) + if "rgb" in s.lower(): + rgba = re.findall("([0-9] *\.?[0-9]+)", s) r, g, b = int(rgba[0]), int(rgba[1]), int(rgba[2]) if len(rgba) == 4: alpha = float(rgba[3]) r, g, b = rgba2rgb(r, g, b, alpha) return rgb_to_hex((r, g, b)) - if 'hsl' in s.lower(): + if "hsl" in s.lower(): # hsl(hue in {0,360}, saturation [0, 100%], lightness [0, 100%]) - match = re.search(r'hsla*\(((\d+), *(\d+)%, *(\d+)%, (\d\.\d+)*)\)', s) + match = re.search(r"hsla*\(((\d+), *(\d+)%, *(\d+)%, (\d\.\d+)*)\)", s) if match: h, s, l = int(match.group(2)), int(match.group(3)), int(match.group(4)) h /= 360 @@ -127,10 +127,10 @@ def str2hex(s: str) -> str: if s.lower() in css3_names_to_hex: return css3_names_to_hex[s.lower()] - return '' + return "" -if __name__ == '__main__': +if __name__ == "__main__": colors = [ (75, 0, 130), (255, 0, 255), (139, 69, 19), (46, 139, 87), @@ -138,7 +138,7 @@ if __name__ == '__main__': ] hex_colors = [ - '#96F', '#000', '#4C4C4C', '#A00', '#99F' + "#96F", "#000", "#4C4C4C", "#A00", "#99F" ] for c in colors: diff --git a/src/util/rgb2closest_color.py b/src/util/rgb2closest_color.py index c1ab625..0006304 100644 --- a/src/util/rgb2closest_color.py +++ b/src/util/rgb2closest_color.py @@ -8,7 +8,7 @@ html4_hex_to_names = {'#00ffff': 'aqua', '#000000': 'black', '#0000ff': 'blue', '#ffffff': 'white', '#ffff00': 'yellow'} -def rgb2hsv(r, g, b): +def rgb2hsv(r: int, g: int, b: int): r /= 255 g /= 255 b /= 255