Spaces:
Runtime error
Runtime error
| # utils/code_converter.py | |
| # Base58 Alphabet (Removes easily confused characters: 0, O, I, l) | |
| ALPHABET = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ" | |
| BASE = len(ALPHABET) | |
| # We add a massive offset so even ID #1 looks like a randomized gacha code | |
| OFFSET = 14758923 | |
| def encode_id(instance_id: int) -> str: | |
| """Converts a database integer ID into a cool alphanumeric string.""" | |
| num = instance_id + OFFSET | |
| if num == 0: | |
| return ALPHABET[0] | |
| arr = [] | |
| while num: | |
| num, rem = divmod(num, BASE) | |
| arr.append(ALPHABET[rem]) | |
| arr.reverse() | |
| return ''.join(arr) | |
| def decode_id(code: str) -> int: | |
| """Converts the alphanumeric string back into the database integer ID.""" | |
| num = 0 | |
| for char in code: | |
| if char not in ALPHABET: | |
| raise ValueError(f"Invalid character in code: {char}") | |
| num = num * BASE + ALPHABET.index(char) | |
| return num - OFFSET | |