From 744df8931358cf6c509782da05d066ef92544415 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Mon, 30 Nov 2020 17:07:26 +0100 Subject: [PATCH] WIP: List all the single-codepoint unicode emojis --- .../operations/emoji_reaction_operation.ex | 18 + .../web/pleroma_api/controllers/emoji.json | 1369 +++++++++++++++++ .../controllers/emoji_reaction_controller.ex | 19 + lib/pleroma/web/router.ex | 1 + .../emoji_reaction_controller_test.exs | 12 + 5 files changed, 1419 insertions(+) create mode 100644 lib/pleroma/web/pleroma_api/controllers/emoji.json diff --git a/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex b/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex index 9d0e39fc7..e797eab05 100644 --- a/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex +++ b/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex @@ -77,6 +77,17 @@ def delete_operation do } end + def emoji_reactions_operation do + %Operation{ + tags: ["Emoji Reactions"], + summary: "List emoji reactions recognized by the server", + operationId: "EmojiReactionController.emoji_reactions", + responses: %{ + 200 => emoji_reactions_response() + } + } + end + defp array_of_reactions_response do Operation.response("Array of Emoji Reactions", "application/json", %Schema{ type: :array, @@ -85,6 +96,13 @@ defp array_of_reactions_response do }) end + defp emoji_reactions_response do + Operation.response("List of emojis by their names", "application/json", %Schema{ + type: :object, + example: %{"cookie" => "🍪", "umbrella" => "☂"} + }) + end + defp emoji_reaction do %Schema{ title: "EmojiReaction", diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji.json b/lib/pleroma/web/pleroma_api/controllers/emoji.json new file mode 100644 index 000000000..a465b210d --- /dev/null +++ b/lib/pleroma/web/pleroma_api/controllers/emoji.json @@ -0,0 +1,1369 @@ +{ + "NUMBER SIGN": "0023", + "ASTERISK": "002A", + "DIGIT ZERO": "0030", + "DIGIT ONE": "0031", + "DIGIT TWO": "0032", + "DIGIT THREE": "0033", + "DIGIT FOUR": "0034", + "DIGIT FIVE": "0035", + "DIGIT SIX": "0036", + "DIGIT SEVEN": "0037", + "DIGIT EIGHT": "0038", + "DIGIT NINE": "0039", + "COPYRIGHT SIGN": "00A9", + "REGISTERED SIGN": "00AE", + "DOUBLE EXCLAMATION MARK": "203C", + "EXCLAMATION QUESTION MARK": "2049", + "TRADE MARK SIGN": "2122", + "INFORMATION SOURCE": "2139", + "LEFT RIGHT ARROW": "2194", + "UP DOWN ARROW": "2195", + "NORTH WEST ARROW": "2196", + "NORTH EAST ARROW": "2197", + "SOUTH EAST ARROW": "2198", + "SOUTH WEST ARROW": "2199", + "LEFTWARDS ARROW WITH HOOK": "21A9", + "RIGHTWARDS ARROW WITH HOOK": "21AA", + "WATCH": "231A", + "HOURGLASS": "231B", + "KEYBOARD": "2328", + "EJECT SYMBOL": "23CF", + "BLACK RIGHT-POINTING DOUBLE TRIANGLE": "23E9", + "BLACK LEFT-POINTING DOUBLE TRIANGLE": "23EA", + "BLACK UP-POINTING DOUBLE TRIANGLE": "23EB", + "BLACK DOWN-POINTING DOUBLE TRIANGLE": "23EC", + "BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR": "23ED", + "BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR": "23EE", + "BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR": "23EF", + "ALARM CLOCK": "23F0", + "STOPWATCH": "23F1", + "TIMER CLOCK": "23F2", + "HOURGLASS WITH FLOWING SAND": "23F3", + "DOUBLE VERTICAL BAR": "23F8", + "BLACK SQUARE FOR STOP": "23F9", + "BLACK CIRCLE FOR RECORD": "23FA", + "CIRCLED LATIN CAPITAL LETTER M": "24C2", + "BLACK SMALL SQUARE": "25AA", + "WHITE SMALL SQUARE": "25AB", + "BLACK RIGHT-POINTING TRIANGLE": "25B6", + "BLACK LEFT-POINTING TRIANGLE": "25C0", + "WHITE MEDIUM SQUARE": "25FB", + "BLACK MEDIUM SQUARE": "25FC", + "WHITE MEDIUM SMALL SQUARE": "25FD", + "BLACK MEDIUM SMALL SQUARE": "25FE", + "BLACK SUN WITH RAYS": "2600", + "CLOUD": "2601", + "UMBRELLA": "2602", + "SNOWMAN": "2603", + "COMET": "2604", + "BLACK TELEPHONE": "260E", + "BALLOT BOX WITH CHECK": "2611", + "UMBRELLA WITH RAIN DROPS": "2614", + "HOT BEVERAGE": "2615", + "SHAMROCK": "2618", + "WHITE UP POINTING INDEX": "261D", + "SKULL AND CROSSBONES": "2620", + "RADIOACTIVE SIGN": "2622", + "BIOHAZARD SIGN": "2623", + "ORTHODOX CROSS": "2626", + "STAR AND CRESCENT": "262A", + "PEACE SYMBOL": "262E", + "YIN YANG": "262F", + "WHEEL OF DHARMA": "2638", + "WHITE FROWNING FACE": "2639", + "WHITE SMILING FACE": "263A", + "FEMALE SIGN": "2640", + "MALE SIGN": "2642", + "ARIES": "2648", + "TAURUS": "2649", + "GEMINI": "264A", + "CANCER": "264B", + "LEO": "264C", + "VIRGO": "264D", + "LIBRA": "264E", + "SCORPIUS": "264F", + "SAGITTARIUS": "2650", + "CAPRICORN": "2651", + "AQUARIUS": "2652", + "PISCES": "2653", + "BLACK CHESS PAWN": "265F", + "BLACK SPADE SUIT": "2660", + "BLACK CLUB SUIT": "2663", + "BLACK HEART SUIT": "2665", + "BLACK DIAMOND SUIT": "2666", + "HOT SPRINGS": "2668", + "BLACK UNIVERSAL RECYCLING SYMBOL": "267B", + "PERMANENT PAPER SIGN": "267E", + "WHEELCHAIR SYMBOL": "267F", + "HAMMER AND PICK": "2692", + "ANCHOR": "2693", + "CROSSED SWORDS": "2694", + "STAFF OF AESCULAPIUS": "2695", + "SCALES": "2696", + "ALEMBIC": "2697", + "GEAR": "2699", + "ATOM SYMBOL": "269B", + "FLEUR-DE-LIS": "269C", + "WARNING SIGN": "26A0", + "HIGH VOLTAGE SIGN": "26A1", + "MALE WITH STROKE AND MALE AND FEMALE SIGN": "26A7", + "MEDIUM WHITE CIRCLE": "26AA", + "MEDIUM BLACK CIRCLE": "26AB", + "COFFIN": "26B0", + "FUNERAL URN": "26B1", + "SOCCER BALL": "26BD", + "BASEBALL": "26BE", + "SNOWMAN WITHOUT SNOW": "26C4", + "SUN BEHIND CLOUD": "26C5", + "THUNDER CLOUD AND RAIN": "26C8", + "OPHIUCHUS": "26CE", + "PICK": "26CF", + "HELMET WITH WHITE CROSS": "26D1", + "CHAINS": "26D3", + "NO ENTRY": "26D4", + "SHINTO SHRINE": "26E9", + "CHURCH": "26EA", + "MOUNTAIN": "26F0", + "UMBRELLA ON GROUND": "26F1", + "FOUNTAIN": "26F2", + "FLAG IN HOLE": "26F3", + "FERRY": "26F4", + "SAILBOAT": "26F5", + "SKIER": "26F7", + "ICE SKATE": "26F8", + "PERSON WITH BALL": "26F9", + "TENT": "26FA", + "FUEL PUMP": "26FD", + "BLACK SCISSORS": "2702", + "WHITE HEAVY CHECK MARK": "2705", + "AIRPLANE": "2708", + "ENVELOPE": "2709", + "RAISED FIST": "270A", + "RAISED HAND": "270B", + "VICTORY HAND": "270C", + "WRITING HAND": "270D", + "PENCIL": "270F", + "BLACK NIB": "2712", + "HEAVY CHECK MARK": "2714", + "HEAVY MULTIPLICATION X": "2716", + "LATIN CROSS": "271D", + "STAR OF DAVID": "2721", + "SPARKLES": "2728", + "EIGHT SPOKED ASTERISK": "2733", + "EIGHT POINTED BLACK STAR": "2734", + "SNOWFLAKE": "2744", + "SPARKLE": "2747", + "CROSS MARK": "274C", + "NEGATIVE SQUARED CROSS MARK": "274E", + "BLACK QUESTION MARK ORNAMENT": "2753", + "WHITE QUESTION MARK ORNAMENT": "2754", + "WHITE EXCLAMATION MARK ORNAMENT": "2755", + "HEAVY EXCLAMATION MARK SYMBOL": "2757", + "HEAVY HEART EXCLAMATION MARK ORNAMENT": "2763", + "HEAVY BLACK HEART": "2764", + "HEAVY PLUS SIGN": "2795", + "HEAVY MINUS SIGN": "2796", + "HEAVY DIVISION SIGN": "2797", + "BLACK RIGHTWARDS ARROW": "27A1", + "CURLY LOOP": "27B0", + "DOUBLE CURLY LOOP": "27BF", + "ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS": "2934", + "ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS": "2935", + "LEFTWARDS BLACK ARROW": "2B05", + "UPWARDS BLACK ARROW": "2B06", + "DOWNWARDS BLACK ARROW": "2B07", + "BLACK LARGE SQUARE": "2B1B", + "WHITE LARGE SQUARE": "2B1C", + "WHITE MEDIUM STAR": "2B50", + "HEAVY LARGE CIRCLE": "2B55", + "WAVY DASH": "3030", + "PART ALTERNATION MARK": "303D", + "CIRCLED IDEOGRAPH CONGRATULATION": "3297", + "CIRCLED IDEOGRAPH SECRET": "3299", + "MAHJONG TILE RED DRAGON": "1F004", + "PLAYING CARD BLACK JOKER": "1F0CF", + "NEGATIVE SQUARED LATIN CAPITAL LETTER A": "1F170", + "NEGATIVE SQUARED LATIN CAPITAL LETTER B": "1F171", + "NEGATIVE SQUARED LATIN CAPITAL LETTER O": "1F17E", + "NEGATIVE SQUARED LATIN CAPITAL LETTER P": "1F17F", + "NEGATIVE SQUARED AB": "1F18E", + "SQUARED CL": "1F191", + "SQUARED COOL": "1F192", + "SQUARED FREE": "1F193", + "SQUARED ID": "1F194", + "SQUARED NEW": "1F195", + "SQUARED NG": "1F196", + "SQUARED OK": "1F197", + "SQUARED SOS": "1F198", + "SQUARED UP WITH EXCLAMATION MARK": "1F199", + "SQUARED VS": "1F19A", + "REGIONAL INDICATOR SYMBOL LETTER A": "1F1E6", + "REGIONAL INDICATOR SYMBOL LETTER B": "1F1E7", + "REGIONAL INDICATOR SYMBOL LETTER C": "1F1E8", + "REGIONAL INDICATOR SYMBOL LETTER D": "1F1E9", + "REGIONAL INDICATOR SYMBOL LETTER E": "1F1EA", + "REGIONAL INDICATOR SYMBOL LETTER F": "1F1EB", + "REGIONAL INDICATOR SYMBOL LETTER G": "1F1EC", + "REGIONAL INDICATOR SYMBOL LETTER H": "1F1ED", + "REGIONAL INDICATOR SYMBOL LETTER I": "1F1EE", + "REGIONAL INDICATOR SYMBOL LETTER J": "1F1EF", + "REGIONAL INDICATOR SYMBOL LETTER K": "1F1F0", + "REGIONAL INDICATOR SYMBOL LETTER L": "1F1F1", + "REGIONAL INDICATOR SYMBOL LETTER M": "1F1F2", + "REGIONAL INDICATOR SYMBOL LETTER N": "1F1F3", + "REGIONAL INDICATOR SYMBOL LETTER O": "1F1F4", + "REGIONAL INDICATOR SYMBOL LETTER P": "1F1F5", + "REGIONAL INDICATOR SYMBOL LETTER Q": "1F1F6", + "REGIONAL INDICATOR SYMBOL LETTER R": "1F1F7", + "REGIONAL INDICATOR SYMBOL LETTER S": "1F1F8", + "REGIONAL INDICATOR SYMBOL LETTER T": "1F1F9", + "REGIONAL INDICATOR SYMBOL LETTER U": "1F1FA", + "REGIONAL INDICATOR SYMBOL LETTER V": "1F1FB", + "REGIONAL INDICATOR SYMBOL LETTER W": "1F1FC", + "REGIONAL INDICATOR SYMBOL LETTER X": "1F1FD", + "REGIONAL INDICATOR SYMBOL LETTER Y": "1F1FE", + "REGIONAL INDICATOR SYMBOL LETTER Z": "1F1FF", + "SQUARED KATAKANA KOKO": "1F201", + "SQUARED KATAKANA SA": "1F202", + "SQUARED CJK UNIFIED IDEOGRAPH-7121": "1F21A", + "SQUARED CJK UNIFIED IDEOGRAPH-6307": "1F22F", + "SQUARED CJK UNIFIED IDEOGRAPH-7981": "1F232", + "SQUARED CJK UNIFIED IDEOGRAPH-7A7A": "1F233", + "SQUARED CJK UNIFIED IDEOGRAPH-5408": "1F234", + "SQUARED CJK UNIFIED IDEOGRAPH-6E80": "1F235", + "SQUARED CJK UNIFIED IDEOGRAPH-6709": "1F236", + "SQUARED CJK UNIFIED IDEOGRAPH-6708": "1F237", + "SQUARED CJK UNIFIED IDEOGRAPH-7533": "1F238", + "SQUARED CJK UNIFIED IDEOGRAPH-5272": "1F239", + "SQUARED CJK UNIFIED IDEOGRAPH-55B6": "1F23A", + "CIRCLED IDEOGRAPH ADVANTAGE": "1F250", + "CIRCLED IDEOGRAPH ACCEPT": "1F251", + "CYCLONE": "1F300", + "FOGGY": "1F301", + "CLOSED UMBRELLA": "1F302", + "NIGHT WITH STARS": "1F303", + "SUNRISE OVER MOUNTAINS": "1F304", + "SUNRISE": "1F305", + "CITYSCAPE AT DUSK": "1F306", + "SUNSET OVER BUILDINGS": "1F307", + "RAINBOW": "1F308", + "BRIDGE AT NIGHT": "1F309", + "WATER WAVE": "1F30A", + "VOLCANO": "1F30B", + "MILKY WAY": "1F30C", + "EARTH GLOBE EUROPE-AFRICA": "1F30D", + "EARTH GLOBE AMERICAS": "1F30E", + "EARTH GLOBE ASIA-AUSTRALIA": "1F30F", + "GLOBE WITH MERIDIANS": "1F310", + "NEW MOON SYMBOL": "1F311", + "WAXING CRESCENT MOON SYMBOL": "1F312", + "FIRST QUARTER MOON SYMBOL": "1F313", + "WAXING GIBBOUS MOON SYMBOL": "1F314", + "FULL MOON SYMBOL": "1F315", + "WANING GIBBOUS MOON SYMBOL": "1F316", + "LAST QUARTER MOON SYMBOL": "1F317", + "WANING CRESCENT MOON SYMBOL": "1F318", + "CRESCENT MOON": "1F319", + "NEW MOON WITH FACE": "1F31A", + "FIRST QUARTER MOON WITH FACE": "1F31B", + "LAST QUARTER MOON WITH FACE": "1F31C", + "FULL MOON WITH FACE": "1F31D", + "SUN WITH FACE": "1F31E", + "GLOWING STAR": "1F31F", + "SHOOTING STAR": "1F320", + "THERMOMETER": "1F321", + "WHITE SUN WITH SMALL CLOUD": "1F324", + "WHITE SUN BEHIND CLOUD": "1F325", + "WHITE SUN BEHIND CLOUD WITH RAIN": "1F326", + "CLOUD WITH RAIN": "1F327", + "CLOUD WITH SNOW": "1F328", + "CLOUD WITH LIGHTNING": "1F329", + "CLOUD WITH TORNADO": "1F32A", + "FOG": "1F32B", + "WIND BLOWING FACE": "1F32C", + "HOT DOG": "1F32D", + "TACO": "1F32E", + "BURRITO": "1F32F", + "CHESTNUT": "1F330", + "SEEDLING": "1F331", + "EVERGREEN TREE": "1F332", + "DECIDUOUS TREE": "1F333", + "PALM TREE": "1F334", + "CACTUS": "1F335", + "HOT PEPPER": "1F336", + "TULIP": "1F337", + "CHERRY BLOSSOM": "1F338", + "ROSE": "1F339", + "HIBISCUS": "1F33A", + "SUNFLOWER": "1F33B", + "BLOSSOM": "1F33C", + "EAR OF MAIZE": "1F33D", + "EAR OF RICE": "1F33E", + "HERB": "1F33F", + "FOUR LEAF CLOVER": "1F340", + "MAPLE LEAF": "1F341", + "FALLEN LEAF": "1F342", + "LEAF FLUTTERING IN WIND": "1F343", + "MUSHROOM": "1F344", + "TOMATO": "1F345", + "AUBERGINE": "1F346", + "GRAPES": "1F347", + "MELON": "1F348", + "WATERMELON": "1F349", + "TANGERINE": "1F34A", + "LEMON": "1F34B", + "BANANA": "1F34C", + "PINEAPPLE": "1F34D", + "RED APPLE": "1F34E", + "GREEN APPLE": "1F34F", + "PEAR": "1F350", + "PEACH": "1F351", + "CHERRIES": "1F352", + "STRAWBERRY": "1F353", + "HAMBURGER": "1F354", + "SLICE OF PIZZA": "1F355", + "MEAT ON BONE": "1F356", + "POULTRY LEG": "1F357", + "RICE CRACKER": "1F358", + "RICE BALL": "1F359", + "COOKED RICE": "1F35A", + "CURRY AND RICE": "1F35B", + "STEAMING BOWL": "1F35C", + "SPAGHETTI": "1F35D", + "BREAD": "1F35E", + "FRENCH FRIES": "1F35F", + "ROASTED SWEET POTATO": "1F360", + "DANGO": "1F361", + "ODEN": "1F362", + "SUSHI": "1F363", + "FRIED SHRIMP": "1F364", + "FISH CAKE WITH SWIRL DESIGN": "1F365", + "SOFT ICE CREAM": "1F366", + "SHAVED ICE": "1F367", + "ICE CREAM": "1F368", + "DOUGHNUT": "1F369", + "COOKIE": "1F36A", + "CHOCOLATE BAR": "1F36B", + "CANDY": "1F36C", + "LOLLIPOP": "1F36D", + "CUSTARD": "1F36E", + "HONEY POT": "1F36F", + "SHORTCAKE": "1F370", + "BENTO BOX": "1F371", + "POT OF FOOD": "1F372", + "COOKING": "1F373", + "FORK AND KNIFE": "1F374", + "TEACUP WITHOUT HANDLE": "1F375", + "SAKE BOTTLE AND CUP": "1F376", + "WINE GLASS": "1F377", + "COCKTAIL GLASS": "1F378", + "TROPICAL DRINK": "1F379", + "BEER MUG": "1F37A", + "CLINKING BEER MUGS": "1F37B", + "BABY BOTTLE": "1F37C", + "FORK AND KNIFE WITH PLATE": "1F37D", + "BOTTLE WITH POPPING CORK": "1F37E", + "POPCORN": "1F37F", + "RIBBON": "1F380", + "WRAPPED PRESENT": "1F381", + "BIRTHDAY CAKE": "1F382", + "JACK-O-LANTERN": "1F383", + "CHRISTMAS TREE": "1F384", + "FATHER CHRISTMAS": "1F385", + "FIREWORKS": "1F386", + "FIREWORK SPARKLER": "1F387", + "BALLOON": "1F388", + "PARTY POPPER": "1F389", + "CONFETTI BALL": "1F38A", + "TANABATA TREE": "1F38B", + "CROSSED FLAGS": "1F38C", + "PINE DECORATION": "1F38D", + "JAPANESE DOLLS": "1F38E", + "CARP STREAMER": "1F38F", + "WIND CHIME": "1F390", + "MOON VIEWING CEREMONY": "1F391", + "SCHOOL SATCHEL": "1F392", + "GRADUATION CAP": "1F393", + "MILITARY MEDAL": "1F396", + "REMINDER RIBBON": "1F397", + "STUDIO MICROPHONE": "1F399", + "LEVEL SLIDER": "1F39A", + "CONTROL KNOBS": "1F39B", + "FILM FRAMES": "1F39E", + "ADMISSION TICKETS": "1F39F", + "CAROUSEL HORSE": "1F3A0", + "FERRIS WHEEL": "1F3A1", + "ROLLER COASTER": "1F3A2", + "FISHING POLE AND FISH": "1F3A3", + "MICROPHONE": "1F3A4", + "MOVIE CAMERA": "1F3A5", + "CINEMA": "1F3A6", + "HEADPHONE": "1F3A7", + "ARTIST PALETTE": "1F3A8", + "TOP HAT": "1F3A9", + "CIRCUS TENT": "1F3AA", + "TICKET": "1F3AB", + "CLAPPER BOARD": "1F3AC", + "PERFORMING ARTS": "1F3AD", + "VIDEO GAME": "1F3AE", + "DIRECT HIT": "1F3AF", + "SLOT MACHINE": "1F3B0", + "BILLIARDS": "1F3B1", + "GAME DIE": "1F3B2", + "BOWLING": "1F3B3", + "FLOWER PLAYING CARDS": "1F3B4", + "MUSICAL NOTE": "1F3B5", + "MULTIPLE MUSICAL NOTES": "1F3B6", + "SAXOPHONE": "1F3B7", + "GUITAR": "1F3B8", + "MUSICAL KEYBOARD": "1F3B9", + "TRUMPET": "1F3BA", + "VIOLIN": "1F3BB", + "MUSICAL SCORE": "1F3BC", + "RUNNING SHIRT WITH SASH": "1F3BD", + "TENNIS RACQUET AND BALL": "1F3BE", + "SKI AND SKI BOOT": "1F3BF", + "BASKETBALL AND HOOP": "1F3C0", + "CHEQUERED FLAG": "1F3C1", + "SNOWBOARDER": "1F3C2", + "RUNNER": "1F3C3", + "SURFER": "1F3C4", + "SPORTS MEDAL": "1F3C5", + "TROPHY": "1F3C6", + "HORSE RACING": "1F3C7", + "AMERICAN FOOTBALL": "1F3C8", + "RUGBY FOOTBALL": "1F3C9", + "SWIMMER": "1F3CA", + "WEIGHT LIFTER": "1F3CB", + "GOLFER": "1F3CC", + "RACING MOTORCYCLE": "1F3CD", + "RACING CAR": "1F3CE", + "CRICKET BAT AND BALL": "1F3CF", + "VOLLEYBALL": "1F3D0", + "FIELD HOCKEY STICK AND BALL": "1F3D1", + "ICE HOCKEY STICK AND PUCK": "1F3D2", + "TABLE TENNIS PADDLE AND BALL": "1F3D3", + "SNOW CAPPED MOUNTAIN": "1F3D4", + "CAMPING": "1F3D5", + "BEACH WITH UMBRELLA": "1F3D6", + "BUILDING CONSTRUCTION": "1F3D7", + "HOUSE BUILDINGS": "1F3D8", + "CITYSCAPE": "1F3D9", + "DERELICT HOUSE BUILDING": "1F3DA", + "CLASSICAL BUILDING": "1F3DB", + "DESERT": "1F3DC", + "DESERT ISLAND": "1F3DD", + "NATIONAL PARK": "1F3DE", + "STADIUM": "1F3DF", + "HOUSE BUILDING": "1F3E0", + "HOUSE WITH GARDEN": "1F3E1", + "OFFICE BUILDING": "1F3E2", + "JAPANESE POST OFFICE": "1F3E3", + "EUROPEAN POST OFFICE": "1F3E4", + "HOSPITAL": "1F3E5", + "BANK": "1F3E6", + "AUTOMATED TELLER MACHINE": "1F3E7", + "HOTEL": "1F3E8", + "LOVE HOTEL": "1F3E9", + "CONVENIENCE STORE": "1F3EA", + "SCHOOL": "1F3EB", + "DEPARTMENT STORE": "1F3EC", + "FACTORY": "1F3ED", + "IZAKAYA LANTERN": "1F3EE", + "JAPANESE CASTLE": "1F3EF", + "EUROPEAN CASTLE": "1F3F0", + "WAVING WHITE FLAG": "1F3F3", + "WAVING BLACK FLAG": "1F3F4", + "ROSETTE": "1F3F5", + "LABEL": "1F3F7", + "BADMINTON RACQUET AND SHUTTLECOCK": "1F3F8", + "BOW AND ARROW": "1F3F9", + "AMPHORA": "1F3FA", + "EMOJI MODIFIER FITZPATRICK TYPE-1-2": "1F3FB", + "EMOJI MODIFIER FITZPATRICK TYPE-3": "1F3FC", + "EMOJI MODIFIER FITZPATRICK TYPE-4": "1F3FD", + "EMOJI MODIFIER FITZPATRICK TYPE-5": "1F3FE", + "EMOJI MODIFIER FITZPATRICK TYPE-6": "1F3FF", + "RAT": "1F400", + "MOUSE": "1F401", + "OX": "1F402", + "WATER BUFFALO": "1F403", + "COW": "1F404", + "TIGER": "1F405", + "LEOPARD": "1F406", + "RABBIT": "1F407", + "CAT": "1F408", + "DRAGON": "1F409", + "CROCODILE": "1F40A", + "WHALE": "1F40B", + "SNAIL": "1F40C", + "SNAKE": "1F40D", + "HORSE": "1F40E", + "RAM": "1F40F", + "GOAT": "1F410", + "SHEEP": "1F411", + "MONKEY": "1F412", + "ROOSTER": "1F413", + "CHICKEN": "1F414", + "DOG": "1F415", + "PIG": "1F416", + "BOAR": "1F417", + "ELEPHANT": "1F418", + "OCTOPUS": "1F419", + "SPIRAL SHELL": "1F41A", + "BUG": "1F41B", + "ANT": "1F41C", + "HONEYBEE": "1F41D", + "LADY BEETLE": "1F41E", + "FISH": "1F41F", + "TROPICAL FISH": "1F420", + "BLOWFISH": "1F421", + "TURTLE": "1F422", + "HATCHING CHICK": "1F423", + "BABY CHICK": "1F424", + "FRONT-FACING BABY CHICK": "1F425", + "BIRD": "1F426", + "PENGUIN": "1F427", + "KOALA": "1F428", + "POODLE": "1F429", + "DROMEDARY CAMEL": "1F42A", + "BACTRIAN CAMEL": "1F42B", + "DOLPHIN": "1F42C", + "MOUSE FACE": "1F42D", + "COW FACE": "1F42E", + "TIGER FACE": "1F42F", + "RABBIT FACE": "1F430", + "CAT FACE": "1F431", + "DRAGON FACE": "1F432", + "SPOUTING WHALE": "1F433", + "HORSE FACE": "1F434", + "MONKEY FACE": "1F435", + "DOG FACE": "1F436", + "PIG FACE": "1F437", + "FROG FACE": "1F438", + "HAMSTER FACE": "1F439", + "WOLF FACE": "1F43A", + "BEAR FACE": "1F43B", + "PANDA FACE": "1F43C", + "PIG NOSE": "1F43D", + "PAW PRINTS": "1F43E", + "CHIPMUNK": "1F43F", + "EYES": "1F440", + "EYE": "1F441", + "EAR": "1F442", + "NOSE": "1F443", + "MOUTH": "1F444", + "TONGUE": "1F445", + "WHITE UP POINTING BACKHAND INDEX": "1F446", + "WHITE DOWN POINTING BACKHAND INDEX": "1F447", + "WHITE LEFT POINTING BACKHAND INDEX": "1F448", + "WHITE RIGHT POINTING BACKHAND INDEX": "1F449", + "FISTED HAND SIGN": "1F44A", + "WAVING HAND SIGN": "1F44B", + "OK HAND SIGN": "1F44C", + "THUMBS UP SIGN": "1F44D", + "THUMBS DOWN SIGN": "1F44E", + "CLAPPING HANDS SIGN": "1F44F", + "OPEN HANDS SIGN": "1F450", + "CROWN": "1F451", + "WOMANS HAT": "1F452", + "EYEGLASSES": "1F453", + "NECKTIE": "1F454", + "T-SHIRT": "1F455", + "JEANS": "1F456", + "DRESS": "1F457", + "KIMONO": "1F458", + "BIKINI": "1F459", + "WOMANS CLOTHES": "1F45A", + "PURSE": "1F45B", + "HANDBAG": "1F45C", + "POUCH": "1F45D", + "MANS SHOE": "1F45E", + "ATHLETIC SHOE": "1F45F", + "HIGH-HEELED SHOE": "1F460", + "WOMANS SANDAL": "1F461", + "WOMANS BOOTS": "1F462", + "FOOTPRINTS": "1F463", + "BUST IN SILHOUETTE": "1F464", + "BUSTS IN SILHOUETTE": "1F465", + "BOY": "1F466", + "GIRL": "1F467", + "MAN": "1F468", + "WOMAN": "1F469", + "FAMILY": "1F46A", + "MAN AND WOMAN HOLDING HANDS": "1F46B", + "TWO MEN HOLDING HANDS": "1F46C", + "TWO WOMEN HOLDING HANDS": "1F46D", + "POLICE OFFICER": "1F46E", + "WOMAN WITH BUNNY EARS": "1F46F", + "BRIDE WITH VEIL": "1F470", + "PERSON WITH BLOND HAIR": "1F471", + "MAN WITH GUA PI MAO": "1F472", + "MAN WITH TURBAN": "1F473", + "OLDER MAN": "1F474", + "OLDER WOMAN": "1F475", + "BABY": "1F476", + "CONSTRUCTION WORKER": "1F477", + "PRINCESS": "1F478", + "JAPANESE OGRE": "1F479", + "JAPANESE GOBLIN": "1F47A", + "GHOST": "1F47B", + "BABY ANGEL": "1F47C", + "EXTRATERRESTRIAL ALIEN": "1F47D", + "ALIEN MONSTER": "1F47E", + "IMP": "1F47F", + "SKULL": "1F480", + "INFORMATION DESK PERSON": "1F481", + "GUARDSMAN": "1F482", + "DANCER": "1F483", + "LIPSTICK": "1F484", + "NAIL POLISH": "1F485", + "FACE MASSAGE": "1F486", + "HAIRCUT": "1F487", + "BARBER POLE": "1F488", + "SYRINGE": "1F489", + "PILL": "1F48A", + "KISS MARK": "1F48B", + "LOVE LETTER": "1F48C", + "RING": "1F48D", + "GEM STONE": "1F48E", + "KISS": "1F48F", + "BOUQUET": "1F490", + "COUPLE WITH HEART": "1F491", + "WEDDING": "1F492", + "BEATING HEART": "1F493", + "BROKEN HEART": "1F494", + "TWO HEARTS": "1F495", + "SPARKLING HEART": "1F496", + "GROWING HEART": "1F497", + "HEART WITH ARROW": "1F498", + "BLUE HEART": "1F499", + "GREEN HEART": "1F49A", + "YELLOW HEART": "1F49B", + "PURPLE HEART": "1F49C", + "HEART WITH RIBBON": "1F49D", + "REVOLVING HEARTS": "1F49E", + "HEART DECORATION": "1F49F", + "DIAMOND SHAPE WITH A DOT INSIDE": "1F4A0", + "ELECTRIC LIGHT BULB": "1F4A1", + "ANGER SYMBOL": "1F4A2", + "BOMB": "1F4A3", + "SLEEPING SYMBOL": "1F4A4", + "COLLISION SYMBOL": "1F4A5", + "SPLASHING SWEAT SYMBOL": "1F4A6", + "DROPLET": "1F4A7", + "DASH SYMBOL": "1F4A8", + "PILE OF POO": "1F4A9", + "FLEXED BICEPS": "1F4AA", + "DIZZY SYMBOL": "1F4AB", + "SPEECH BALLOON": "1F4AC", + "THOUGHT BALLOON": "1F4AD", + "WHITE FLOWER": "1F4AE", + "HUNDRED POINTS SYMBOL": "1F4AF", + "MONEY BAG": "1F4B0", + "CURRENCY EXCHANGE": "1F4B1", + "HEAVY DOLLAR SIGN": "1F4B2", + "CREDIT CARD": "1F4B3", + "BANKNOTE WITH YEN SIGN": "1F4B4", + "BANKNOTE WITH DOLLAR SIGN": "1F4B5", + "BANKNOTE WITH EURO SIGN": "1F4B6", + "BANKNOTE WITH POUND SIGN": "1F4B7", + "MONEY WITH WINGS": "1F4B8", + "CHART WITH UPWARDS TREND AND YEN SIGN": "1F4B9", + "SEAT": "1F4BA", + "PERSONAL COMPUTER": "1F4BB", + "BRIEFCASE": "1F4BC", + "MINIDISC": "1F4BD", + "FLOPPY DISK": "1F4BE", + "OPTICAL DISC": "1F4BF", + "DVD": "1F4C0", + "FILE FOLDER": "1F4C1", + "OPEN FILE FOLDER": "1F4C2", + "PAGE WITH CURL": "1F4C3", + "PAGE FACING UP": "1F4C4", + "CALENDAR": "1F4C5", + "TEAR-OFF CALENDAR": "1F4C6", + "CARD INDEX": "1F4C7", + "CHART WITH UPWARDS TREND": "1F4C8", + "CHART WITH DOWNWARDS TREND": "1F4C9", + "BAR CHART": "1F4CA", + "CLIPBOARD": "1F4CB", + "PUSHPIN": "1F4CC", + "ROUND PUSHPIN": "1F4CD", + "PAPERCLIP": "1F4CE", + "STRAIGHT RULER": "1F4CF", + "TRIANGULAR RULER": "1F4D0", + "BOOKMARK TABS": "1F4D1", + "LEDGER": "1F4D2", + "NOTEBOOK": "1F4D3", + "NOTEBOOK WITH DECORATIVE COVER": "1F4D4", + "CLOSED BOOK": "1F4D5", + "OPEN BOOK": "1F4D6", + "GREEN BOOK": "1F4D7", + "BLUE BOOK": "1F4D8", + "ORANGE BOOK": "1F4D9", + "BOOKS": "1F4DA", + "NAME BADGE": "1F4DB", + "SCROLL": "1F4DC", + "MEMO": "1F4DD", + "TELEPHONE RECEIVER": "1F4DE", + "PAGER": "1F4DF", + "FAX MACHINE": "1F4E0", + "SATELLITE ANTENNA": "1F4E1", + "PUBLIC ADDRESS LOUDSPEAKER": "1F4E2", + "CHEERING MEGAPHONE": "1F4E3", + "OUTBOX TRAY": "1F4E4", + "INBOX TRAY": "1F4E5", + "PACKAGE": "1F4E6", + "E-MAIL SYMBOL": "1F4E7", + "INCOMING ENVELOPE": "1F4E8", + "ENVELOPE WITH DOWNWARDS ARROW ABOVE": "1F4E9", + "CLOSED MAILBOX WITH LOWERED FLAG": "1F4EA", + "CLOSED MAILBOX WITH RAISED FLAG": "1F4EB", + "OPEN MAILBOX WITH RAISED FLAG": "1F4EC", + "OPEN MAILBOX WITH LOWERED FLAG": "1F4ED", + "POSTBOX": "1F4EE", + "POSTAL HORN": "1F4EF", + "NEWSPAPER": "1F4F0", + "MOBILE PHONE": "1F4F1", + "MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT": "1F4F2", + "VIBRATION MODE": "1F4F3", + "MOBILE PHONE OFF": "1F4F4", + "NO MOBILE PHONES": "1F4F5", + "ANTENNA WITH BARS": "1F4F6", + "CAMERA": "1F4F7", + "CAMERA WITH FLASH": "1F4F8", + "VIDEO CAMERA": "1F4F9", + "TELEVISION": "1F4FA", + "RADIO": "1F4FB", + "VIDEOCASSETTE": "1F4FC", + "FILM PROJECTOR": "1F4FD", + "PRAYER BEADS": "1F4FF", + "TWISTED RIGHTWARDS ARROWS": "1F500", + "CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS": "1F501", + "CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY": "1F502", + "CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS": "1F503", + "ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS": "1F504", + "LOW BRIGHTNESS SYMBOL": "1F505", + "HIGH BRIGHTNESS SYMBOL": "1F506", + "SPEAKER WITH CANCELLATION STROKE": "1F507", + "SPEAKER": "1F508", + "SPEAKER WITH ONE SOUND WAVE": "1F509", + "SPEAKER WITH THREE SOUND WAVES": "1F50A", + "BATTERY": "1F50B", + "ELECTRIC PLUG": "1F50C", + "LEFT-POINTING MAGNIFYING GLASS": "1F50D", + "RIGHT-POINTING MAGNIFYING GLASS": "1F50E", + "LOCK WITH INK PEN": "1F50F", + "CLOSED LOCK WITH KEY": "1F510", + "KEY": "1F511", + "LOCK": "1F512", + "OPEN LOCK": "1F513", + "BELL": "1F514", + "BELL WITH CANCELLATION STROKE": "1F515", + "BOOKMARK": "1F516", + "LINK SYMBOL": "1F517", + "RADIO BUTTON": "1F518", + "BACK WITH LEFTWARDS ARROW ABOVE": "1F519", + "END WITH LEFTWARDS ARROW ABOVE": "1F51A", + "ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE": "1F51B", + "SOON WITH RIGHTWARDS ARROW ABOVE": "1F51C", + "TOP WITH UPWARDS ARROW ABOVE": "1F51D", + "NO ONE UNDER EIGHTEEN SYMBOL": "1F51E", + "KEYCAP TEN": "1F51F", + "INPUT SYMBOL FOR LATIN CAPITAL LETTERS": "1F520", + "INPUT SYMBOL FOR LATIN SMALL LETTERS": "1F521", + "INPUT SYMBOL FOR NUMBERS": "1F522", + "INPUT SYMBOL FOR SYMBOLS": "1F523", + "INPUT SYMBOL FOR LATIN LETTERS": "1F524", + "FIRE": "1F525", + "ELECTRIC TORCH": "1F526", + "WRENCH": "1F527", + "HAMMER": "1F528", + "NUT AND BOLT": "1F529", + "HOCHO": "1F52A", + "PISTOL": "1F52B", + "MICROSCOPE": "1F52C", + "TELESCOPE": "1F52D", + "CRYSTAL BALL": "1F52E", + "SIX POINTED STAR WITH MIDDLE DOT": "1F52F", + "JAPANESE SYMBOL FOR BEGINNER": "1F530", + "TRIDENT EMBLEM": "1F531", + "BLACK SQUARE BUTTON": "1F532", + "WHITE SQUARE BUTTON": "1F533", + "LARGE RED CIRCLE": "1F534", + "LARGE BLUE CIRCLE": "1F535", + "LARGE ORANGE DIAMOND": "1F536", + "LARGE BLUE DIAMOND": "1F537", + "SMALL ORANGE DIAMOND": "1F538", + "SMALL BLUE DIAMOND": "1F539", + "UP-POINTING RED TRIANGLE": "1F53A", + "DOWN-POINTING RED TRIANGLE": "1F53B", + "UP-POINTING SMALL RED TRIANGLE": "1F53C", + "DOWN-POINTING SMALL RED TRIANGLE": "1F53D", + "OM SYMBOL": "1F549", + "DOVE OF PEACE": "1F54A", + "KAABA": "1F54B", + "MOSQUE": "1F54C", + "SYNAGOGUE": "1F54D", + "MENORAH WITH NINE BRANCHES": "1F54E", + "CLOCK FACE ONE OCLOCK": "1F550", + "CLOCK FACE TWO OCLOCK": "1F551", + "CLOCK FACE THREE OCLOCK": "1F552", + "CLOCK FACE FOUR OCLOCK": "1F553", + "CLOCK FACE FIVE OCLOCK": "1F554", + "CLOCK FACE SIX OCLOCK": "1F555", + "CLOCK FACE SEVEN OCLOCK": "1F556", + "CLOCK FACE EIGHT OCLOCK": "1F557", + "CLOCK FACE NINE OCLOCK": "1F558", + "CLOCK FACE TEN OCLOCK": "1F559", + "CLOCK FACE ELEVEN OCLOCK": "1F55A", + "CLOCK FACE TWELVE OCLOCK": "1F55B", + "CLOCK FACE ONE-THIRTY": "1F55C", + "CLOCK FACE TWO-THIRTY": "1F55D", + "CLOCK FACE THREE-THIRTY": "1F55E", + "CLOCK FACE FOUR-THIRTY": "1F55F", + "CLOCK FACE FIVE-THIRTY": "1F560", + "CLOCK FACE SIX-THIRTY": "1F561", + "CLOCK FACE SEVEN-THIRTY": "1F562", + "CLOCK FACE EIGHT-THIRTY": "1F563", + "CLOCK FACE NINE-THIRTY": "1F564", + "CLOCK FACE TEN-THIRTY": "1F565", + "CLOCK FACE ELEVEN-THIRTY": "1F566", + "CLOCK FACE TWELVE-THIRTY": "1F567", + "CANDLE": "1F56F", + "MANTELPIECE CLOCK": "1F570", + "HOLE": "1F573", + "MAN IN BUSINESS SUIT LEVITATING": "1F574", + "SLEUTH OR SPY": "1F575", + "DARK SUNGLASSES": "1F576", + "SPIDER": "1F577", + "SPIDER WEB": "1F578", + "JOYSTICK": "1F579", + "MAN DANCING": "1F57A", + "LINKED PAPERCLIPS": "1F587", + "LOWER LEFT BALLPOINT PEN": "1F58A", + "LOWER LEFT FOUNTAIN PEN": "1F58B", + "LOWER LEFT PAINTBRUSH": "1F58C", + "LOWER LEFT CRAYON": "1F58D", + "RAISED HAND WITH FINGERS SPLAYED": "1F590", + "REVERSED HAND WITH MIDDLE FINGER EXTENDED": "1F595", + "RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS": "1F596", + "BLACK HEART": "1F5A4", + "DESKTOP COMPUTER": "1F5A5", + "PRINTER": "1F5A8", + "THREE BUTTON MOUSE": "1F5B1", + "TRACKBALL": "1F5B2", + "FRAME WITH PICTURE": "1F5BC", + "CARD INDEX DIVIDERS": "1F5C2", + "CARD FILE BOX": "1F5C3", + "FILE CABINET": "1F5C4", + "WASTEBASKET": "1F5D1", + "SPIRAL NOTE PAD": "1F5D2", + "SPIRAL CALENDAR PAD": "1F5D3", + "COMPRESSION": "1F5DC", + "OLD KEY": "1F5DD", + "ROLLED-UP NEWSPAPER": "1F5DE", + "DAGGER KNIFE": "1F5E1", + "SPEAKING HEAD IN SILHOUETTE": "1F5E3", + "LEFT SPEECH BUBBLE": "1F5E8", + "RIGHT ANGER BUBBLE": "1F5EF", + "BALLOT BOX WITH BALLOT": "1F5F3", + "WORLD MAP": "1F5FA", + "MOUNT FUJI": "1F5FB", + "TOKYO TOWER": "1F5FC", + "STATUE OF LIBERTY": "1F5FD", + "SILHOUETTE OF JAPAN": "1F5FE", + "MOYAI": "1F5FF", + "GRINNING FACE": "1F600", + "GRINNING FACE WITH SMILING EYES": "1F601", + "FACE WITH TEARS OF JOY": "1F602", + "SMILING FACE WITH OPEN MOUTH": "1F603", + "SMILING FACE WITH OPEN MOUTH AND SMILING EYES": "1F604", + "SMILING FACE WITH OPEN MOUTH AND COLD SWEAT": "1F605", + "SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES": "1F606", + "SMILING FACE WITH HALO": "1F607", + "SMILING FACE WITH HORNS": "1F608", + "WINKING FACE": "1F609", + "SMILING FACE WITH SMILING EYES": "1F60A", + "FACE SAVOURING DELICIOUS FOOD": "1F60B", + "RELIEVED FACE": "1F60C", + "SMILING FACE WITH HEART-SHAPED EYES": "1F60D", + "SMILING FACE WITH SUNGLASSES": "1F60E", + "SMIRKING FACE": "1F60F", + "NEUTRAL FACE": "1F610", + "EXPRESSIONLESS FACE": "1F611", + "UNAMUSED FACE": "1F612", + "FACE WITH COLD SWEAT": "1F613", + "PENSIVE FACE": "1F614", + "CONFUSED FACE": "1F615", + "CONFOUNDED FACE": "1F616", + "KISSING FACE": "1F617", + "FACE THROWING A KISS": "1F618", + "KISSING FACE WITH SMILING EYES": "1F619", + "KISSING FACE WITH CLOSED EYES": "1F61A", + "FACE WITH STUCK-OUT TONGUE": "1F61B", + "FACE WITH STUCK-OUT TONGUE AND WINKING EYE": "1F61C", + "FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES": "1F61D", + "DISAPPOINTED FACE": "1F61E", + "WORRIED FACE": "1F61F", + "ANGRY FACE": "1F620", + "POUTING FACE": "1F621", + "CRYING FACE": "1F622", + "PERSEVERING FACE": "1F623", + "FACE WITH LOOK OF TRIUMPH": "1F624", + "DISAPPOINTED BUT RELIEVED FACE": "1F625", + "FROWNING FACE WITH OPEN MOUTH": "1F626", + "ANGUISHED FACE": "1F627", + "FEARFUL FACE": "1F628", + "WEARY FACE": "1F629", + "SLEEPY FACE": "1F62A", + "TIRED FACE": "1F62B", + "GRIMACING FACE": "1F62C", + "LOUDLY CRYING FACE": "1F62D", + "FACE WITH OPEN MOUTH": "1F62E", + "HUSHED FACE": "1F62F", + "FACE WITH OPEN MOUTH AND COLD SWEAT": "1F630", + "FACE SCREAMING IN FEAR": "1F631", + "ASTONISHED FACE": "1F632", + "FLUSHED FACE": "1F633", + "SLEEPING FACE": "1F634", + "DIZZY FACE": "1F635", + "FACE WITHOUT MOUTH": "1F636", + "FACE WITH MEDICAL MASK": "1F637", + "GRINNING CAT FACE WITH SMILING EYES": "1F638", + "CAT FACE WITH TEARS OF JOY": "1F639", + "SMILING CAT FACE WITH OPEN MOUTH": "1F63A", + "SMILING CAT FACE WITH HEART-SHAPED EYES": "1F63B", + "CAT FACE WITH WRY SMILE": "1F63C", + "KISSING CAT FACE WITH CLOSED EYES": "1F63D", + "POUTING CAT FACE": "1F63E", + "CRYING CAT FACE": "1F63F", + "WEARY CAT FACE": "1F640", + "SLIGHTLY FROWNING FACE": "1F641", + "SLIGHTLY SMILING FACE": "1F642", + "UPSIDE-DOWN FACE": "1F643", + "FACE WITH ROLLING EYES": "1F644", + "FACE WITH NO GOOD GESTURE": "1F645", + "FACE WITH OK GESTURE": "1F646", + "PERSON BOWING DEEPLY": "1F647", + "SEE-NO-EVIL MONKEY": "1F648", + "HEAR-NO-EVIL MONKEY": "1F649", + "SPEAK-NO-EVIL MONKEY": "1F64A", + "HAPPY PERSON RAISING ONE HAND": "1F64B", + "PERSON RAISING BOTH HANDS IN CELEBRATION": "1F64C", + "PERSON FROWNING": "1F64D", + "PERSON WITH POUTING FACE": "1F64E", + "PERSON WITH FOLDED HANDS": "1F64F", + "ROCKET": "1F680", + "HELICOPTER": "1F681", + "STEAM LOCOMOTIVE": "1F682", + "RAILWAY CAR": "1F683", + "HIGH-SPEED TRAIN": "1F684", + "HIGH-SPEED TRAIN WITH BULLET NOSE": "1F685", + "TRAIN": "1F686", + "METRO": "1F687", + "LIGHT RAIL": "1F688", + "STATION": "1F689", + "TRAM": "1F68A", + "TRAM CAR": "1F68B", + "BUS": "1F68C", + "ONCOMING BUS": "1F68D", + "TROLLEYBUS": "1F68E", + "BUS STOP": "1F68F", + "MINIBUS": "1F690", + "AMBULANCE": "1F691", + "FIRE ENGINE": "1F692", + "POLICE CAR": "1F693", + "ONCOMING POLICE CAR": "1F694", + "TAXI": "1F695", + "ONCOMING TAXI": "1F696", + "AUTOMOBILE": "1F697", + "ONCOMING AUTOMOBILE": "1F698", + "RECREATIONAL VEHICLE": "1F699", + "DELIVERY TRUCK": "1F69A", + "ARTICULATED LORRY": "1F69B", + "TRACTOR": "1F69C", + "MONORAIL": "1F69D", + "MOUNTAIN RAILWAY": "1F69E", + "SUSPENSION RAILWAY": "1F69F", + "MOUNTAIN CABLEWAY": "1F6A0", + "AERIAL TRAMWAY": "1F6A1", + "SHIP": "1F6A2", + "ROWBOAT": "1F6A3", + "SPEEDBOAT": "1F6A4", + "HORIZONTAL TRAFFIC LIGHT": "1F6A5", + "VERTICAL TRAFFIC LIGHT": "1F6A6", + "CONSTRUCTION SIGN": "1F6A7", + "POLICE CARS REVOLVING LIGHT": "1F6A8", + "TRIANGULAR FLAG ON POST": "1F6A9", + "DOOR": "1F6AA", + "NO ENTRY SIGN": "1F6AB", + "SMOKING SYMBOL": "1F6AC", + "NO SMOKING SYMBOL": "1F6AD", + "PUT LITTER IN ITS PLACE SYMBOL": "1F6AE", + "DO NOT LITTER SYMBOL": "1F6AF", + "POTABLE WATER SYMBOL": "1F6B0", + "NON-POTABLE WATER SYMBOL": "1F6B1", + "BICYCLE": "1F6B2", + "NO BICYCLES": "1F6B3", + "BICYCLIST": "1F6B4", + "MOUNTAIN BICYCLIST": "1F6B5", + "PEDESTRIAN": "1F6B6", + "NO PEDESTRIANS": "1F6B7", + "CHILDREN CROSSING": "1F6B8", + "MENS SYMBOL": "1F6B9", + "WOMENS SYMBOL": "1F6BA", + "RESTROOM": "1F6BB", + "BABY SYMBOL": "1F6BC", + "TOILET": "1F6BD", + "WATER CLOSET": "1F6BE", + "SHOWER": "1F6BF", + "BATH": "1F6C0", + "BATHTUB": "1F6C1", + "PASSPORT CONTROL": "1F6C2", + "CUSTOMS": "1F6C3", + "BAGGAGE CLAIM": "1F6C4", + "LEFT LUGGAGE": "1F6C5", + "COUCH AND LAMP": "1F6CB", + "SLEEPING ACCOMMODATION": "1F6CC", + "SHOPPING BAGS": "1F6CD", + "BELLHOP BELL": "1F6CE", + "BED": "1F6CF", + "PLACE OF WORSHIP": "1F6D0", + "OCTAGONAL SIGN": "1F6D1", + "SHOPPING TROLLEY": "1F6D2", + "HINDU TEMPLE": "1F6D5", + "HUT": "1F6D6", + "ELEVATOR": "1F6D7", + "HAMMER AND WRENCH": "1F6E0", + "SHIELD": "1F6E1", + "OIL DRUM": "1F6E2", + "MOTORWAY": "1F6E3", + "RAILWAY TRACK": "1F6E4", + "MOTOR BOAT": "1F6E5", + "SMALL AIRPLANE": "1F6E9", + "AIRPLANE DEPARTURE": "1F6EB", + "AIRPLANE ARRIVING": "1F6EC", + "SATELLITE": "1F6F0", + "PASSENGER SHIP": "1F6F3", + "SCOOTER": "1F6F4", + "MOTOR SCOOTER": "1F6F5", + "CANOE": "1F6F6", + "SLED": "1F6F7", + "FLYING SAUCER": "1F6F8", + "SKATEBOARD": "1F6F9", + "AUTO RICKSHAW": "1F6FA", + "PICKUP TRUCK": "1F6FB", + "ROLLER SKATE": "1F6FC", + "LARGE ORANGE CIRCLE": "1F7E0", + "LARGE YELLOW CIRCLE": "1F7E1", + "LARGE GREEN CIRCLE": "1F7E2", + "LARGE PURPLE CIRCLE": "1F7E3", + "LARGE BROWN CIRCLE": "1F7E4", + "LARGE RED SQUARE": "1F7E5", + "LARGE BLUE SQUARE": "1F7E6", + "LARGE ORANGE SQUARE": "1F7E7", + "LARGE YELLOW SQUARE": "1F7E8", + "LARGE GREEN SQUARE": "1F7E9", + "LARGE PURPLE SQUARE": "1F7EA", + "LARGE BROWN SQUARE": "1F7EB", + "PINCHED FINGERS": "1F90C", + "WHITE HEART": "1F90D", + "BROWN HEART": "1F90E", + "PINCHING HAND": "1F90F", + "ZIPPER-MOUTH FACE": "1F910", + "MONEY-MOUTH FACE": "1F911", + "FACE WITH THERMOMETER": "1F912", + "NERD FACE": "1F913", + "THINKING FACE": "1F914", + "FACE WITH HEAD-BANDAGE": "1F915", + "ROBOT FACE": "1F916", + "HUGGING FACE": "1F917", + "SIGN OF THE HORNS": "1F918", + "CALL ME HAND": "1F919", + "RAISED BACK OF HAND": "1F91A", + "LEFT-FACING FIST": "1F91B", + "RIGHT-FACING FIST": "1F91C", + "HANDSHAKE": "1F91D", + "HAND WITH INDEX AND MIDDLE FINGERS CROSSED": "1F91E", + "I LOVE YOU HAND SIGN": "1F91F", + "FACE WITH COWBOY HAT": "1F920", + "CLOWN FACE": "1F921", + "NAUSEATED FACE": "1F922", + "ROLLING ON THE FLOOR LAUGHING": "1F923", + "DROOLING FACE": "1F924", + "LYING FACE": "1F925", + "FACE PALM": "1F926", + "SNEEZING FACE": "1F927", + "FACE WITH ONE EYEBROW RAISED": "1F928", + "GRINNING FACE WITH STAR EYES": "1F929", + "GRINNING FACE WITH ONE LARGE AND ONE SMALL EYE": "1F92A", + "FACE WITH FINGER COVERING CLOSED LIPS": "1F92B", + "SERIOUS FACE WITH SYMBOLS COVERING MOUTH": "1F92C", + "SMILING FACE WITH SMILING EYES AND HAND COVERING MOUTH": "1F92D", + "FACE WITH OPEN MOUTH VOMITING": "1F92E", + "SHOCKED FACE WITH EXPLODING HEAD": "1F92F", + "PREGNANT WOMAN": "1F930", + "BREAST-FEEDING": "1F931", + "PALMS UP TOGETHER": "1F932", + "SELFIE": "1F933", + "PRINCE": "1F934", + "MAN IN TUXEDO": "1F935", + "MOTHER CHRISTMAS": "1F936", + "SHRUG": "1F937", + "PERSON DOING CARTWHEEL": "1F938", + "JUGGLING": "1F939", + "FENCER": "1F93A", + "WRESTLERS": "1F93C", + "WATER POLO": "1F93D", + "HANDBALL": "1F93E", + "DIVING MASK": "1F93F", + "WILTED FLOWER": "1F940", + "DRUM WITH DRUMSTICKS": "1F941", + "CLINKING GLASSES": "1F942", + "TUMBLER GLASS": "1F943", + "SPOON": "1F944", + "GOAL NET": "1F945", + "FIRST PLACE MEDAL": "1F947", + "SECOND PLACE MEDAL": "1F948", + "THIRD PLACE MEDAL": "1F949", + "BOXING GLOVE": "1F94A", + "MARTIAL ARTS UNIFORM": "1F94B", + "CURLING STONE": "1F94C", + "LACROSSE STICK AND BALL": "1F94D", + "SOFTBALL": "1F94E", + "FLYING DISC": "1F94F", + "CROISSANT": "1F950", + "AVOCADO": "1F951", + "CUCUMBER": "1F952", + "BACON": "1F953", + "POTATO": "1F954", + "CARROT": "1F955", + "BAGUETTE BREAD": "1F956", + "GREEN SALAD": "1F957", + "SHALLOW PAN OF FOOD": "1F958", + "STUFFED FLATBREAD": "1F959", + "EGG": "1F95A", + "GLASS OF MILK": "1F95B", + "PEANUTS": "1F95C", + "KIWIFRUIT": "1F95D", + "PANCAKES": "1F95E", + "DUMPLING": "1F95F", + "FORTUNE COOKIE": "1F960", + "TAKEOUT BOX": "1F961", + "CHOPSTICKS": "1F962", + "BOWL WITH SPOON": "1F963", + "CUP WITH STRAW": "1F964", + "COCONUT": "1F965", + "BROCCOLI": "1F966", + "PIE": "1F967", + "PRETZEL": "1F968", + "CUT OF MEAT": "1F969", + "SANDWICH": "1F96A", + "CANNED FOOD": "1F96B", + "LEAFY GREEN": "1F96C", + "MANGO": "1F96D", + "MOON CAKE": "1F96E", + "BAGEL": "1F96F", + "SMILING FACE WITH SMILING EYES AND THREE HEARTS": "1F970", + "YAWNING FACE": "1F971", + "SMILING FACE WITH TEAR": "1F972", + "FACE WITH PARTY HORN AND PARTY HAT": "1F973", + "FACE WITH UNEVEN EYES AND WAVY MOUTH": "1F974", + "OVERHEATED FACE": "1F975", + "FREEZING FACE": "1F976", + "NINJA": "1F977", + "DISGUISED FACE": "1F978", + "FACE WITH PLEADING EYES": "1F97A", + "SARI": "1F97B", + "LAB COAT": "1F97C", + "GOGGLES": "1F97D", + "HIKING BOOT": "1F97E", + "FLAT SHOE": "1F97F", + "CRAB": "1F980", + "LION FACE": "1F981", + "SCORPION": "1F982", + "TURKEY": "1F983", + "UNICORN FACE": "1F984", + "EAGLE": "1F985", + "DUCK": "1F986", + "BAT": "1F987", + "SHARK": "1F988", + "OWL": "1F989", + "FOX FACE": "1F98A", + "BUTTERFLY": "1F98B", + "DEER": "1F98C", + "GORILLA": "1F98D", + "LIZARD": "1F98E", + "RHINOCEROS": "1F98F", + "SHRIMP": "1F990", + "SQUID": "1F991", + "GIRAFFE FACE": "1F992", + "ZEBRA FACE": "1F993", + "HEDGEHOG": "1F994", + "SAUROPOD": "1F995", + "T-REX": "1F996", + "CRICKET": "1F997", + "KANGAROO": "1F998", + "LLAMA": "1F999", + "PEACOCK": "1F99A", + "HIPPOPOTAMUS": "1F99B", + "PARROT": "1F99C", + "RACCOON": "1F99D", + "LOBSTER": "1F99E", + "MOSQUITO": "1F99F", + "MICROBE": "1F9A0", + "BADGER": "1F9A1", + "SWAN": "1F9A2", + "MAMMOTH": "1F9A3", + "DODO": "1F9A4", + "SLOTH": "1F9A5", + "OTTER": "1F9A6", + "ORANGUTAN": "1F9A7", + "SKUNK": "1F9A8", + "FLAMINGO": "1F9A9", + "OYSTER": "1F9AA", + "BEAVER": "1F9AB", + "BISON": "1F9AC", + "SEAL": "1F9AD", + "GUIDE DOG": "1F9AE", + "PROBING CANE": "1F9AF", + "EMOJI COMPONENT RED HAIR": "1F9B0", + "EMOJI COMPONENT CURLY HAIR": "1F9B1", + "EMOJI COMPONENT BALD": "1F9B2", + "EMOJI COMPONENT WHITE HAIR": "1F9B3", + "BONE": "1F9B4", + "LEG": "1F9B5", + "FOOT": "1F9B6", + "TOOTH": "1F9B7", + "SUPERHERO": "1F9B8", + "SUPERVILLAIN": "1F9B9", + "SAFETY VEST": "1F9BA", + "EAR WITH HEARING AID": "1F9BB", + "MOTORIZED WHEELCHAIR": "1F9BC", + "MANUAL WHEELCHAIR": "1F9BD", + "MECHANICAL ARM": "1F9BE", + "MECHANICAL LEG": "1F9BF", + "CHEESE WEDGE": "1F9C0", + "CUPCAKE": "1F9C1", + "SALT SHAKER": "1F9C2", + "BEVERAGE BOX": "1F9C3", + "GARLIC": "1F9C4", + "ONION": "1F9C5", + "FALAFEL": "1F9C6", + "WAFFLE": "1F9C7", + "BUTTER": "1F9C8", + "MATE DRINK": "1F9C9", + "ICE CUBE": "1F9CA", + "BUBBLE TEA": "1F9CB", + "STANDING PERSON": "1F9CD", + "KNEELING PERSON": "1F9CE", + "DEAF PERSON": "1F9CF", + "FACE WITH MONOCLE": "1F9D0", + "ADULT": "1F9D1", + "CHILD": "1F9D2", + "OLDER ADULT": "1F9D3", + "BEARDED PERSON": "1F9D4", + "PERSON WITH HEADSCARF": "1F9D5", + "PERSON IN STEAMY ROOM": "1F9D6", + "PERSON CLIMBING": "1F9D7", + "PERSON IN LOTUS POSITION": "1F9D8", + "MAGE": "1F9D9", + "FAIRY": "1F9DA", + "VAMPIRE": "1F9DB", + "MERPERSON": "1F9DC", + "ELF": "1F9DD", + "GENIE": "1F9DE", + "ZOMBIE": "1F9DF", + "BRAIN": "1F9E0", + "ORANGE HEART": "1F9E1", + "BILLED CAP": "1F9E2", + "SCARF": "1F9E3", + "GLOVES": "1F9E4", + "COAT": "1F9E5", + "SOCKS": "1F9E6", + "RED GIFT ENVELOPE": "1F9E7", + "FIRECRACKER": "1F9E8", + "JIGSAW PUZZLE PIECE": "1F9E9", + "TEST TUBE": "1F9EA", + "PETRI DISH": "1F9EB", + "DNA DOUBLE HELIX": "1F9EC", + "COMPASS": "1F9ED", + "ABACUS": "1F9EE", + "FIRE EXTINGUISHER": "1F9EF", + "TOOLBOX": "1F9F0", + "BRICK": "1F9F1", + "MAGNET": "1F9F2", + "LUGGAGE": "1F9F3", + "LOTION BOTTLE": "1F9F4", + "SPOOL OF THREAD": "1F9F5", + "BALL OF YARN": "1F9F6", + "SAFETY PIN": "1F9F7", + "TEDDY BEAR": "1F9F8", + "BROOM": "1F9F9", + "BASKET": "1F9FA", + "ROLL OF PAPER": "1F9FB", + "BAR OF SOAP": "1F9FC", + "SPONGE": "1F9FD", + "RECEIPT": "1F9FE", + "NAZAR AMULET": "1F9FF", + "BALLET SHOES": "1FA70", + "ONE-PIECE SWIMSUIT": "1FA71", + "BRIEFS": "1FA72", + "SHORTS": "1FA73", + "THONG SANDAL": "1FA74", + "DROP OF BLOOD": "1FA78", + "ADHESIVE BANDAGE": "1FA79", + "STETHOSCOPE": "1FA7A", + "YO-YO": "1FA80", + "KITE": "1FA81", + "PARACHUTE": "1FA82", + "BOOMERANG": "1FA83", + "MAGIC WAND": "1FA84", + "PINATA": "1FA85", + "NESTING DOLLS": "1FA86", + "RINGED PLANET": "1FA90", + "CHAIR": "1FA91", + "RAZOR": "1FA92", + "AXE": "1FA93", + "DIYA LAMP": "1FA94", + "BANJO": "1FA95", + "MILITARY HELMET": "1FA96", + "ACCORDION": "1FA97", + "LONG DRUM": "1FA98", + "COIN": "1FA99", + "CARPENTRY SAW": "1FA9A", + "SCREWDRIVER": "1FA9B", + "LADDER": "1FA9C", + "HOOK": "1FA9D", + "MIRROR": "1FA9E", + "WINDOW": "1FA9F", + "PLUNGER": "1FAA0", + "SEWING NEEDLE": "1FAA1", + "KNOT": "1FAA2", + "BUCKET": "1FAA3", + "MOUSE TRAP": "1FAA4", + "TOOTHBRUSH": "1FAA5", + "HEADSTONE": "1FAA6", + "PLACARD": "1FAA7", + "ROCK": "1FAA8", + "FLY": "1FAB0", + "WORM": "1FAB1", + "BEETLE": "1FAB2", + "COCKROACH": "1FAB3", + "POTTED PLANT": "1FAB4", + "WOOD": "1FAB5", + "FEATHER": "1FAB6", + "ANATOMICAL HEART": "1FAC0", + "LUNGS": "1FAC1", + "PEOPLE HUGGING": "1FAC2", + "BLUEBERRIES": "1FAD0", + "BELL PEPPER": "1FAD1", + "OLIVE": "1FAD2", + "FLATBREAD": "1FAD3", + "TAMALE": "1FAD4", + "FONDUE": "1FAD5", + "TEAPOT": "1FAD6" +} diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex index dd9c746dc..c2b8d3540 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex @@ -91,4 +91,23 @@ def delete(%{assigns: %{user: user}} = conn, %{id: activity_id, emoji: emoji}) d |> render("show.json", activity: activity, for: user, as: :activity) end end + + @external_resource "lib/pleroma/web/pleroma_api/controllers/emoji.json" + + @reactions_json File.read!(@external_resource) + |> Jason.decode!() + |> Enum.reduce(%{}, fn {name, codepoint}, acc -> + Map.put( + acc, + String.downcase(name), + [codepoint |> String.to_integer(16)] |> String.Chars.to_string() + ) + end) + |> Jason.encode!() + + def emoji_reactions(conn, _params) do + conn + |> put_resp_content_type("application/json") + |> send_resp(200, @reactions_json) + end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 75a885377..5f3c4f787 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -348,6 +348,7 @@ defmodule Pleroma.Web.Router do scope "/api/v1/pleroma", Pleroma.Web.PleromaAPI do pipe_through(:api) + get("/emoji_reactions", EmojiReactionController, :emoji_reactions) get("/statuses/:id/reactions/:emoji", EmojiReactionController, :index) get("/statuses/:id/reactions", EmojiReactionController, :index) end diff --git a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs index bda9c20c6..d7d2066aa 100644 --- a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs +++ b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs @@ -188,4 +188,16 @@ test "GET /api/v1/pleroma/statuses/:id/reactions/:emoji", %{conn: conn} do assert represented_user["id"] == other_user.id end + + describe "/api/v1/pleroma/emoji_reactions" do + test "returns json with unicode emojis", %{conn: conn} do + emoji = + conn + |> get("/api/v1/pleroma/emoji_reactions") + |> json_response(200) + + assert emoji["cookie"] == "🍪" + assert Enum.count(emoji) == 1367 + end + end end