1#!/usr/bin/env python 2import json 3import time 4import os 5import tinycss2 6 7BASE_PATH = os.path.dirname(__file__) 8CLASSES = json.load(open(f"{BASE_PATH}/src/classes.json")) 9 10cur_time = int(time.time()) 11 12rules = tinycss2.parse_stylesheet( 13 open(f"{BASE_PATH}/src/simple-icons.css").read(), 14 skip_comments=True, 15) 16 17final_rules = rules[:3] 18font_rule = rules[0] 19 20for block in font_rule.content: 21 if isinstance(block, tinycss2.ast.FunctionBlock): 22 if "static" in block.arguments[0].value: 23 arg = block.arguments[0] 24 arg.value += f"?v={cur_time}" 25 arg.representation = arg.representation.replace( 26 ".min.woff2", f".min.woff2?v={cur_time}" 27 ) 28 block.arguments[0] = arg 29 30rules = rules[4:] 31 32for i, rule in enumerate(rules): 33 if isinstance(rule, tinycss2.ast.WhitespaceToken): 34 continue 35 36 if rule.prelude[1].value not in CLASSES: 37 del rules[i] 38 elif rule.prelude[3].value == "si--color": 39 del rules[i] 40 else: 41 char = hex(ord(rule.content[4].value))[2:] 42 rule.content[4].representation = f'"\\{char}"' 43 final_rules.append(rule) 44 45 46out = open(f"{os.environ['ROOT']}/src/static/icons/si.min.css", "w") 47out.write(tinycss2.serialize(final_rules)) 48out.close() 49