mirror of https://github.com/HorlogeSkynet/SgEExt synced 2024-06-17 04:00:11 +02:00
🐙 [MIRROR] a Simple gemoji Emoji Extractor (for non macOS users) https://github.com/HorlogeSkynet/SgEExt
Go to file
2022-04-23 12:13:51 +02:00
.github/workflows [CI] Bumps actions/checkout and actions/setup-python to v3 2022-04-23 12:01:09 +02:00
.gitignore Makes git ignore copied / downloaded PNGs within the project directory 2019-03-30 08:13:56 +01:00
LICENSE Bumps year in LICENSE 2022-04-23 11:55:08 +02:00
README.md Bumps required Python version to 3.6 due to f-string usage 2022-04-23 12:13:51 +02:00
sgeext.py Bumps version to v2.6.0 2022-04-23 12:10:45 +02:00

SgEExt — a Simple gemoji Emoji Extractor

Pronounced [sgɪksˈt]


Let's have a talk about an usual situation.
You run a self-hosted Jekyll blog, with the jemoji plugin loaded so as to "enhance" your content with some emojis.
You'd have noticed that by default the plugin renders your static pages with <img> whose src attributes are pointing to a GitHub's (Microsoft's) location.
The latter means that a third-party is able (note that it may not be the case) to log people who consult your website, and thus is a privacy issue.

So, at this step, you may have tried to extract images to serve it yourself, but the operation is only possible from a macOS system ('cause Apple emojis are present within the system font, and... gemoji is mainly using the "Apple's emoji character palette").

Now that is said, there are your options :

  • Buy an Apple device
  • Kindly ask a friend with an Apple device to extract and send you those PNGs (cc @Naernon)
  • Change your underneath emojis module / plugin / whatever
  • Wait for the gemoji project to use another set of emoji
  • Download PNGs directly from GitHub, and that is definitely what this project is about !


  • python3 (>= 3.6)
  • python3-requests



git clone https://github.com/HorlogeSkynet/SgEExt.git


python3 sgeext.py --help

# Careful, running without any arguments would download the whole emojis palette !
# Resulting files will be set under `emoji/unicode/` (automatically created).
# Microsoft GitHub's emojis (images) will be set under `emoji/`.
python3 sgeext.py

# This directory structure will be created if it does not exist.
python3 sgeext.py -l joy -d emojis/images/

# Wanna force re-download of existing files ? Sure.
python3 sgeext.py -l joy relaxed sunglasses -d emojis/images/ -f

# Wanna save "real" emojis under their "real" name ? Sure.
python3 sgeext.py -l ok_hand -n

# Wanna download GitHub added "emojis" (mostly images) ? Sure.
python3 sgeext.py -l bow relaxed octocat trollface --verbose

# 'octocat' & 'trollface' would be ignored.
python3 sgeext.py -l bow relaxed octocat trollface --only-emojis

# Handle duplicates ('uk' and 'gb' refer to the same emoji).
python3 sgeext.py -l fr gb us jp uk jp gb it

# Wanna download the emojis currently being used in your (Jekyll) blog ? Sure.
python3 sgeext.py -l $(grep -hREo ':[a-z+-]+[a-z1-9_-]+:' /path/to/your/blog/_posts/*.md | sort | uniq | cut -d ':' -f 2) -d /path/to/your/blog/images/emojis/

How does it work ?

The script... :

  • ... (after having tried locally) fetches the emojis database hosted on GitHub (don't click if you are on mobile)
  • ... iterates through the elements and extracts their unicode value as hexadecimal
  • ... uses the above result to download them from GitHub

As githubassets.com is actually a CDN, it does not look rate-limited.
Anyway, I cannot take any responsibility for any inappropriate usage of this software.


Although SgEExt has been developed with cross-platform constraints, it has not been tested on Windows yet.
Feedbacks are welcome, as usual.

Apple users, you don't have to go this way.