Last active 1742658756

Extracts all colors from a CSS file

get-css-colors.py Raw
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3import sys
4import re
5import argparse
6
7def extract_colors(css_file, output_file):
8 color_pattern = re.compile(r'(#(?:[0-9a-fA-F]{3}){1,2})|'
9 r'(rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*(,\s*\d*\.?\d+\s*)?\))')
10 colors = set()
11
12 with open(css_file, 'r') as file:
13 for line in file:
14 matches = color_pattern.finditer(line)
15 for match in matches:
16 color = match.group(0)
17 colors.add(color)
18
19 with open(output_file, 'w') as file:
20 for color in colors:
21 file.write(color + '\n')
22
23def replace_colors(css_file, translation_file, output_file):
24 with open(translation_file, 'r') as file:
25 translations = dict(line.strip().split(' -> ') for line in file)
26
27 with open(css_file, 'r') as file:
28 css_content = file.read()
29
30 for old_color, new_color in translations.items():
31 css_content = css_content.replace(old_color, new_color)
32
33 with open(output_file, 'w') as file:
34 file.write(css_content)
35
36def main():
37 parser = argparse.ArgumentParser(description="CSS Color Extractor and Replacer")
38 parser.add_argument("command", choices=['extract', 'replace'], help="Command to execute (extract or replace)")
39 parser.add_argument("css_file", help="Path to the CSS file")
40 parser.add_argument("output_file", help="Path to the output file")
41 parser.add_argument("--translation_file", help="Path to the translation file for color replacement", default="")
42
43 args = parser.parse_args()
44
45 if args.command == 'extract':
46 extract_colors(args.css_file, args.output_file)
47 elif args.command == 'replace':
48 if not args.translation_file:
49 print("Error: Translation file required for replace command")
50 return
51 replace_colors(args.css_file, args.translation_file, args.output_file)
52
53if __name__ == "__main__":
54 main()
55