diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-06-23 14:11:05 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-06-23 14:11:05 +1000 |
| commit | dcd3cdc8642239700bddc07846b3743013a5daec (patch) | |
| tree | 1a77b027f09f7a9236c6e4538fe7072e59f3f401 /src/caelestia/subcommands | |
| parent | emojis: add missing emojis (diff) | |
| download | caelestia-cli-dcd3cdc8642239700bddc07846b3743013a5daec.tar.gz caelestia-cli-dcd3cdc8642239700bddc07846b3743013a5daec.tar.bz2 caelestia-cli-dcd3cdc8642239700bddc07846b3743013a5daec.zip | |
emoji: add fetch option
Diffstat (limited to 'src/caelestia/subcommands')
| -rw-r--r-- | src/caelestia/subcommands/emoji.py | 86 |
1 files changed, 81 insertions, 5 deletions
diff --git a/src/caelestia/subcommands/emoji.py b/src/caelestia/subcommands/emoji.py index f04b502..5e9de21 100644 --- a/src/caelestia/subcommands/emoji.py +++ b/src/caelestia/subcommands/emoji.py @@ -1,5 +1,7 @@ +import json import subprocess from argparse import Namespace +from urllib.request import urlopen from caelestia.utils.paths import cli_data_dir @@ -11,8 +13,82 @@ class Command: self.args = args def run(self) -> None: - emojis = (cli_data_dir / "emojis.txt").read_text() - chosen = subprocess.check_output( - ["fuzzel", "--dmenu", "--placeholder=Type to search emojis"], input=emojis, text=True - ) - subprocess.run(["wl-copy"], input=chosen.split()[0], text=True) + if self.args.picker: + emojis = (cli_data_dir / "emojis.txt").read_text() + chosen = subprocess.check_output( + ["fuzzel", "--dmenu", "--placeholder=Type to search emojis"], input=emojis, text=True + ) + subprocess.run(["wl-copy"], input=chosen.split()[0], text=True) + elif self.args.fetch: + self.fetch_emojis() + else: + print((cli_data_dir / "emojis.txt").read_text(), end="") + + def fetch_emojis(self) -> None: + data = [ + "¿? question upside down reversed spanish", + "← left arrow", + "↑ up arrow", + "→ right arrow", + "↓ down arrow", + "←↑→↓ all directions up down left right arrows", + "⇇ leftwards paired arrows", + "⇉ rightwards paired arrows", + "⇈ upwards paired arrows", + "⇊ downwards paired arrows", + "⬱ three leftwards arrows", + "⇶ three rightwards arrows", + "• dot circle separator", + "「」 japanese quote square bracket", + "¯\\_(ツ)_/¯ shrug idk i dont know", + "(ง🔥ロ🔥)ง person with fire eyes eyes on fire", + "↵ enter key return", + "° degrees", + "™ tm trademark", + "® registered trademark", + "© copyright", + "— em dash", + " windows super key", + ] + + # Fetch emojis + with urlopen( + "https://raw.githubusercontent.com/milesj/emojibase/refs/heads/master/packages/data/en/compact.raw.json" + ) as f: + emojis = json.load(f) + + for emoji in emojis: + line = [emoji["unicode"]] + + if "emoticon" in emoji: + if isinstance(emoji["emoticon"], str): + line.append(emoji["emoticon"]) + else: + line.extend(emoji["emoticon"]) + + line.append(emoji["label"]) + + if "tags" in emoji: + line.extend(emoji["tags"]) + + data.append(" ".join(line)) + + # Fetch nerd font glyphs + with urlopen("https://raw.githubusercontent.com/ryanoasis/nerd-fonts/refs/heads/master/glyphnames.json") as f: + glyphs = json.load(f) + + buckets = {} + for name, glyph in glyphs.items(): + if name == "METADATA": + continue + + unicode = glyph["char"] + if unicode not in buckets: + buckets[unicode] = [] + buckets[unicode].append(f"nf-{name}") + + for glyph, names in buckets.items(): + data.append(f"{glyph} {' '.join(names)}") + + # Write to file + (cli_data_dir / "emojis.txt").write_text("\n".join(data)) |