xsalazar / emoji-kitchen

🧑‍🍳 This repository contains the source code for the website https://emojikitchen.dev and allows for quick and easy browsing of the over 100,000 supported emoji mashups as part of Google's Emoji Kitchen.
https://emojikitchen.dev/
1.24k stars 79 forks source link

How did you get the emoji combination? #768

Closed notanerd314 closed 1 month ago

notanerd314 commented 1 month ago

I'm just wondering how did you manage to get the result of the emoji combination. I can't read TypeScript yet

xsalazar commented 1 month ago

This is a great question!

There's a few ways to get this information today than there were when I started this project over two years ago. The easiest way today for anyone new is to just use Google's undocumented Tenor API endpoint (used in their search widget).

Essentially, if you look in the network activity of your browser, you'll find a URL similar to this: https://tenor.googleapis.com/v2/featured?key=AI<...>uo&q=🤔_🤮&collection=emoji_kitchen_v6

Which, if you visit that URL, you'll see a bunch of metadata returned, including pointers to the direct images themselves.

So, given the q query parameter there, you can play around with combinations and see which aren't supported or if you only include one emoji, you'll get a short list of suggestions.

This is, I assume, the same API that powers the GBoard experience since the same effects happen on a mobile phone. If you type on emoji, there's a small list of ~10 stickers that will pop up as suggested.


Previously, I was only able to find this information out by creating my own basic Android application with a sticker-supported input. I was able to debug the code that pastes in stickers to find the ultimate gstatic URLs where the images are hosted. Combined with wonderful research at the time, I was able to piece it all together. This was a time before their Twitter bot, search widgets, and public announcements, etc.


Ultimately, all of this is completely undocumented and they offer absolutely no support or communication around any official API usage or availability. I build this data offline for posterity and continuously monitor the resources available to ensure the website is the most comprehensive way to explore the feature online