imagepack: use emoji shortcode as fallback when importing packs

This commit is contained in:
Tulir Asokan
2026-04-29 14:51:38 +03:00
parent 12f900a7bd
commit c78b1abd2d
5 changed files with 116 additions and 6 deletions
+46
View File
@@ -0,0 +1,46 @@
//go:build ignore
package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
"strconv"
"strings"
"go.mau.fi/util/exerrors"
"go.mau.fi/util/variationselector"
)
type Emoji struct {
Unified string `json:"unified"`
ShortName string `json:"short_name"`
}
func unifiedToUnicode(input string) string {
parts := strings.Split(input, "-")
output := make([]rune, len(parts))
for i, part := range parts {
output[i] = rune(exerrors.Must(strconv.ParseInt(part, 16, 32)))
}
return string(output)
}
func main() {
resp := exerrors.Must(http.Get("https://raw.githubusercontent.com/iamcal/emoji-data/master/emoji.json"))
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
panic(fmt.Errorf("unexpected status code %d", resp.StatusCode))
}
var emojis []*Emoji
exerrors.PanicIfNotNil(json.NewDecoder(resp.Body).Decode(&emojis))
output := make(map[string]string)
for _, emoji := range emojis {
output[variationselector.Add(unifiedToUnicode(emoji.Unified))] = emoji.ShortName
}
f := exerrors.Must(os.OpenFile("shortcodes.json", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644))
exerrors.PanicIfNotNil(json.NewEncoder(f).Encode(output))
_ = f.Close()
}