163 lines
7.3 KiB
Python
163 lines
7.3 KiB
Python
|
import copy
|
||
|
import json
|
||
|
|
||
|
# Unicode hexes that will have Mutant Modifier (mm) applied to
|
||
|
mm_emojis = [0x1f446, 0x1f447, 0x1f448, 0x1f449, 0x1f44a, 0x1f44b, 0x1f44c,
|
||
|
0x1f44d, 0x1f44e, 0x1f44f, 0x1f450, 0x1f485, 0x1f4aa, 0x1f590,
|
||
|
0x1f595, 0x1f596, 0x1f64c, 0x1f64f, 0x1f918, 0x1f919, 0x1f91a,
|
||
|
0x1f91b, 0x1f91c, 0x1f91d, 0x1f91e, 0x1f933, 0x261d, 0x270a,
|
||
|
0x270b, 0x270c, 0x270d]
|
||
|
|
||
|
# Mutant Modifier names and their modifiers
|
||
|
mm_types = {"paw": "",
|
||
|
"claw": ""}
|
||
|
|
||
|
# Custom emojis that will be inserted to the end of an emoji category
|
||
|
custom_emojis = {"symbols": {"💯🌈": ["queer_100"],
|
||
|
"": ["dont_at", "no_at",
|
||
|
"no_mention", "dont_mention"],
|
||
|
"⚲": ["neuter_symbol"],
|
||
|
"⚨": ["androgyne_symbol"],
|
||
|
"⚧": ["transgender_symbol"],
|
||
|
"⚥": ["male_female_symbol"],
|
||
|
"⚤": ["male_and_female_symbol"],
|
||
|
"⚣": ["two_male_symbols"],
|
||
|
"⚢": ["two_female_symbols"],
|
||
|
"♴": ["red_heart"],
|
||
|
"♂": ["male_symbol"],
|
||
|
"♀": ["female_symbol"],
|
||
|
"🧡": ["orange_heart"],
|
||
|
"": ["labrys_symbol"],
|
||
|
"": ["bisexual_triangles"],
|
||
|
"": ["black_triangle"],
|
||
|
"": ["pink_triangle"]},
|
||
|
"objects": {"🧻": ["toilet_paper"],
|
||
|
"🧱": ["brick"],
|
||
|
"🧨": ["firecracker"],
|
||
|
"🦴": ["bone"],
|
||
|
"": ["d20"],
|
||
|
"": ["d12"],
|
||
|
"": ["d10"],
|
||
|
"": ["d8"],
|
||
|
"": ["d4"]},
|
||
|
"nature": {"🌈": ["furry_pride", "rainbow_paw"],
|
||
|
"": ["paw"],
|
||
|
"": ["awoo"],
|
||
|
"": ["dont_awoo", "no_awoo"],
|
||
|
"🧝": ["elf"],
|
||
|
"🦝": ["raccoon"],
|
||
|
"🦜": ["parrot"],
|
||
|
"🦚": ["peacock"],
|
||
|
"": ["demon"]},
|
||
|
"people": {"🧑✈": ["pilot"],
|
||
|
"🧑⚕": ["health_worker"],
|
||
|
"🧑🥢": ["firefighter"],
|
||
|
"🧑🚀": ["astronaut"],
|
||
|
"🧑🔬": ["scientist"],
|
||
|
"🧑🔧": ["mechanic"],
|
||
|
"🧑💻": ["technologist"],
|
||
|
"🧑🍳": ["chef"],
|
||
|
"🧐": ["monocle"],
|
||
|
"🥺": ["pleading"],
|
||
|
"🥶": ["cold"],
|
||
|
"🥵": ["hot"],
|
||
|
"🥴": ["woozy"],
|
||
|
"🥳": ["party_face"],
|
||
|
"🥰": ["smile_hearts"],
|
||
|
"🤯": ["mind_blown"],
|
||
|
"🤮": ["vomiting"],
|
||
|
"🤭": ["hand_over_mouth"],
|
||
|
"🤬": ["swearing"],
|
||
|
"🤫": ["shush"],
|
||
|
"🤪": ["crazy"],
|
||
|
"🤩": ["starry_eyes"],
|
||
|
"🤨": ["raised_eyebrow"],
|
||
|
"🕵": ["detective"],
|
||
|
"💆": ["massage"],
|
||
|
"💁": ["tipping_hand"],
|
||
|
"": ["hot_shit"],
|
||
|
"": ["headpats"],
|
||
|
"🧜": ["merperson"]},
|
||
|
"flags": {"🏴️": ["pirate_flag"],
|
||
|
"": ["transgender_flag"],
|
||
|
"": ["polysexual_flag"],
|
||
|
"": ["polyamory_flag"],
|
||
|
"": ["pansexual_flag"],
|
||
|
"": ["nonbinary_flag"],
|
||
|
"": ["neutrois_flag"],
|
||
|
"": ["intersex_flag"],
|
||
|
"": ["genderqueer_flag"],
|
||
|
"": ["genderfluid_flag"],
|
||
|
"": ["deminonbinary_flag"],
|
||
|
"": ["demigirl_flag"],
|
||
|
"": ["demiguy_flag"],
|
||
|
"": ["bisexual_flag"],
|
||
|
"": ["bigender_flag"],
|
||
|
"": ["bear_flag"],
|
||
|
"": ["asexual_flag"],
|
||
|
"": ["aromantic_flag"],
|
||
|
"": ["agender_flag"],
|
||
|
"": ["lesbian_flag"],
|
||
|
"": ["paw-modifier"],
|
||
|
"": ["claw-modifier"]},
|
||
|
"food": {"": ["cannabis_leaf"]}
|
||
|
}
|
||
|
|
||
|
|
||
|
emoji_post = {}
|
||
|
|
||
|
# Convert aforementioned unicode addresses to actual emojis
|
||
|
mm_emojis = [chr(mm_emoji) for mm_emoji in mm_emojis]
|
||
|
|
||
|
# Load a file called "emojis.json" from same directory.
|
||
|
# On discord android, this file is on "/assets/data/emojis.json"
|
||
|
with open('emojis.json', 'r') as f:
|
||
|
emoji_j_pre = json.load(f)
|
||
|
|
||
|
# Add skin tone modifiers as emojis
|
||
|
# so that mobile clients can send emojis with diversity
|
||
|
unicodecolorbase = 0x1f3fb
|
||
|
mutantcolorbase = 0x101600
|
||
|
|
||
|
for st_count in range(1, 6):
|
||
|
character = chr(unicodecolorbase)
|
||
|
custom_emojis["flags"][character] = [f"skin-tone-{st_count}"]
|
||
|
unicodecolorbase += 1
|
||
|
|
||
|
for st_count in range(6, 51):
|
||
|
character = chr(mutantcolorbase)
|
||
|
custom_emojis["flags"][character] = [f"skin-tone-{st_count}"]
|
||
|
mutantcolorbase += 1
|
||
|
|
||
|
# Iterate through every emoji in emojis.json
|
||
|
for category in emoji_j_pre:
|
||
|
emoji_post[category] = []
|
||
|
for emoji in emoji_j_pre[category]:
|
||
|
emoji_post[category].append(emoji)
|
||
|
# If this is MM emoji, create variants
|
||
|
if emoji["surrogates"] in mm_emojis:
|
||
|
names = emoji["names"]
|
||
|
# Add a variant for each MM type
|
||
|
for mm_type in mm_types:
|
||
|
# Ignore paw version of hand_splayed, because it's missing
|
||
|
if mm_type == "paw" and emoji["surrogates"] == chr(0x1f590):
|
||
|
continue
|
||
|
# Copy the variant's entry bc of pointers
|
||
|
variant = copy.deepcopy(emoji)
|
||
|
# Append variant info to the emoji entry
|
||
|
variant["names"] = [f"{name}_{mm_type}" for name in names]
|
||
|
variant["surrogates"] += mm_types[mm_type]
|
||
|
# and add it to the result file
|
||
|
emoji_post[category].append(variant)
|
||
|
|
||
|
# Add custom emojis
|
||
|
if category in custom_emojis:
|
||
|
for custom_emoji in custom_emojis[category]:
|
||
|
entry = {"names": custom_emojis[category][custom_emoji],
|
||
|
"surrogates": custom_emoji}
|
||
|
emoji_post[category].append(entry)
|
||
|
|
||
|
# When finally done, dump the result as "emojispost.json"
|
||
|
with open('emojispost.json', 'w') as f:
|
||
|
json.dump(emoji_post, f)
|