45 lines
2.2 KiB
Python
Executable file
45 lines
2.2 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
"""
|
|
The original script:
|
|
https://github.com/dharmx/vile/blob/7d486c128c7e553912673755f97b118aaab0193d/src/shell/playerctl.py#L2
|
|
"""
|
|
|
|
import argparse
|
|
import json
|
|
from material_color_utilities_python import themeFromImage, hexFromArgb, Image
|
|
|
|
def range_type(value_string):
|
|
value = int(value_string)
|
|
if value not in range(0, 101):
|
|
raise argparse.ArgumentTypeError("%s is out of range, choose in [0-100]" % value)
|
|
return value
|
|
|
|
parser = argparse.ArgumentParser(
|
|
prog='coloryou',
|
|
description='This program extract Material You colors from an image. It returns them as a JSON object for scripting.')
|
|
|
|
parser.add_argument("image_path", help="A full path to your image", type=str)
|
|
parser.add_argument('-i', '--image', dest='image', default=40, type=range_type, metavar='i', choices=range(0,101), help="Value should be within [0, 100] (default: %(default)s). Set the tone for the main image accent.")
|
|
|
|
parser.add_argument('-b', '--button', dest='button', default=90, type=range_type, metavar='i', choices=range(0,101), help="Value should be within [0, 100] (default: %(default)s). Set the tone for the button accent.")
|
|
|
|
parser.add_argument('-t', '--text', dest='text', default=10, type=range_type, metavar='i', choices=range(0,101), help="Value should be within [0, 100] (default: %(default)s). Set the tone for the button text accent.")
|
|
|
|
parser.add_argument('-o', '--hover', dest='hover', default=80, type=range_type, metavar='i', choices=range(0,101), help="Value should be within [0, 100] (default: %(default)s). Set the tone for the hovering effect accent.")
|
|
args = parser.parse_args()
|
|
|
|
|
|
img = Image.open(args.image_path)
|
|
basewidth = 64
|
|
wpercent = (basewidth/float(img.size[0]))
|
|
hsize = int((float(img.size[1])*float(wpercent)))
|
|
img = img.resize((basewidth,hsize),Image.Resampling.LANCZOS)
|
|
|
|
theme = themeFromImage(img).get("palettes").get("primary")
|
|
parsed_colors = {"imageAccent": hexFromArgb(theme.tone(args.image)),
|
|
"buttonAccent": hexFromArgb(theme.tone(args.button)),
|
|
"buttonText": hexFromArgb(theme.tone(args.text)),
|
|
"hoverAccent": hexFromArgb(theme.tone(args.hover))}
|
|
|
|
print(json.dumps(parsed_colors))
|