diff --git a/snakefire/emoji.py b/snakefire/emoji.py new file mode 100644 index 0000000..3557dd9 --- /dev/null +++ b/snakefire/emoji.py @@ -0,0 +1,946 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (c) 2012, lepture.com +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of the author nor the names of its contributors +# may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import json +import re +import urllib2 + + +class Emoji: + def __init__(self): + try: + response = urllib2.urlopen('https://api.github.com/emojis') + self.emojis = json.loads(response.read()) + except: + self.emojis = { + "+1": "https://assets-cdn.github.com/images/icons/emoji/+1.png?v5", + "-1": "https://assets-cdn.github.com/images/icons/emoji/-1.png?v5", + "100": "https://assets-cdn.github.com/images/icons/emoji/100.png?v5", + "1234": "https://assets-cdn.github.com/images/icons/emoji/1234.png?v5", + "8ball": "https://assets-cdn.github.com/images/icons/emoji/8ball.png?v5", + "a": "https://assets-cdn.github.com/images/icons/emoji/a.png?v5", + "ab": "https://assets-cdn.github.com/images/icons/emoji/ab.png?v5", + "abc": "https://assets-cdn.github.com/images/icons/emoji/abc.png?v5", + "abcd": "https://assets-cdn.github.com/images/icons/emoji/abcd.png?v5", + "accept": "https://assets-cdn.github.com/images/icons/emoji/accept.png?v5", + "aerial_tramway": "https://assets-cdn.github.com/images/icons/emoji/aerial_tramway.png?v5", + "airplane": "https://assets-cdn.github.com/images/icons/emoji/airplane.png?v5", + "alarm_clock": "https://assets-cdn.github.com/images/icons/emoji/alarm_clock.png?v5", + "alien": "https://assets-cdn.github.com/images/icons/emoji/alien.png?v5", + "ambulance": "https://assets-cdn.github.com/images/icons/emoji/ambulance.png?v5", + "anchor": "https://assets-cdn.github.com/images/icons/emoji/anchor.png?v5", + "angel": "https://assets-cdn.github.com/images/icons/emoji/angel.png?v5", + "anger": "https://assets-cdn.github.com/images/icons/emoji/anger.png?v5", + "angry": "https://assets-cdn.github.com/images/icons/emoji/angry.png?v5", + "anguished": "https://assets-cdn.github.com/images/icons/emoji/anguished.png?v5", + "ant": "https://assets-cdn.github.com/images/icons/emoji/ant.png?v5", + "apple": "https://assets-cdn.github.com/images/icons/emoji/apple.png?v5", + "aquarius": "https://assets-cdn.github.com/images/icons/emoji/aquarius.png?v5", + "aries": "https://assets-cdn.github.com/images/icons/emoji/aries.png?v5", + "arrow_backward": "https://assets-cdn.github.com/images/icons/emoji/arrow_backward.png?v5", + "arrow_double_down": "https://assets-cdn.github.com/images/icons/emoji/arrow_double_down.png?v5", + "arrow_double_up": "https://assets-cdn.github.com/images/icons/emoji/arrow_double_up.png?v5", + "arrow_down": "https://assets-cdn.github.com/images/icons/emoji/arrow_down.png?v5", + "arrow_down_small": "https://assets-cdn.github.com/images/icons/emoji/arrow_down_small.png?v5", + "arrow_forward": "https://assets-cdn.github.com/images/icons/emoji/arrow_forward.png?v5", + "arrow_heading_down": "https://assets-cdn.github.com/images/icons/emoji/arrow_heading_down.png?v5", + "arrow_heading_up": "https://assets-cdn.github.com/images/icons/emoji/arrow_heading_up.png?v5", + "arrow_left": "https://assets-cdn.github.com/images/icons/emoji/arrow_left.png?v5", + "arrow_lower_left": "https://assets-cdn.github.com/images/icons/emoji/arrow_lower_left.png?v5", + "arrow_lower_right": "https://assets-cdn.github.com/images/icons/emoji/arrow_lower_right.png?v5", + "arrow_right": "https://assets-cdn.github.com/images/icons/emoji/arrow_right.png?v5", + "arrow_right_hook": "https://assets-cdn.github.com/images/icons/emoji/arrow_right_hook.png?v5", + "arrow_up": "https://assets-cdn.github.com/images/icons/emoji/arrow_up.png?v5", + "arrow_up_down": "https://assets-cdn.github.com/images/icons/emoji/arrow_up_down.png?v5", + "arrow_up_small": "https://assets-cdn.github.com/images/icons/emoji/arrow_up_small.png?v5", + "arrow_upper_left": "https://assets-cdn.github.com/images/icons/emoji/arrow_upper_left.png?v5", + "arrow_upper_right": "https://assets-cdn.github.com/images/icons/emoji/arrow_upper_right.png?v5", + "arrows_clockwise": "https://assets-cdn.github.com/images/icons/emoji/arrows_clockwise.png?v5", + "arrows_counterclockwise": "https://assets-cdn.github.com/images/icons/emoji/arrows_counterclockwise.png?v5", + "art": "https://assets-cdn.github.com/images/icons/emoji/art.png?v5", + "articulated_lorry": "https://assets-cdn.github.com/images/icons/emoji/articulated_lorry.png?v5", + "astonished": "https://assets-cdn.github.com/images/icons/emoji/astonished.png?v5", + "athletic_shoe": "https://assets-cdn.github.com/images/icons/emoji/athletic_shoe.png?v5", + "atm": "https://assets-cdn.github.com/images/icons/emoji/atm.png?v5", + "b": "https://assets-cdn.github.com/images/icons/emoji/b.png?v5", + "baby": "https://assets-cdn.github.com/images/icons/emoji/baby.png?v5", + "baby_bottle": "https://assets-cdn.github.com/images/icons/emoji/baby_bottle.png?v5", + "baby_chick": "https://assets-cdn.github.com/images/icons/emoji/baby_chick.png?v5", + "baby_symbol": "https://assets-cdn.github.com/images/icons/emoji/baby_symbol.png?v5", + "back": "https://assets-cdn.github.com/images/icons/emoji/back.png?v5", + "baggage_claim": "https://assets-cdn.github.com/images/icons/emoji/baggage_claim.png?v5", + "balloon": "https://assets-cdn.github.com/images/icons/emoji/balloon.png?v5", + "ballot_box_with_check": "https://assets-cdn.github.com/images/icons/emoji/ballot_box_with_check.png?v5", + "bamboo": "https://assets-cdn.github.com/images/icons/emoji/bamboo.png?v5", + "banana": "https://assets-cdn.github.com/images/icons/emoji/banana.png?v5", + "bangbang": "https://assets-cdn.github.com/images/icons/emoji/bangbang.png?v5", + "bank": "https://assets-cdn.github.com/images/icons/emoji/bank.png?v5", + "bar_chart": "https://assets-cdn.github.com/images/icons/emoji/bar_chart.png?v5", + "barber": "https://assets-cdn.github.com/images/icons/emoji/barber.png?v5", + "baseball": "https://assets-cdn.github.com/images/icons/emoji/baseball.png?v5", + "basketball": "https://assets-cdn.github.com/images/icons/emoji/basketball.png?v5", + "bath": "https://assets-cdn.github.com/images/icons/emoji/bath.png?v5", + "bathtub": "https://assets-cdn.github.com/images/icons/emoji/bathtub.png?v5", + "battery": "https://assets-cdn.github.com/images/icons/emoji/battery.png?v5", + "bear": "https://assets-cdn.github.com/images/icons/emoji/bear.png?v5", + "bee": "https://assets-cdn.github.com/images/icons/emoji/bee.png?v5", + "beer": "https://assets-cdn.github.com/images/icons/emoji/beer.png?v5", + "beers": "https://assets-cdn.github.com/images/icons/emoji/beers.png?v5", + "beetle": "https://assets-cdn.github.com/images/icons/emoji/beetle.png?v5", + "beginner": "https://assets-cdn.github.com/images/icons/emoji/beginner.png?v5", + "bell": "https://assets-cdn.github.com/images/icons/emoji/bell.png?v5", + "bento": "https://assets-cdn.github.com/images/icons/emoji/bento.png?v5", + "bicyclist": "https://assets-cdn.github.com/images/icons/emoji/bicyclist.png?v5", + "bike": "https://assets-cdn.github.com/images/icons/emoji/bike.png?v5", + "bikini": "https://assets-cdn.github.com/images/icons/emoji/bikini.png?v5", + "bird": "https://assets-cdn.github.com/images/icons/emoji/bird.png?v5", + "birthday": "https://assets-cdn.github.com/images/icons/emoji/birthday.png?v5", + "black_circle": "https://assets-cdn.github.com/images/icons/emoji/black_circle.png?v5", + "black_joker": "https://assets-cdn.github.com/images/icons/emoji/black_joker.png?v5", + "black_large_square": "https://assets-cdn.github.com/images/icons/emoji/black_large_square.png?v5", + "black_medium_small_square": "https://assets-cdn.github.com/images/icons/emoji/black_medium_small_square.png?v5", + "black_medium_square": "https://assets-cdn.github.com/images/icons/emoji/black_medium_square.png?v5", + "black_nib": "https://assets-cdn.github.com/images/icons/emoji/black_nib.png?v5", + "black_small_square": "https://assets-cdn.github.com/images/icons/emoji/black_small_square.png?v5", + "black_square_button": "https://assets-cdn.github.com/images/icons/emoji/black_square_button.png?v5", + "blossom": "https://assets-cdn.github.com/images/icons/emoji/blossom.png?v5", + "blowfish": "https://assets-cdn.github.com/images/icons/emoji/blowfish.png?v5", + "blue_book": "https://assets-cdn.github.com/images/icons/emoji/blue_book.png?v5", + "blue_car": "https://assets-cdn.github.com/images/icons/emoji/blue_car.png?v5", + "blue_heart": "https://assets-cdn.github.com/images/icons/emoji/blue_heart.png?v5", + "blush": "https://assets-cdn.github.com/images/icons/emoji/blush.png?v5", + "boar": "https://assets-cdn.github.com/images/icons/emoji/boar.png?v5", + "boat": "https://assets-cdn.github.com/images/icons/emoji/boat.png?v5", + "bomb": "https://assets-cdn.github.com/images/icons/emoji/bomb.png?v5", + "book": "https://assets-cdn.github.com/images/icons/emoji/book.png?v5", + "bookmark": "https://assets-cdn.github.com/images/icons/emoji/bookmark.png?v5", + "bookmark_tabs": "https://assets-cdn.github.com/images/icons/emoji/bookmark_tabs.png?v5", + "books": "https://assets-cdn.github.com/images/icons/emoji/books.png?v5", + "boom": "https://assets-cdn.github.com/images/icons/emoji/boom.png?v5", + "boot": "https://assets-cdn.github.com/images/icons/emoji/boot.png?v5", + "bouquet": "https://assets-cdn.github.com/images/icons/emoji/bouquet.png?v5", + "bow": "https://assets-cdn.github.com/images/icons/emoji/bow.png?v5", + "bowling": "https://assets-cdn.github.com/images/icons/emoji/bowling.png?v5", + "bowtie": "https://assets-cdn.github.com/images/icons/emoji/bowtie.png?v5", + "boy": "https://assets-cdn.github.com/images/icons/emoji/boy.png?v5", + "bread": "https://assets-cdn.github.com/images/icons/emoji/bread.png?v5", + "bride_with_veil": "https://assets-cdn.github.com/images/icons/emoji/bride_with_veil.png?v5", + "bridge_at_night": "https://assets-cdn.github.com/images/icons/emoji/bridge_at_night.png?v5", + "briefcase": "https://assets-cdn.github.com/images/icons/emoji/briefcase.png?v5", + "broken_heart": "https://assets-cdn.github.com/images/icons/emoji/broken_heart.png?v5", + "bug": "https://assets-cdn.github.com/images/icons/emoji/bug.png?v5", + "bulb": "https://assets-cdn.github.com/images/icons/emoji/bulb.png?v5", + "bullettrain_front": "https://assets-cdn.github.com/images/icons/emoji/bullettrain_front.png?v5", + "bullettrain_side": "https://assets-cdn.github.com/images/icons/emoji/bullettrain_side.png?v5", + "bus": "https://assets-cdn.github.com/images/icons/emoji/bus.png?v5", + "busstop": "https://assets-cdn.github.com/images/icons/emoji/busstop.png?v5", + "bust_in_silhouette": "https://assets-cdn.github.com/images/icons/emoji/bust_in_silhouette.png?v5", + "busts_in_silhouette": "https://assets-cdn.github.com/images/icons/emoji/busts_in_silhouette.png?v5", + "cactus": "https://assets-cdn.github.com/images/icons/emoji/cactus.png?v5", + "cake": "https://assets-cdn.github.com/images/icons/emoji/cake.png?v5", + "calendar": "https://assets-cdn.github.com/images/icons/emoji/calendar.png?v5", + "calling": "https://assets-cdn.github.com/images/icons/emoji/calling.png?v5", + "camel": "https://assets-cdn.github.com/images/icons/emoji/camel.png?v5", + "camera": "https://assets-cdn.github.com/images/icons/emoji/camera.png?v5", + "cancer": "https://assets-cdn.github.com/images/icons/emoji/cancer.png?v5", + "candy": "https://assets-cdn.github.com/images/icons/emoji/candy.png?v5", + "capital_abcd": "https://assets-cdn.github.com/images/icons/emoji/capital_abcd.png?v5", + "capricorn": "https://assets-cdn.github.com/images/icons/emoji/capricorn.png?v5", + "car": "https://assets-cdn.github.com/images/icons/emoji/car.png?v5", + "card_index": "https://assets-cdn.github.com/images/icons/emoji/card_index.png?v5", + "carousel_horse": "https://assets-cdn.github.com/images/icons/emoji/carousel_horse.png?v5", + "cat": "https://assets-cdn.github.com/images/icons/emoji/cat.png?v5", + "cat2": "https://assets-cdn.github.com/images/icons/emoji/cat2.png?v5", + "cd": "https://assets-cdn.github.com/images/icons/emoji/cd.png?v5", + "chart": "https://assets-cdn.github.com/images/icons/emoji/chart.png?v5", + "chart_with_downwards_trend": "https://assets-cdn.github.com/images/icons/emoji/chart_with_downwards_trend.png?v5", + "chart_with_upwards_trend": "https://assets-cdn.github.com/images/icons/emoji/chart_with_upwards_trend.png?v5", + "checkered_flag": "https://assets-cdn.github.com/images/icons/emoji/checkered_flag.png?v5", + "cherries": "https://assets-cdn.github.com/images/icons/emoji/cherries.png?v5", + "cherry_blossom": "https://assets-cdn.github.com/images/icons/emoji/cherry_blossom.png?v5", + "chestnut": "https://assets-cdn.github.com/images/icons/emoji/chestnut.png?v5", + "chicken": "https://assets-cdn.github.com/images/icons/emoji/chicken.png?v5", + "children_crossing": "https://assets-cdn.github.com/images/icons/emoji/children_crossing.png?v5", + "chocolate_bar": "https://assets-cdn.github.com/images/icons/emoji/chocolate_bar.png?v5", + "christmas_tree": "https://assets-cdn.github.com/images/icons/emoji/christmas_tree.png?v5", + "church": "https://assets-cdn.github.com/images/icons/emoji/church.png?v5", + "cinema": "https://assets-cdn.github.com/images/icons/emoji/cinema.png?v5", + "circus_tent": "https://assets-cdn.github.com/images/icons/emoji/circus_tent.png?v5", + "city_sunrise": "https://assets-cdn.github.com/images/icons/emoji/city_sunrise.png?v5", + "city_sunset": "https://assets-cdn.github.com/images/icons/emoji/city_sunset.png?v5", + "cl": "https://assets-cdn.github.com/images/icons/emoji/cl.png?v5", + "clap": "https://assets-cdn.github.com/images/icons/emoji/clap.png?v5", + "clapper": "https://assets-cdn.github.com/images/icons/emoji/clapper.png?v5", + "clipboard": "https://assets-cdn.github.com/images/icons/emoji/clipboard.png?v5", + "clock1": "https://assets-cdn.github.com/images/icons/emoji/clock1.png?v5", + "clock10": "https://assets-cdn.github.com/images/icons/emoji/clock10.png?v5", + "clock1030": "https://assets-cdn.github.com/images/icons/emoji/clock1030.png?v5", + "clock11": "https://assets-cdn.github.com/images/icons/emoji/clock11.png?v5", + "clock1130": "https://assets-cdn.github.com/images/icons/emoji/clock1130.png?v5", + "clock12": "https://assets-cdn.github.com/images/icons/emoji/clock12.png?v5", + "clock1230": "https://assets-cdn.github.com/images/icons/emoji/clock1230.png?v5", + "clock130": "https://assets-cdn.github.com/images/icons/emoji/clock130.png?v5", + "clock2": "https://assets-cdn.github.com/images/icons/emoji/clock2.png?v5", + "clock230": "https://assets-cdn.github.com/images/icons/emoji/clock230.png?v5", + "clock3": "https://assets-cdn.github.com/images/icons/emoji/clock3.png?v5", + "clock330": "https://assets-cdn.github.com/images/icons/emoji/clock330.png?v5", + "clock4": "https://assets-cdn.github.com/images/icons/emoji/clock4.png?v5", + "clock430": "https://assets-cdn.github.com/images/icons/emoji/clock430.png?v5", + "clock5": "https://assets-cdn.github.com/images/icons/emoji/clock5.png?v5", + "clock530": "https://assets-cdn.github.com/images/icons/emoji/clock530.png?v5", + "clock6": "https://assets-cdn.github.com/images/icons/emoji/clock6.png?v5", + "clock630": "https://assets-cdn.github.com/images/icons/emoji/clock630.png?v5", + "clock7": "https://assets-cdn.github.com/images/icons/emoji/clock7.png?v5", + "clock730": "https://assets-cdn.github.com/images/icons/emoji/clock730.png?v5", + "clock8": "https://assets-cdn.github.com/images/icons/emoji/clock8.png?v5", + "clock830": "https://assets-cdn.github.com/images/icons/emoji/clock830.png?v5", + "clock9": "https://assets-cdn.github.com/images/icons/emoji/clock9.png?v5", + "clock930": "https://assets-cdn.github.com/images/icons/emoji/clock930.png?v5", + "closed_book": "https://assets-cdn.github.com/images/icons/emoji/closed_book.png?v5", + "closed_lock_with_key": "https://assets-cdn.github.com/images/icons/emoji/closed_lock_with_key.png?v5", + "closed_umbrella": "https://assets-cdn.github.com/images/icons/emoji/closed_umbrella.png?v5", + "cloud": "https://assets-cdn.github.com/images/icons/emoji/cloud.png?v5", + "clubs": "https://assets-cdn.github.com/images/icons/emoji/clubs.png?v5", + "cn": "https://assets-cdn.github.com/images/icons/emoji/cn.png?v5", + "cocktail": "https://assets-cdn.github.com/images/icons/emoji/cocktail.png?v5", + "coffee": "https://assets-cdn.github.com/images/icons/emoji/coffee.png?v5", + "cold_sweat": "https://assets-cdn.github.com/images/icons/emoji/cold_sweat.png?v5", + "collision": "https://assets-cdn.github.com/images/icons/emoji/collision.png?v5", + "computer": "https://assets-cdn.github.com/images/icons/emoji/computer.png?v5", + "confetti_ball": "https://assets-cdn.github.com/images/icons/emoji/confetti_ball.png?v5", + "confounded": "https://assets-cdn.github.com/images/icons/emoji/confounded.png?v5", + "confused": "https://assets-cdn.github.com/images/icons/emoji/confused.png?v5", + "congratulations": "https://assets-cdn.github.com/images/icons/emoji/congratulations.png?v5", + "construction": "https://assets-cdn.github.com/images/icons/emoji/construction.png?v5", + "construction_worker": "https://assets-cdn.github.com/images/icons/emoji/construction_worker.png?v5", + "convenience_store": "https://assets-cdn.github.com/images/icons/emoji/convenience_store.png?v5", + "cookie": "https://assets-cdn.github.com/images/icons/emoji/cookie.png?v5", + "cool": "https://assets-cdn.github.com/images/icons/emoji/cool.png?v5", + "cop": "https://assets-cdn.github.com/images/icons/emoji/cop.png?v5", + "copyright": "https://assets-cdn.github.com/images/icons/emoji/copyright.png?v5", + "corn": "https://assets-cdn.github.com/images/icons/emoji/corn.png?v5", + "couple": "https://assets-cdn.github.com/images/icons/emoji/couple.png?v5", + "couple_with_heart": "https://assets-cdn.github.com/images/icons/emoji/couple_with_heart.png?v5", + "couplekiss": "https://assets-cdn.github.com/images/icons/emoji/couplekiss.png?v5", + "cow": "https://assets-cdn.github.com/images/icons/emoji/cow.png?v5", + "cow2": "https://assets-cdn.github.com/images/icons/emoji/cow2.png?v5", + "credit_card": "https://assets-cdn.github.com/images/icons/emoji/credit_card.png?v5", + "crescent_moon": "https://assets-cdn.github.com/images/icons/emoji/crescent_moon.png?v5", + "crocodile": "https://assets-cdn.github.com/images/icons/emoji/crocodile.png?v5", + "crossed_flags": "https://assets-cdn.github.com/images/icons/emoji/crossed_flags.png?v5", + "crown": "https://assets-cdn.github.com/images/icons/emoji/crown.png?v5", + "cry": "https://assets-cdn.github.com/images/icons/emoji/cry.png?v5", + "crying_cat_face": "https://assets-cdn.github.com/images/icons/emoji/crying_cat_face.png?v5", + "crystal_ball": "https://assets-cdn.github.com/images/icons/emoji/crystal_ball.png?v5", + "cupid": "https://assets-cdn.github.com/images/icons/emoji/cupid.png?v5", + "curly_loop": "https://assets-cdn.github.com/images/icons/emoji/curly_loop.png?v5", + "currency_exchange": "https://assets-cdn.github.com/images/icons/emoji/currency_exchange.png?v5", + "curry": "https://assets-cdn.github.com/images/icons/emoji/curry.png?v5", + "custard": "https://assets-cdn.github.com/images/icons/emoji/custard.png?v5", + "customs": "https://assets-cdn.github.com/images/icons/emoji/customs.png?v5", + "cyclone": "https://assets-cdn.github.com/images/icons/emoji/cyclone.png?v5", + "dancer": "https://assets-cdn.github.com/images/icons/emoji/dancer.png?v5", + "dancers": "https://assets-cdn.github.com/images/icons/emoji/dancers.png?v5", + "dango": "https://assets-cdn.github.com/images/icons/emoji/dango.png?v5", + "dart": "https://assets-cdn.github.com/images/icons/emoji/dart.png?v5", + "dash": "https://assets-cdn.github.com/images/icons/emoji/dash.png?v5", + "date": "https://assets-cdn.github.com/images/icons/emoji/date.png?v5", + "de": "https://assets-cdn.github.com/images/icons/emoji/de.png?v5", + "deciduous_tree": "https://assets-cdn.github.com/images/icons/emoji/deciduous_tree.png?v5", + "department_store": "https://assets-cdn.github.com/images/icons/emoji/department_store.png?v5", + "diamond_shape_with_a_dot_inside": "https://assets-cdn.github.com/images/icons/emoji/diamond_shape_with_a_dot_inside.png?v5", + "diamonds": "https://assets-cdn.github.com/images/icons/emoji/diamonds.png?v5", + "disappointed": "https://assets-cdn.github.com/images/icons/emoji/disappointed.png?v5", + "disappointed_relieved": "https://assets-cdn.github.com/images/icons/emoji/disappointed_relieved.png?v5", + "dizzy": "https://assets-cdn.github.com/images/icons/emoji/dizzy.png?v5", + "dizzy_face": "https://assets-cdn.github.com/images/icons/emoji/dizzy_face.png?v5", + "do_not_litter": "https://assets-cdn.github.com/images/icons/emoji/do_not_litter.png?v5", + "dog": "https://assets-cdn.github.com/images/icons/emoji/dog.png?v5", + "dog2": "https://assets-cdn.github.com/images/icons/emoji/dog2.png?v5", + "dollar": "https://assets-cdn.github.com/images/icons/emoji/dollar.png?v5", + "dolls": "https://assets-cdn.github.com/images/icons/emoji/dolls.png?v5", + "dolphin": "https://assets-cdn.github.com/images/icons/emoji/dolphin.png?v5", + "door": "https://assets-cdn.github.com/images/icons/emoji/door.png?v5", + "doughnut": "https://assets-cdn.github.com/images/icons/emoji/doughnut.png?v5", + "dragon": "https://assets-cdn.github.com/images/icons/emoji/dragon.png?v5", + "dragon_face": "https://assets-cdn.github.com/images/icons/emoji/dragon_face.png?v5", + "dress": "https://assets-cdn.github.com/images/icons/emoji/dress.png?v5", + "dromedary_camel": "https://assets-cdn.github.com/images/icons/emoji/dromedary_camel.png?v5", + "droplet": "https://assets-cdn.github.com/images/icons/emoji/droplet.png?v5", + "dvd": "https://assets-cdn.github.com/images/icons/emoji/dvd.png?v5", + "e-mail": "https://assets-cdn.github.com/images/icons/emoji/e-mail.png?v5", + "ear": "https://assets-cdn.github.com/images/icons/emoji/ear.png?v5", + "ear_of_rice": "https://assets-cdn.github.com/images/icons/emoji/ear_of_rice.png?v5", + "earth_africa": "https://assets-cdn.github.com/images/icons/emoji/earth_africa.png?v5", + "earth_americas": "https://assets-cdn.github.com/images/icons/emoji/earth_americas.png?v5", + "earth_asia": "https://assets-cdn.github.com/images/icons/emoji/earth_asia.png?v5", + "egg": "https://assets-cdn.github.com/images/icons/emoji/egg.png?v5", + "eggplant": "https://assets-cdn.github.com/images/icons/emoji/eggplant.png?v5", + "eight": "https://assets-cdn.github.com/images/icons/emoji/eight.png?v5", + "eight_pointed_black_star": "https://assets-cdn.github.com/images/icons/emoji/eight_pointed_black_star.png?v5", + "eight_spoked_asterisk": "https://assets-cdn.github.com/images/icons/emoji/eight_spoked_asterisk.png?v5", + "electric_plug": "https://assets-cdn.github.com/images/icons/emoji/electric_plug.png?v5", + "elephant": "https://assets-cdn.github.com/images/icons/emoji/elephant.png?v5", + "email": "https://assets-cdn.github.com/images/icons/emoji/email.png?v5", + "end": "https://assets-cdn.github.com/images/icons/emoji/end.png?v5", + "envelope": "https://assets-cdn.github.com/images/icons/emoji/envelope.png?v5", + "envelope_with_arrow": "https://assets-cdn.github.com/images/icons/emoji/envelope_with_arrow.png?v5", + "es": "https://assets-cdn.github.com/images/icons/emoji/es.png?v5", + "euro": "https://assets-cdn.github.com/images/icons/emoji/euro.png?v5", + "european_castle": "https://assets-cdn.github.com/images/icons/emoji/european_castle.png?v5", + "european_post_office": "https://assets-cdn.github.com/images/icons/emoji/european_post_office.png?v5", + "evergreen_tree": "https://assets-cdn.github.com/images/icons/emoji/evergreen_tree.png?v5", + "exclamation": "https://assets-cdn.github.com/images/icons/emoji/exclamation.png?v5", + "expressionless": "https://assets-cdn.github.com/images/icons/emoji/expressionless.png?v5", + "eyeglasses": "https://assets-cdn.github.com/images/icons/emoji/eyeglasses.png?v5", + "eyes": "https://assets-cdn.github.com/images/icons/emoji/eyes.png?v5", + "facepunch": "https://assets-cdn.github.com/images/icons/emoji/facepunch.png?v5", + "factory": "https://assets-cdn.github.com/images/icons/emoji/factory.png?v5", + "fallen_leaf": "https://assets-cdn.github.com/images/icons/emoji/fallen_leaf.png?v5", + "family": "https://assets-cdn.github.com/images/icons/emoji/family.png?v5", + "fast_forward": "https://assets-cdn.github.com/images/icons/emoji/fast_forward.png?v5", + "fax": "https://assets-cdn.github.com/images/icons/emoji/fax.png?v5", + "fearful": "https://assets-cdn.github.com/images/icons/emoji/fearful.png?v5", + "feelsgood": "https://assets-cdn.github.com/images/icons/emoji/feelsgood.png?v5", + "feet": "https://assets-cdn.github.com/images/icons/emoji/feet.png?v5", + "ferris_wheel": "https://assets-cdn.github.com/images/icons/emoji/ferris_wheel.png?v5", + "file_folder": "https://assets-cdn.github.com/images/icons/emoji/file_folder.png?v5", + "finnadie": "https://assets-cdn.github.com/images/icons/emoji/finnadie.png?v5", + "fire": "https://assets-cdn.github.com/images/icons/emoji/fire.png?v5", + "fire_engine": "https://assets-cdn.github.com/images/icons/emoji/fire_engine.png?v5", + "fireworks": "https://assets-cdn.github.com/images/icons/emoji/fireworks.png?v5", + "first_quarter_moon": "https://assets-cdn.github.com/images/icons/emoji/first_quarter_moon.png?v5", + "first_quarter_moon_with_face": "https://assets-cdn.github.com/images/icons/emoji/first_quarter_moon_with_face.png?v5", + "fish": "https://assets-cdn.github.com/images/icons/emoji/fish.png?v5", + "fish_cake": "https://assets-cdn.github.com/images/icons/emoji/fish_cake.png?v5", + "fishing_pole_and_fish": "https://assets-cdn.github.com/images/icons/emoji/fishing_pole_and_fish.png?v5", + "fist": "https://assets-cdn.github.com/images/icons/emoji/fist.png?v5", + "five": "https://assets-cdn.github.com/images/icons/emoji/five.png?v5", + "flags": "https://assets-cdn.github.com/images/icons/emoji/flags.png?v5", + "flashlight": "https://assets-cdn.github.com/images/icons/emoji/flashlight.png?v5", + "flipper": "https://assets-cdn.github.com/images/icons/emoji/flipper.png?v5", + "floppy_disk": "https://assets-cdn.github.com/images/icons/emoji/floppy_disk.png?v5", + "flower_playing_cards": "https://assets-cdn.github.com/images/icons/emoji/flower_playing_cards.png?v5", + "flushed": "https://assets-cdn.github.com/images/icons/emoji/flushed.png?v5", + "foggy": "https://assets-cdn.github.com/images/icons/emoji/foggy.png?v5", + "football": "https://assets-cdn.github.com/images/icons/emoji/football.png?v5", + "footprints": "https://assets-cdn.github.com/images/icons/emoji/footprints.png?v5", + "fork_and_knife": "https://assets-cdn.github.com/images/icons/emoji/fork_and_knife.png?v5", + "fountain": "https://assets-cdn.github.com/images/icons/emoji/fountain.png?v5", + "four": "https://assets-cdn.github.com/images/icons/emoji/four.png?v5", + "four_leaf_clover": "https://assets-cdn.github.com/images/icons/emoji/four_leaf_clover.png?v5", + "fr": "https://assets-cdn.github.com/images/icons/emoji/fr.png?v5", + "free": "https://assets-cdn.github.com/images/icons/emoji/free.png?v5", + "fried_shrimp": "https://assets-cdn.github.com/images/icons/emoji/fried_shrimp.png?v5", + "fries": "https://assets-cdn.github.com/images/icons/emoji/fries.png?v5", + "frog": "https://assets-cdn.github.com/images/icons/emoji/frog.png?v5", + "frowning": "https://assets-cdn.github.com/images/icons/emoji/frowning.png?v5", + "fu": "https://assets-cdn.github.com/images/icons/emoji/fu.png?v5", + "fuelpump": "https://assets-cdn.github.com/images/icons/emoji/fuelpump.png?v5", + "full_moon": "https://assets-cdn.github.com/images/icons/emoji/full_moon.png?v5", + "full_moon_with_face": "https://assets-cdn.github.com/images/icons/emoji/full_moon_with_face.png?v5", + "game_die": "https://assets-cdn.github.com/images/icons/emoji/game_die.png?v5", + "gb": "https://assets-cdn.github.com/images/icons/emoji/gb.png?v5", + "gem": "https://assets-cdn.github.com/images/icons/emoji/gem.png?v5", + "gemini": "https://assets-cdn.github.com/images/icons/emoji/gemini.png?v5", + "ghost": "https://assets-cdn.github.com/images/icons/emoji/ghost.png?v5", + "gift": "https://assets-cdn.github.com/images/icons/emoji/gift.png?v5", + "gift_heart": "https://assets-cdn.github.com/images/icons/emoji/gift_heart.png?v5", + "girl": "https://assets-cdn.github.com/images/icons/emoji/girl.png?v5", + "globe_with_meridians": "https://assets-cdn.github.com/images/icons/emoji/globe_with_meridians.png?v5", + "goat": "https://assets-cdn.github.com/images/icons/emoji/goat.png?v5", + "goberserk": "https://assets-cdn.github.com/images/icons/emoji/goberserk.png?v5", + "godmode": "https://assets-cdn.github.com/images/icons/emoji/godmode.png?v5", + "golf": "https://assets-cdn.github.com/images/icons/emoji/golf.png?v5", + "grapes": "https://assets-cdn.github.com/images/icons/emoji/grapes.png?v5", + "green_apple": "https://assets-cdn.github.com/images/icons/emoji/green_apple.png?v5", + "green_book": "https://assets-cdn.github.com/images/icons/emoji/green_book.png?v5", + "green_heart": "https://assets-cdn.github.com/images/icons/emoji/green_heart.png?v5", + "grey_exclamation": "https://assets-cdn.github.com/images/icons/emoji/grey_exclamation.png?v5", + "grey_question": "https://assets-cdn.github.com/images/icons/emoji/grey_question.png?v5", + "grimacing": "https://assets-cdn.github.com/images/icons/emoji/grimacing.png?v5", + "grin": "https://assets-cdn.github.com/images/icons/emoji/grin.png?v5", + "grinning": "https://assets-cdn.github.com/images/icons/emoji/grinning.png?v5", + "guardsman": "https://assets-cdn.github.com/images/icons/emoji/guardsman.png?v5", + "guitar": "https://assets-cdn.github.com/images/icons/emoji/guitar.png?v5", + "gun": "https://assets-cdn.github.com/images/icons/emoji/gun.png?v5", + "haircut": "https://assets-cdn.github.com/images/icons/emoji/haircut.png?v5", + "hamburger": "https://assets-cdn.github.com/images/icons/emoji/hamburger.png?v5", + "hammer": "https://assets-cdn.github.com/images/icons/emoji/hammer.png?v5", + "hamster": "https://assets-cdn.github.com/images/icons/emoji/hamster.png?v5", + "hand": "https://assets-cdn.github.com/images/icons/emoji/hand.png?v5", + "handbag": "https://assets-cdn.github.com/images/icons/emoji/handbag.png?v5", + "hankey": "https://assets-cdn.github.com/images/icons/emoji/hankey.png?v5", + "hash": "https://assets-cdn.github.com/images/icons/emoji/hash.png?v5", + "hatched_chick": "https://assets-cdn.github.com/images/icons/emoji/hatched_chick.png?v5", + "hatching_chick": "https://assets-cdn.github.com/images/icons/emoji/hatching_chick.png?v5", + "headphones": "https://assets-cdn.github.com/images/icons/emoji/headphones.png?v5", + "hear_no_evil": "https://assets-cdn.github.com/images/icons/emoji/hear_no_evil.png?v5", + "heart": "https://assets-cdn.github.com/images/icons/emoji/heart.png?v5", + "heart_decoration": "https://assets-cdn.github.com/images/icons/emoji/heart_decoration.png?v5", + "heart_eyes": "https://assets-cdn.github.com/images/icons/emoji/heart_eyes.png?v5", + "heart_eyes_cat": "https://assets-cdn.github.com/images/icons/emoji/heart_eyes_cat.png?v5", + "heartbeat": "https://assets-cdn.github.com/images/icons/emoji/heartbeat.png?v5", + "heartpulse": "https://assets-cdn.github.com/images/icons/emoji/heartpulse.png?v5", + "hearts": "https://assets-cdn.github.com/images/icons/emoji/hearts.png?v5", + "heavy_check_mark": "https://assets-cdn.github.com/images/icons/emoji/heavy_check_mark.png?v5", + "heavy_division_sign": "https://assets-cdn.github.com/images/icons/emoji/heavy_division_sign.png?v5", + "heavy_dollar_sign": "https://assets-cdn.github.com/images/icons/emoji/heavy_dollar_sign.png?v5", + "heavy_exclamation_mark": "https://assets-cdn.github.com/images/icons/emoji/heavy_exclamation_mark.png?v5", + "heavy_minus_sign": "https://assets-cdn.github.com/images/icons/emoji/heavy_minus_sign.png?v5", + "heavy_multiplication_x": "https://assets-cdn.github.com/images/icons/emoji/heavy_multiplication_x.png?v5", + "heavy_plus_sign": "https://assets-cdn.github.com/images/icons/emoji/heavy_plus_sign.png?v5", + "helicopter": "https://assets-cdn.github.com/images/icons/emoji/helicopter.png?v5", + "herb": "https://assets-cdn.github.com/images/icons/emoji/herb.png?v5", + "hibiscus": "https://assets-cdn.github.com/images/icons/emoji/hibiscus.png?v5", + "high_brightness": "https://assets-cdn.github.com/images/icons/emoji/high_brightness.png?v5", + "high_heel": "https://assets-cdn.github.com/images/icons/emoji/high_heel.png?v5", + "hocho": "https://assets-cdn.github.com/images/icons/emoji/hocho.png?v5", + "honey_pot": "https://assets-cdn.github.com/images/icons/emoji/honey_pot.png?v5", + "honeybee": "https://assets-cdn.github.com/images/icons/emoji/honeybee.png?v5", + "horse": "https://assets-cdn.github.com/images/icons/emoji/horse.png?v5", + "horse_racing": "https://assets-cdn.github.com/images/icons/emoji/horse_racing.png?v5", + "hospital": "https://assets-cdn.github.com/images/icons/emoji/hospital.png?v5", + "hotel": "https://assets-cdn.github.com/images/icons/emoji/hotel.png?v5", + "hotsprings": "https://assets-cdn.github.com/images/icons/emoji/hotsprings.png?v5", + "hourglass": "https://assets-cdn.github.com/images/icons/emoji/hourglass.png?v5", + "hourglass_flowing_sand": "https://assets-cdn.github.com/images/icons/emoji/hourglass_flowing_sand.png?v5", + "house": "https://assets-cdn.github.com/images/icons/emoji/house.png?v5", + "house_with_garden": "https://assets-cdn.github.com/images/icons/emoji/house_with_garden.png?v5", + "hurtrealbad": "https://assets-cdn.github.com/images/icons/emoji/hurtrealbad.png?v5", + "hushed": "https://assets-cdn.github.com/images/icons/emoji/hushed.png?v5", + "ice_cream": "https://assets-cdn.github.com/images/icons/emoji/ice_cream.png?v5", + "icecream": "https://assets-cdn.github.com/images/icons/emoji/icecream.png?v5", + "id": "https://assets-cdn.github.com/images/icons/emoji/id.png?v5", + "ideograph_advantage": "https://assets-cdn.github.com/images/icons/emoji/ideograph_advantage.png?v5", + "imp": "https://assets-cdn.github.com/images/icons/emoji/imp.png?v5", + "inbox_tray": "https://assets-cdn.github.com/images/icons/emoji/inbox_tray.png?v5", + "incoming_envelope": "https://assets-cdn.github.com/images/icons/emoji/incoming_envelope.png?v5", + "information_desk_person": "https://assets-cdn.github.com/images/icons/emoji/information_desk_person.png?v5", + "information_source": "https://assets-cdn.github.com/images/icons/emoji/information_source.png?v5", + "innocent": "https://assets-cdn.github.com/images/icons/emoji/innocent.png?v5", + "interrobang": "https://assets-cdn.github.com/images/icons/emoji/interrobang.png?v5", + "iphone": "https://assets-cdn.github.com/images/icons/emoji/iphone.png?v5", + "it": "https://assets-cdn.github.com/images/icons/emoji/it.png?v5", + "izakaya_lantern": "https://assets-cdn.github.com/images/icons/emoji/izakaya_lantern.png?v5", + "jack_o_lantern": "https://assets-cdn.github.com/images/icons/emoji/jack_o_lantern.png?v5", + "japan": "https://assets-cdn.github.com/images/icons/emoji/japan.png?v5", + "japanese_castle": "https://assets-cdn.github.com/images/icons/emoji/japanese_castle.png?v5", + "japanese_goblin": "https://assets-cdn.github.com/images/icons/emoji/japanese_goblin.png?v5", + "japanese_ogre": "https://assets-cdn.github.com/images/icons/emoji/japanese_ogre.png?v5", + "jeans": "https://assets-cdn.github.com/images/icons/emoji/jeans.png?v5", + "joy": "https://assets-cdn.github.com/images/icons/emoji/joy.png?v5", + "joy_cat": "https://assets-cdn.github.com/images/icons/emoji/joy_cat.png?v5", + "jp": "https://assets-cdn.github.com/images/icons/emoji/jp.png?v5", + "key": "https://assets-cdn.github.com/images/icons/emoji/key.png?v5", + "keycap_ten": "https://assets-cdn.github.com/images/icons/emoji/keycap_ten.png?v5", + "kimono": "https://assets-cdn.github.com/images/icons/emoji/kimono.png?v5", + "kiss": "https://assets-cdn.github.com/images/icons/emoji/kiss.png?v5", + "kissing": "https://assets-cdn.github.com/images/icons/emoji/kissing.png?v5", + "kissing_cat": "https://assets-cdn.github.com/images/icons/emoji/kissing_cat.png?v5", + "kissing_closed_eyes": "https://assets-cdn.github.com/images/icons/emoji/kissing_closed_eyes.png?v5", + "kissing_heart": "https://assets-cdn.github.com/images/icons/emoji/kissing_heart.png?v5", + "kissing_smiling_eyes": "https://assets-cdn.github.com/images/icons/emoji/kissing_smiling_eyes.png?v5", + "koala": "https://assets-cdn.github.com/images/icons/emoji/koala.png?v5", + "koko": "https://assets-cdn.github.com/images/icons/emoji/koko.png?v5", + "kr": "https://assets-cdn.github.com/images/icons/emoji/kr.png?v5", + "lantern": "https://assets-cdn.github.com/images/icons/emoji/lantern.png?v5", + "large_blue_circle": "https://assets-cdn.github.com/images/icons/emoji/large_blue_circle.png?v5", + "large_blue_diamond": "https://assets-cdn.github.com/images/icons/emoji/large_blue_diamond.png?v5", + "large_orange_diamond": "https://assets-cdn.github.com/images/icons/emoji/large_orange_diamond.png?v5", + "last_quarter_moon": "https://assets-cdn.github.com/images/icons/emoji/last_quarter_moon.png?v5", + "last_quarter_moon_with_face": "https://assets-cdn.github.com/images/icons/emoji/last_quarter_moon_with_face.png?v5", + "laughing": "https://assets-cdn.github.com/images/icons/emoji/laughing.png?v5", + "leaves": "https://assets-cdn.github.com/images/icons/emoji/leaves.png?v5", + "ledger": "https://assets-cdn.github.com/images/icons/emoji/ledger.png?v5", + "left_luggage": "https://assets-cdn.github.com/images/icons/emoji/left_luggage.png?v5", + "left_right_arrow": "https://assets-cdn.github.com/images/icons/emoji/left_right_arrow.png?v5", + "leftwards_arrow_with_hook": "https://assets-cdn.github.com/images/icons/emoji/leftwards_arrow_with_hook.png?v5", + "lemon": "https://assets-cdn.github.com/images/icons/emoji/lemon.png?v5", + "leo": "https://assets-cdn.github.com/images/icons/emoji/leo.png?v5", + "leopard": "https://assets-cdn.github.com/images/icons/emoji/leopard.png?v5", + "libra": "https://assets-cdn.github.com/images/icons/emoji/libra.png?v5", + "light_rail": "https://assets-cdn.github.com/images/icons/emoji/light_rail.png?v5", + "link": "https://assets-cdn.github.com/images/icons/emoji/link.png?v5", + "lips": "https://assets-cdn.github.com/images/icons/emoji/lips.png?v5", + "lipstick": "https://assets-cdn.github.com/images/icons/emoji/lipstick.png?v5", + "lock": "https://assets-cdn.github.com/images/icons/emoji/lock.png?v5", + "lock_with_ink_pen": "https://assets-cdn.github.com/images/icons/emoji/lock_with_ink_pen.png?v5", + "lollipop": "https://assets-cdn.github.com/images/icons/emoji/lollipop.png?v5", + "loop": "https://assets-cdn.github.com/images/icons/emoji/loop.png?v5", + "loud_sound": "https://assets-cdn.github.com/images/icons/emoji/loud_sound.png?v5", + "loudspeaker": "https://assets-cdn.github.com/images/icons/emoji/loudspeaker.png?v5", + "love_hotel": "https://assets-cdn.github.com/images/icons/emoji/love_hotel.png?v5", + "love_letter": "https://assets-cdn.github.com/images/icons/emoji/love_letter.png?v5", + "low_brightness": "https://assets-cdn.github.com/images/icons/emoji/low_brightness.png?v5", + "m": "https://assets-cdn.github.com/images/icons/emoji/m.png?v5", + "mag": "https://assets-cdn.github.com/images/icons/emoji/mag.png?v5", + "mag_right": "https://assets-cdn.github.com/images/icons/emoji/mag_right.png?v5", + "mahjong": "https://assets-cdn.github.com/images/icons/emoji/mahjong.png?v5", + "mailbox": "https://assets-cdn.github.com/images/icons/emoji/mailbox.png?v5", + "mailbox_closed": "https://assets-cdn.github.com/images/icons/emoji/mailbox_closed.png?v5", + "mailbox_with_mail": "https://assets-cdn.github.com/images/icons/emoji/mailbox_with_mail.png?v5", + "mailbox_with_no_mail": "https://assets-cdn.github.com/images/icons/emoji/mailbox_with_no_mail.png?v5", + "man": "https://assets-cdn.github.com/images/icons/emoji/man.png?v5", + "man_with_gua_pi_mao": "https://assets-cdn.github.com/images/icons/emoji/man_with_gua_pi_mao.png?v5", + "man_with_turban": "https://assets-cdn.github.com/images/icons/emoji/man_with_turban.png?v5", + "mans_shoe": "https://assets-cdn.github.com/images/icons/emoji/mans_shoe.png?v5", + "maple_leaf": "https://assets-cdn.github.com/images/icons/emoji/maple_leaf.png?v5", + "mask": "https://assets-cdn.github.com/images/icons/emoji/mask.png?v5", + "massage": "https://assets-cdn.github.com/images/icons/emoji/massage.png?v5", + "meat_on_bone": "https://assets-cdn.github.com/images/icons/emoji/meat_on_bone.png?v5", + "mega": "https://assets-cdn.github.com/images/icons/emoji/mega.png?v5", + "melon": "https://assets-cdn.github.com/images/icons/emoji/melon.png?v5", + "memo": "https://assets-cdn.github.com/images/icons/emoji/memo.png?v5", + "mens": "https://assets-cdn.github.com/images/icons/emoji/mens.png?v5", + "metal": "https://assets-cdn.github.com/images/icons/emoji/metal.png?v5", + "metro": "https://assets-cdn.github.com/images/icons/emoji/metro.png?v5", + "microphone": "https://assets-cdn.github.com/images/icons/emoji/microphone.png?v5", + "microscope": "https://assets-cdn.github.com/images/icons/emoji/microscope.png?v5", + "milky_way": "https://assets-cdn.github.com/images/icons/emoji/milky_way.png?v5", + "minibus": "https://assets-cdn.github.com/images/icons/emoji/minibus.png?v5", + "minidisc": "https://assets-cdn.github.com/images/icons/emoji/minidisc.png?v5", + "mobile_phone_off": "https://assets-cdn.github.com/images/icons/emoji/mobile_phone_off.png?v5", + "money_with_wings": "https://assets-cdn.github.com/images/icons/emoji/money_with_wings.png?v5", + "moneybag": "https://assets-cdn.github.com/images/icons/emoji/moneybag.png?v5", + "monkey": "https://assets-cdn.github.com/images/icons/emoji/monkey.png?v5", + "monkey_face": "https://assets-cdn.github.com/images/icons/emoji/monkey_face.png?v5", + "monorail": "https://assets-cdn.github.com/images/icons/emoji/monorail.png?v5", + "moon": "https://assets-cdn.github.com/images/icons/emoji/moon.png?v5", + "mortar_board": "https://assets-cdn.github.com/images/icons/emoji/mortar_board.png?v5", + "mount_fuji": "https://assets-cdn.github.com/images/icons/emoji/mount_fuji.png?v5", + "mountain_bicyclist": "https://assets-cdn.github.com/images/icons/emoji/mountain_bicyclist.png?v5", + "mountain_cableway": "https://assets-cdn.github.com/images/icons/emoji/mountain_cableway.png?v5", + "mountain_railway": "https://assets-cdn.github.com/images/icons/emoji/mountain_railway.png?v5", + "mouse": "https://assets-cdn.github.com/images/icons/emoji/mouse.png?v5", + "mouse2": "https://assets-cdn.github.com/images/icons/emoji/mouse2.png?v5", + "movie_camera": "https://assets-cdn.github.com/images/icons/emoji/movie_camera.png?v5", + "moyai": "https://assets-cdn.github.com/images/icons/emoji/moyai.png?v5", + "muscle": "https://assets-cdn.github.com/images/icons/emoji/muscle.png?v5", + "mushroom": "https://assets-cdn.github.com/images/icons/emoji/mushroom.png?v5", + "musical_keyboard": "https://assets-cdn.github.com/images/icons/emoji/musical_keyboard.png?v5", + "musical_note": "https://assets-cdn.github.com/images/icons/emoji/musical_note.png?v5", + "musical_score": "https://assets-cdn.github.com/images/icons/emoji/musical_score.png?v5", + "mute": "https://assets-cdn.github.com/images/icons/emoji/mute.png?v5", + "nail_care": "https://assets-cdn.github.com/images/icons/emoji/nail_care.png?v5", + "name_badge": "https://assets-cdn.github.com/images/icons/emoji/name_badge.png?v5", + "neckbeard": "https://assets-cdn.github.com/images/icons/emoji/neckbeard.png?v5", + "necktie": "https://assets-cdn.github.com/images/icons/emoji/necktie.png?v5", + "negative_squared_cross_mark": "https://assets-cdn.github.com/images/icons/emoji/negative_squared_cross_mark.png?v5", + "neutral_face": "https://assets-cdn.github.com/images/icons/emoji/neutral_face.png?v5", + "new": "https://assets-cdn.github.com/images/icons/emoji/new.png?v5", + "new_moon": "https://assets-cdn.github.com/images/icons/emoji/new_moon.png?v5", + "new_moon_with_face": "https://assets-cdn.github.com/images/icons/emoji/new_moon_with_face.png?v5", + "newspaper": "https://assets-cdn.github.com/images/icons/emoji/newspaper.png?v5", + "ng": "https://assets-cdn.github.com/images/icons/emoji/ng.png?v5", + "night_with_stars": "https://assets-cdn.github.com/images/icons/emoji/night_with_stars.png?v5", + "nine": "https://assets-cdn.github.com/images/icons/emoji/nine.png?v5", + "no_bell": "https://assets-cdn.github.com/images/icons/emoji/no_bell.png?v5", + "no_bicycles": "https://assets-cdn.github.com/images/icons/emoji/no_bicycles.png?v5", + "no_entry": "https://assets-cdn.github.com/images/icons/emoji/no_entry.png?v5", + "no_entry_sign": "https://assets-cdn.github.com/images/icons/emoji/no_entry_sign.png?v5", + "no_good": "https://assets-cdn.github.com/images/icons/emoji/no_good.png?v5", + "no_mobile_phones": "https://assets-cdn.github.com/images/icons/emoji/no_mobile_phones.png?v5", + "no_mouth": "https://assets-cdn.github.com/images/icons/emoji/no_mouth.png?v5", + "no_pedestrians": "https://assets-cdn.github.com/images/icons/emoji/no_pedestrians.png?v5", + "no_smoking": "https://assets-cdn.github.com/images/icons/emoji/no_smoking.png?v5", + "non-potable_water": "https://assets-cdn.github.com/images/icons/emoji/non-potable_water.png?v5", + "nose": "https://assets-cdn.github.com/images/icons/emoji/nose.png?v5", + "notebook": "https://assets-cdn.github.com/images/icons/emoji/notebook.png?v5", + "notebook_with_decorative_cover": "https://assets-cdn.github.com/images/icons/emoji/notebook_with_decorative_cover.png?v5", + "notes": "https://assets-cdn.github.com/images/icons/emoji/notes.png?v5", + "nut_and_bolt": "https://assets-cdn.github.com/images/icons/emoji/nut_and_bolt.png?v5", + "o": "https://assets-cdn.github.com/images/icons/emoji/o.png?v5", + "o2": "https://assets-cdn.github.com/images/icons/emoji/o2.png?v5", + "ocean": "https://assets-cdn.github.com/images/icons/emoji/ocean.png?v5", + "octocat": "https://assets-cdn.github.com/images/icons/emoji/octocat.png?v5", + "octopus": "https://assets-cdn.github.com/images/icons/emoji/octopus.png?v5", + "oden": "https://assets-cdn.github.com/images/icons/emoji/oden.png?v5", + "office": "https://assets-cdn.github.com/images/icons/emoji/office.png?v5", + "ok": "https://assets-cdn.github.com/images/icons/emoji/ok.png?v5", + "ok_hand": "https://assets-cdn.github.com/images/icons/emoji/ok_hand.png?v5", + "ok_woman": "https://assets-cdn.github.com/images/icons/emoji/ok_woman.png?v5", + "older_man": "https://assets-cdn.github.com/images/icons/emoji/older_man.png?v5", + "older_woman": "https://assets-cdn.github.com/images/icons/emoji/older_woman.png?v5", + "on": "https://assets-cdn.github.com/images/icons/emoji/on.png?v5", + "oncoming_automobile": "https://assets-cdn.github.com/images/icons/emoji/oncoming_automobile.png?v5", + "oncoming_bus": "https://assets-cdn.github.com/images/icons/emoji/oncoming_bus.png?v5", + "oncoming_police_car": "https://assets-cdn.github.com/images/icons/emoji/oncoming_police_car.png?v5", + "oncoming_taxi": "https://assets-cdn.github.com/images/icons/emoji/oncoming_taxi.png?v5", + "one": "https://assets-cdn.github.com/images/icons/emoji/one.png?v5", + "open_book": "https://assets-cdn.github.com/images/icons/emoji/open_book.png?v5", + "open_file_folder": "https://assets-cdn.github.com/images/icons/emoji/open_file_folder.png?v5", + "open_hands": "https://assets-cdn.github.com/images/icons/emoji/open_hands.png?v5", + "open_mouth": "https://assets-cdn.github.com/images/icons/emoji/open_mouth.png?v5", + "ophiuchus": "https://assets-cdn.github.com/images/icons/emoji/ophiuchus.png?v5", + "orange_book": "https://assets-cdn.github.com/images/icons/emoji/orange_book.png?v5", + "outbox_tray": "https://assets-cdn.github.com/images/icons/emoji/outbox_tray.png?v5", + "ox": "https://assets-cdn.github.com/images/icons/emoji/ox.png?v5", + "package": "https://assets-cdn.github.com/images/icons/emoji/package.png?v5", + "page_facing_up": "https://assets-cdn.github.com/images/icons/emoji/page_facing_up.png?v5", + "page_with_curl": "https://assets-cdn.github.com/images/icons/emoji/page_with_curl.png?v5", + "pager": "https://assets-cdn.github.com/images/icons/emoji/pager.png?v5", + "palm_tree": "https://assets-cdn.github.com/images/icons/emoji/palm_tree.png?v5", + "panda_face": "https://assets-cdn.github.com/images/icons/emoji/panda_face.png?v5", + "paperclip": "https://assets-cdn.github.com/images/icons/emoji/paperclip.png?v5", + "parking": "https://assets-cdn.github.com/images/icons/emoji/parking.png?v5", + "part_alternation_mark": "https://assets-cdn.github.com/images/icons/emoji/part_alternation_mark.png?v5", + "partly_sunny": "https://assets-cdn.github.com/images/icons/emoji/partly_sunny.png?v5", + "passport_control": "https://assets-cdn.github.com/images/icons/emoji/passport_control.png?v5", + "paw_prints": "https://assets-cdn.github.com/images/icons/emoji/paw_prints.png?v5", + "peach": "https://assets-cdn.github.com/images/icons/emoji/peach.png?v5", + "pear": "https://assets-cdn.github.com/images/icons/emoji/pear.png?v5", + "pencil": "https://assets-cdn.github.com/images/icons/emoji/pencil.png?v5", + "pencil2": "https://assets-cdn.github.com/images/icons/emoji/pencil2.png?v5", + "penguin": "https://assets-cdn.github.com/images/icons/emoji/penguin.png?v5", + "pensive": "https://assets-cdn.github.com/images/icons/emoji/pensive.png?v5", + "performing_arts": "https://assets-cdn.github.com/images/icons/emoji/performing_arts.png?v5", + "persevere": "https://assets-cdn.github.com/images/icons/emoji/persevere.png?v5", + "person_frowning": "https://assets-cdn.github.com/images/icons/emoji/person_frowning.png?v5", + "person_with_blond_hair": "https://assets-cdn.github.com/images/icons/emoji/person_with_blond_hair.png?v5", + "person_with_pouting_face": "https://assets-cdn.github.com/images/icons/emoji/person_with_pouting_face.png?v5", + "phone": "https://assets-cdn.github.com/images/icons/emoji/phone.png?v5", + "pig": "https://assets-cdn.github.com/images/icons/emoji/pig.png?v5", + "pig2": "https://assets-cdn.github.com/images/icons/emoji/pig2.png?v5", + "pig_nose": "https://assets-cdn.github.com/images/icons/emoji/pig_nose.png?v5", + "pill": "https://assets-cdn.github.com/images/icons/emoji/pill.png?v5", + "pineapple": "https://assets-cdn.github.com/images/icons/emoji/pineapple.png?v5", + "pisces": "https://assets-cdn.github.com/images/icons/emoji/pisces.png?v5", + "pizza": "https://assets-cdn.github.com/images/icons/emoji/pizza.png?v5", + "point_down": "https://assets-cdn.github.com/images/icons/emoji/point_down.png?v5", + "point_left": "https://assets-cdn.github.com/images/icons/emoji/point_left.png?v5", + "point_right": "https://assets-cdn.github.com/images/icons/emoji/point_right.png?v5", + "point_up": "https://assets-cdn.github.com/images/icons/emoji/point_up.png?v5", + "point_up_2": "https://assets-cdn.github.com/images/icons/emoji/point_up_2.png?v5", + "police_car": "https://assets-cdn.github.com/images/icons/emoji/police_car.png?v5", + "poodle": "https://assets-cdn.github.com/images/icons/emoji/poodle.png?v5", + "poop": "https://assets-cdn.github.com/images/icons/emoji/poop.png?v5", + "post_office": "https://assets-cdn.github.com/images/icons/emoji/post_office.png?v5", + "postal_horn": "https://assets-cdn.github.com/images/icons/emoji/postal_horn.png?v5", + "postbox": "https://assets-cdn.github.com/images/icons/emoji/postbox.png?v5", + "potable_water": "https://assets-cdn.github.com/images/icons/emoji/potable_water.png?v5", + "pouch": "https://assets-cdn.github.com/images/icons/emoji/pouch.png?v5", + "poultry_leg": "https://assets-cdn.github.com/images/icons/emoji/poultry_leg.png?v5", + "pound": "https://assets-cdn.github.com/images/icons/emoji/pound.png?v5", + "pouting_cat": "https://assets-cdn.github.com/images/icons/emoji/pouting_cat.png?v5", + "pray": "https://assets-cdn.github.com/images/icons/emoji/pray.png?v5", + "princess": "https://assets-cdn.github.com/images/icons/emoji/princess.png?v5", + "punch": "https://assets-cdn.github.com/images/icons/emoji/punch.png?v5", + "purple_heart": "https://assets-cdn.github.com/images/icons/emoji/purple_heart.png?v5", + "purse": "https://assets-cdn.github.com/images/icons/emoji/purse.png?v5", + "pushpin": "https://assets-cdn.github.com/images/icons/emoji/pushpin.png?v5", + "put_litter_in_its_place": "https://assets-cdn.github.com/images/icons/emoji/put_litter_in_its_place.png?v5", + "question": "https://assets-cdn.github.com/images/icons/emoji/question.png?v5", + "rabbit": "https://assets-cdn.github.com/images/icons/emoji/rabbit.png?v5", + "rabbit2": "https://assets-cdn.github.com/images/icons/emoji/rabbit2.png?v5", + "racehorse": "https://assets-cdn.github.com/images/icons/emoji/racehorse.png?v5", + "radio": "https://assets-cdn.github.com/images/icons/emoji/radio.png?v5", + "radio_button": "https://assets-cdn.github.com/images/icons/emoji/radio_button.png?v5", + "rage": "https://assets-cdn.github.com/images/icons/emoji/rage.png?v5", + "rage1": "https://assets-cdn.github.com/images/icons/emoji/rage1.png?v5", + "rage2": "https://assets-cdn.github.com/images/icons/emoji/rage2.png?v5", + "rage3": "https://assets-cdn.github.com/images/icons/emoji/rage3.png?v5", + "rage4": "https://assets-cdn.github.com/images/icons/emoji/rage4.png?v5", + "railway_car": "https://assets-cdn.github.com/images/icons/emoji/railway_car.png?v5", + "rainbow": "https://assets-cdn.github.com/images/icons/emoji/rainbow.png?v5", + "raised_hand": "https://assets-cdn.github.com/images/icons/emoji/raised_hand.png?v5", + "raised_hands": "https://assets-cdn.github.com/images/icons/emoji/raised_hands.png?v5", + "raising_hand": "https://assets-cdn.github.com/images/icons/emoji/raising_hand.png?v5", + "ram": "https://assets-cdn.github.com/images/icons/emoji/ram.png?v5", + "ramen": "https://assets-cdn.github.com/images/icons/emoji/ramen.png?v5", + "rat": "https://assets-cdn.github.com/images/icons/emoji/rat.png?v5", + "recycle": "https://assets-cdn.github.com/images/icons/emoji/recycle.png?v5", + "red_car": "https://assets-cdn.github.com/images/icons/emoji/red_car.png?v5", + "red_circle": "https://assets-cdn.github.com/images/icons/emoji/red_circle.png?v5", + "registered": "https://assets-cdn.github.com/images/icons/emoji/registered.png?v5", + "relaxed": "https://assets-cdn.github.com/images/icons/emoji/relaxed.png?v5", + "relieved": "https://assets-cdn.github.com/images/icons/emoji/relieved.png?v5", + "repeat": "https://assets-cdn.github.com/images/icons/emoji/repeat.png?v5", + "repeat_one": "https://assets-cdn.github.com/images/icons/emoji/repeat_one.png?v5", + "restroom": "https://assets-cdn.github.com/images/icons/emoji/restroom.png?v5", + "revolving_hearts": "https://assets-cdn.github.com/images/icons/emoji/revolving_hearts.png?v5", + "rewind": "https://assets-cdn.github.com/images/icons/emoji/rewind.png?v5", + "ribbon": "https://assets-cdn.github.com/images/icons/emoji/ribbon.png?v5", + "rice": "https://assets-cdn.github.com/images/icons/emoji/rice.png?v5", + "rice_ball": "https://assets-cdn.github.com/images/icons/emoji/rice_ball.png?v5", + "rice_cracker": "https://assets-cdn.github.com/images/icons/emoji/rice_cracker.png?v5", + "rice_scene": "https://assets-cdn.github.com/images/icons/emoji/rice_scene.png?v5", + "ring": "https://assets-cdn.github.com/images/icons/emoji/ring.png?v5", + "rocket": "https://assets-cdn.github.com/images/icons/emoji/rocket.png?v5", + "roller_coaster": "https://assets-cdn.github.com/images/icons/emoji/roller_coaster.png?v5", + "rooster": "https://assets-cdn.github.com/images/icons/emoji/rooster.png?v5", + "rose": "https://assets-cdn.github.com/images/icons/emoji/rose.png?v5", + "rotating_light": "https://assets-cdn.github.com/images/icons/emoji/rotating_light.png?v5", + "round_pushpin": "https://assets-cdn.github.com/images/icons/emoji/round_pushpin.png?v5", + "rowboat": "https://assets-cdn.github.com/images/icons/emoji/rowboat.png?v5", + "ru": "https://assets-cdn.github.com/images/icons/emoji/ru.png?v5", + "rugby_football": "https://assets-cdn.github.com/images/icons/emoji/rugby_football.png?v5", + "runner": "https://assets-cdn.github.com/images/icons/emoji/runner.png?v5", + "running": "https://assets-cdn.github.com/images/icons/emoji/running.png?v5", + "running_shirt_with_sash": "https://assets-cdn.github.com/images/icons/emoji/running_shirt_with_sash.png?v5", + "sa": "https://assets-cdn.github.com/images/icons/emoji/sa.png?v5", + "sagittarius": "https://assets-cdn.github.com/images/icons/emoji/sagittarius.png?v5", + "sailboat": "https://assets-cdn.github.com/images/icons/emoji/sailboat.png?v5", + "sake": "https://assets-cdn.github.com/images/icons/emoji/sake.png?v5", + "sandal": "https://assets-cdn.github.com/images/icons/emoji/sandal.png?v5", + "santa": "https://assets-cdn.github.com/images/icons/emoji/santa.png?v5", + "satellite": "https://assets-cdn.github.com/images/icons/emoji/satellite.png?v5", + "satisfied": "https://assets-cdn.github.com/images/icons/emoji/satisfied.png?v5", + "saxophone": "https://assets-cdn.github.com/images/icons/emoji/saxophone.png?v5", + "school": "https://assets-cdn.github.com/images/icons/emoji/school.png?v5", + "school_satchel": "https://assets-cdn.github.com/images/icons/emoji/school_satchel.png?v5", + "scissors": "https://assets-cdn.github.com/images/icons/emoji/scissors.png?v5", + "scorpius": "https://assets-cdn.github.com/images/icons/emoji/scorpius.png?v5", + "scream": "https://assets-cdn.github.com/images/icons/emoji/scream.png?v5", + "scream_cat": "https://assets-cdn.github.com/images/icons/emoji/scream_cat.png?v5", + "scroll": "https://assets-cdn.github.com/images/icons/emoji/scroll.png?v5", + "seat": "https://assets-cdn.github.com/images/icons/emoji/seat.png?v5", + "secret": "https://assets-cdn.github.com/images/icons/emoji/secret.png?v5", + "see_no_evil": "https://assets-cdn.github.com/images/icons/emoji/see_no_evil.png?v5", + "seedling": "https://assets-cdn.github.com/images/icons/emoji/seedling.png?v5", + "seven": "https://assets-cdn.github.com/images/icons/emoji/seven.png?v5", + "shaved_ice": "https://assets-cdn.github.com/images/icons/emoji/shaved_ice.png?v5", + "sheep": "https://assets-cdn.github.com/images/icons/emoji/sheep.png?v5", + "shell": "https://assets-cdn.github.com/images/icons/emoji/shell.png?v5", + "ship": "https://assets-cdn.github.com/images/icons/emoji/ship.png?v5", + "shipit": "https://assets-cdn.github.com/images/icons/emoji/shipit.png?v5", + "shirt": "https://assets-cdn.github.com/images/icons/emoji/shirt.png?v5", + "shit": "https://assets-cdn.github.com/images/icons/emoji/shit.png?v5", + "shoe": "https://assets-cdn.github.com/images/icons/emoji/shoe.png?v5", + "shower": "https://assets-cdn.github.com/images/icons/emoji/shower.png?v5", + "signal_strength": "https://assets-cdn.github.com/images/icons/emoji/signal_strength.png?v5", + "six": "https://assets-cdn.github.com/images/icons/emoji/six.png?v5", + "six_pointed_star": "https://assets-cdn.github.com/images/icons/emoji/six_pointed_star.png?v5", + "ski": "https://assets-cdn.github.com/images/icons/emoji/ski.png?v5", + "skull": "https://assets-cdn.github.com/images/icons/emoji/skull.png?v5", + "sleeping": "https://assets-cdn.github.com/images/icons/emoji/sleeping.png?v5", + "sleepy": "https://assets-cdn.github.com/images/icons/emoji/sleepy.png?v5", + "slot_machine": "https://assets-cdn.github.com/images/icons/emoji/slot_machine.png?v5", + "small_blue_diamond": "https://assets-cdn.github.com/images/icons/emoji/small_blue_diamond.png?v5", + "small_orange_diamond": "https://assets-cdn.github.com/images/icons/emoji/small_orange_diamond.png?v5", + "small_red_triangle": "https://assets-cdn.github.com/images/icons/emoji/small_red_triangle.png?v5", + "small_red_triangle_down": "https://assets-cdn.github.com/images/icons/emoji/small_red_triangle_down.png?v5", + "smile": "https://assets-cdn.github.com/images/icons/emoji/smile.png?v5", + "smile_cat": "https://assets-cdn.github.com/images/icons/emoji/smile_cat.png?v5", + "smiley": "https://assets-cdn.github.com/images/icons/emoji/smiley.png?v5", + "smiley_cat": "https://assets-cdn.github.com/images/icons/emoji/smiley_cat.png?v5", + "smiling_imp": "https://assets-cdn.github.com/images/icons/emoji/smiling_imp.png?v5", + "smirk": "https://assets-cdn.github.com/images/icons/emoji/smirk.png?v5", + "smirk_cat": "https://assets-cdn.github.com/images/icons/emoji/smirk_cat.png?v5", + "smoking": "https://assets-cdn.github.com/images/icons/emoji/smoking.png?v5", + "snail": "https://assets-cdn.github.com/images/icons/emoji/snail.png?v5", + "snake": "https://assets-cdn.github.com/images/icons/emoji/snake.png?v5", + "snowboarder": "https://assets-cdn.github.com/images/icons/emoji/snowboarder.png?v5", + "snowflake": "https://assets-cdn.github.com/images/icons/emoji/snowflake.png?v5", + "snowman": "https://assets-cdn.github.com/images/icons/emoji/snowman.png?v5", + "sob": "https://assets-cdn.github.com/images/icons/emoji/sob.png?v5", + "soccer": "https://assets-cdn.github.com/images/icons/emoji/soccer.png?v5", + "soon": "https://assets-cdn.github.com/images/icons/emoji/soon.png?v5", + "sos": "https://assets-cdn.github.com/images/icons/emoji/sos.png?v5", + "sound": "https://assets-cdn.github.com/images/icons/emoji/sound.png?v5", + "space_invader": "https://assets-cdn.github.com/images/icons/emoji/space_invader.png?v5", + "spades": "https://assets-cdn.github.com/images/icons/emoji/spades.png?v5", + "spaghetti": "https://assets-cdn.github.com/images/icons/emoji/spaghetti.png?v5", + "sparkle": "https://assets-cdn.github.com/images/icons/emoji/sparkle.png?v5", + "sparkler": "https://assets-cdn.github.com/images/icons/emoji/sparkler.png?v5", + "sparkles": "https://assets-cdn.github.com/images/icons/emoji/sparkles.png?v5", + "sparkling_heart": "https://assets-cdn.github.com/images/icons/emoji/sparkling_heart.png?v5", + "speak_no_evil": "https://assets-cdn.github.com/images/icons/emoji/speak_no_evil.png?v5", + "speaker": "https://assets-cdn.github.com/images/icons/emoji/speaker.png?v5", + "speech_balloon": "https://assets-cdn.github.com/images/icons/emoji/speech_balloon.png?v5", + "speedboat": "https://assets-cdn.github.com/images/icons/emoji/speedboat.png?v5", + "squirrel": "https://assets-cdn.github.com/images/icons/emoji/squirrel.png?v5", + "star": "https://assets-cdn.github.com/images/icons/emoji/star.png?v5", + "star2": "https://assets-cdn.github.com/images/icons/emoji/star2.png?v5", + "stars": "https://assets-cdn.github.com/images/icons/emoji/stars.png?v5", + "station": "https://assets-cdn.github.com/images/icons/emoji/station.png?v5", + "statue_of_liberty": "https://assets-cdn.github.com/images/icons/emoji/statue_of_liberty.png?v5", + "steam_locomotive": "https://assets-cdn.github.com/images/icons/emoji/steam_locomotive.png?v5", + "stew": "https://assets-cdn.github.com/images/icons/emoji/stew.png?v5", + "straight_ruler": "https://assets-cdn.github.com/images/icons/emoji/straight_ruler.png?v5", + "strawberry": "https://assets-cdn.github.com/images/icons/emoji/strawberry.png?v5", + "stuck_out_tongue": "https://assets-cdn.github.com/images/icons/emoji/stuck_out_tongue.png?v5", + "stuck_out_tongue_closed_eyes": "https://assets-cdn.github.com/images/icons/emoji/stuck_out_tongue_closed_eyes.png?v5", + "stuck_out_tongue_winking_eye": "https://assets-cdn.github.com/images/icons/emoji/stuck_out_tongue_winking_eye.png?v5", + "sun_with_face": "https://assets-cdn.github.com/images/icons/emoji/sun_with_face.png?v5", + "sunflower": "https://assets-cdn.github.com/images/icons/emoji/sunflower.png?v5", + "sunglasses": "https://assets-cdn.github.com/images/icons/emoji/sunglasses.png?v5", + "sunny": "https://assets-cdn.github.com/images/icons/emoji/sunny.png?v5", + "sunrise": "https://assets-cdn.github.com/images/icons/emoji/sunrise.png?v5", + "sunrise_over_mountains": "https://assets-cdn.github.com/images/icons/emoji/sunrise_over_mountains.png?v5", + "surfer": "https://assets-cdn.github.com/images/icons/emoji/surfer.png?v5", + "sushi": "https://assets-cdn.github.com/images/icons/emoji/sushi.png?v5", + "suspect": "https://assets-cdn.github.com/images/icons/emoji/suspect.png?v5", + "suspension_railway": "https://assets-cdn.github.com/images/icons/emoji/suspension_railway.png?v5", + "sweat": "https://assets-cdn.github.com/images/icons/emoji/sweat.png?v5", + "sweat_drops": "https://assets-cdn.github.com/images/icons/emoji/sweat_drops.png?v5", + "sweat_smile": "https://assets-cdn.github.com/images/icons/emoji/sweat_smile.png?v5", + "sweet_potato": "https://assets-cdn.github.com/images/icons/emoji/sweet_potato.png?v5", + "swimmer": "https://assets-cdn.github.com/images/icons/emoji/swimmer.png?v5", + "symbols": "https://assets-cdn.github.com/images/icons/emoji/symbols.png?v5", + "syringe": "https://assets-cdn.github.com/images/icons/emoji/syringe.png?v5", + "tada": "https://assets-cdn.github.com/images/icons/emoji/tada.png?v5", + "tanabata_tree": "https://assets-cdn.github.com/images/icons/emoji/tanabata_tree.png?v5", + "tangerine": "https://assets-cdn.github.com/images/icons/emoji/tangerine.png?v5", + "taurus": "https://assets-cdn.github.com/images/icons/emoji/taurus.png?v5", + "taxi": "https://assets-cdn.github.com/images/icons/emoji/taxi.png?v5", + "tea": "https://assets-cdn.github.com/images/icons/emoji/tea.png?v5", + "telephone": "https://assets-cdn.github.com/images/icons/emoji/telephone.png?v5", + "telephone_receiver": "https://assets-cdn.github.com/images/icons/emoji/telephone_receiver.png?v5", + "telescope": "https://assets-cdn.github.com/images/icons/emoji/telescope.png?v5", + "tennis": "https://assets-cdn.github.com/images/icons/emoji/tennis.png?v5", + "tent": "https://assets-cdn.github.com/images/icons/emoji/tent.png?v5", + "thought_balloon": "https://assets-cdn.github.com/images/icons/emoji/thought_balloon.png?v5", + "three": "https://assets-cdn.github.com/images/icons/emoji/three.png?v5", + "thumbsdown": "https://assets-cdn.github.com/images/icons/emoji/thumbsdown.png?v5", + "thumbsup": "https://assets-cdn.github.com/images/icons/emoji/thumbsup.png?v5", + "ticket": "https://assets-cdn.github.com/images/icons/emoji/ticket.png?v5", + "tiger": "https://assets-cdn.github.com/images/icons/emoji/tiger.png?v5", + "tiger2": "https://assets-cdn.github.com/images/icons/emoji/tiger2.png?v5", + "tired_face": "https://assets-cdn.github.com/images/icons/emoji/tired_face.png?v5", + "tm": "https://assets-cdn.github.com/images/icons/emoji/tm.png?v5", + "toilet": "https://assets-cdn.github.com/images/icons/emoji/toilet.png?v5", + "tokyo_tower": "https://assets-cdn.github.com/images/icons/emoji/tokyo_tower.png?v5", + "tomato": "https://assets-cdn.github.com/images/icons/emoji/tomato.png?v5", + "tongue": "https://assets-cdn.github.com/images/icons/emoji/tongue.png?v5", + "top": "https://assets-cdn.github.com/images/icons/emoji/top.png?v5", + "tophat": "https://assets-cdn.github.com/images/icons/emoji/tophat.png?v5", + "tractor": "https://assets-cdn.github.com/images/icons/emoji/tractor.png?v5", + "traffic_light": "https://assets-cdn.github.com/images/icons/emoji/traffic_light.png?v5", + "train": "https://assets-cdn.github.com/images/icons/emoji/train.png?v5", + "train2": "https://assets-cdn.github.com/images/icons/emoji/train2.png?v5", + "tram": "https://assets-cdn.github.com/images/icons/emoji/tram.png?v5", + "triangular_flag_on_post": "https://assets-cdn.github.com/images/icons/emoji/triangular_flag_on_post.png?v5", + "triangular_ruler": "https://assets-cdn.github.com/images/icons/emoji/triangular_ruler.png?v5", + "trident": "https://assets-cdn.github.com/images/icons/emoji/trident.png?v5", + "triumph": "https://assets-cdn.github.com/images/icons/emoji/triumph.png?v5", + "trolleybus": "https://assets-cdn.github.com/images/icons/emoji/trolleybus.png?v5", + "trollface": "https://assets-cdn.github.com/images/icons/emoji/trollface.png?v5", + "trophy": "https://assets-cdn.github.com/images/icons/emoji/trophy.png?v5", + "tropical_drink": "https://assets-cdn.github.com/images/icons/emoji/tropical_drink.png?v5", + "tropical_fish": "https://assets-cdn.github.com/images/icons/emoji/tropical_fish.png?v5", + "truck": "https://assets-cdn.github.com/images/icons/emoji/truck.png?v5", + "trumpet": "https://assets-cdn.github.com/images/icons/emoji/trumpet.png?v5", + "tshirt": "https://assets-cdn.github.com/images/icons/emoji/tshirt.png?v5", + "tulip": "https://assets-cdn.github.com/images/icons/emoji/tulip.png?v5", + "turtle": "https://assets-cdn.github.com/images/icons/emoji/turtle.png?v5", + "tv": "https://assets-cdn.github.com/images/icons/emoji/tv.png?v5", + "twisted_rightwards_arrows": "https://assets-cdn.github.com/images/icons/emoji/twisted_rightwards_arrows.png?v5", + "two": "https://assets-cdn.github.com/images/icons/emoji/two.png?v5", + "two_hearts": "https://assets-cdn.github.com/images/icons/emoji/two_hearts.png?v5", + "two_men_holding_hands": "https://assets-cdn.github.com/images/icons/emoji/two_men_holding_hands.png?v5", + "two_women_holding_hands": "https://assets-cdn.github.com/images/icons/emoji/two_women_holding_hands.png?v5", + "u5272": "https://assets-cdn.github.com/images/icons/emoji/u5272.png?v5", + "u5408": "https://assets-cdn.github.com/images/icons/emoji/u5408.png?v5", + "u55b6": "https://assets-cdn.github.com/images/icons/emoji/u55b6.png?v5", + "u6307": "https://assets-cdn.github.com/images/icons/emoji/u6307.png?v5", + "u6708": "https://assets-cdn.github.com/images/icons/emoji/u6708.png?v5", + "u6709": "https://assets-cdn.github.com/images/icons/emoji/u6709.png?v5", + "u6e80": "https://assets-cdn.github.com/images/icons/emoji/u6e80.png?v5", + "u7121": "https://assets-cdn.github.com/images/icons/emoji/u7121.png?v5", + "u7533": "https://assets-cdn.github.com/images/icons/emoji/u7533.png?v5", + "u7981": "https://assets-cdn.github.com/images/icons/emoji/u7981.png?v5", + "u7a7a": "https://assets-cdn.github.com/images/icons/emoji/u7a7a.png?v5", + "uk": "https://assets-cdn.github.com/images/icons/emoji/uk.png?v5", + "umbrella": "https://assets-cdn.github.com/images/icons/emoji/umbrella.png?v5", + "unamused": "https://assets-cdn.github.com/images/icons/emoji/unamused.png?v5", + "underage": "https://assets-cdn.github.com/images/icons/emoji/underage.png?v5", + "unlock": "https://assets-cdn.github.com/images/icons/emoji/unlock.png?v5", + "up": "https://assets-cdn.github.com/images/icons/emoji/up.png?v5", + "us": "https://assets-cdn.github.com/images/icons/emoji/us.png?v5", + "v": "https://assets-cdn.github.com/images/icons/emoji/v.png?v5", + "vertical_traffic_light": "https://assets-cdn.github.com/images/icons/emoji/vertical_traffic_light.png?v5", + "vhs": "https://assets-cdn.github.com/images/icons/emoji/vhs.png?v5", + "vibration_mode": "https://assets-cdn.github.com/images/icons/emoji/vibration_mode.png?v5", + "video_camera": "https://assets-cdn.github.com/images/icons/emoji/video_camera.png?v5", + "video_game": "https://assets-cdn.github.com/images/icons/emoji/video_game.png?v5", + "violin": "https://assets-cdn.github.com/images/icons/emoji/violin.png?v5", + "virgo": "https://assets-cdn.github.com/images/icons/emoji/virgo.png?v5", + "volcano": "https://assets-cdn.github.com/images/icons/emoji/volcano.png?v5", + "vs": "https://assets-cdn.github.com/images/icons/emoji/vs.png?v5", + "walking": "https://assets-cdn.github.com/images/icons/emoji/walking.png?v5", + "waning_crescent_moon": "https://assets-cdn.github.com/images/icons/emoji/waning_crescent_moon.png?v5", + "waning_gibbous_moon": "https://assets-cdn.github.com/images/icons/emoji/waning_gibbous_moon.png?v5", + "warning": "https://assets-cdn.github.com/images/icons/emoji/warning.png?v5", + "watch": "https://assets-cdn.github.com/images/icons/emoji/watch.png?v5", + "water_buffalo": "https://assets-cdn.github.com/images/icons/emoji/water_buffalo.png?v5", + "watermelon": "https://assets-cdn.github.com/images/icons/emoji/watermelon.png?v5", + "wave": "https://assets-cdn.github.com/images/icons/emoji/wave.png?v5", + "wavy_dash": "https://assets-cdn.github.com/images/icons/emoji/wavy_dash.png?v5", + "waxing_crescent_moon": "https://assets-cdn.github.com/images/icons/emoji/waxing_crescent_moon.png?v5", + "waxing_gibbous_moon": "https://assets-cdn.github.com/images/icons/emoji/waxing_gibbous_moon.png?v5", + "wc": "https://assets-cdn.github.com/images/icons/emoji/wc.png?v5", + "weary": "https://assets-cdn.github.com/images/icons/emoji/weary.png?v5", + "wedding": "https://assets-cdn.github.com/images/icons/emoji/wedding.png?v5", + "whale": "https://assets-cdn.github.com/images/icons/emoji/whale.png?v5", + "whale2": "https://assets-cdn.github.com/images/icons/emoji/whale2.png?v5", + "wheelchair": "https://assets-cdn.github.com/images/icons/emoji/wheelchair.png?v5", + "white_check_mark": "https://assets-cdn.github.com/images/icons/emoji/white_check_mark.png?v5", + "white_circle": "https://assets-cdn.github.com/images/icons/emoji/white_circle.png?v5", + "white_flower": "https://assets-cdn.github.com/images/icons/emoji/white_flower.png?v5", + "white_large_square": "https://assets-cdn.github.com/images/icons/emoji/white_large_square.png?v5", + "white_medium_small_square": "https://assets-cdn.github.com/images/icons/emoji/white_medium_small_square.png?v5", + "white_medium_square": "https://assets-cdn.github.com/images/icons/emoji/white_medium_square.png?v5", + "white_small_square": "https://assets-cdn.github.com/images/icons/emoji/white_small_square.png?v5", + "white_square_button": "https://assets-cdn.github.com/images/icons/emoji/white_square_button.png?v5", + "wind_chime": "https://assets-cdn.github.com/images/icons/emoji/wind_chime.png?v5", + "wine_glass": "https://assets-cdn.github.com/images/icons/emoji/wine_glass.png?v5", + "wink": "https://assets-cdn.github.com/images/icons/emoji/wink.png?v5", + "wolf": "https://assets-cdn.github.com/images/icons/emoji/wolf.png?v5", + "woman": "https://assets-cdn.github.com/images/icons/emoji/woman.png?v5", + "womans_clothes": "https://assets-cdn.github.com/images/icons/emoji/womans_clothes.png?v5", + "womans_hat": "https://assets-cdn.github.com/images/icons/emoji/womans_hat.png?v5", + "womens": "https://assets-cdn.github.com/images/icons/emoji/womens.png?v5", + "worried": "https://assets-cdn.github.com/images/icons/emoji/worried.png?v5", + "wrench": "https://assets-cdn.github.com/images/icons/emoji/wrench.png?v5", + "x": "https://assets-cdn.github.com/images/icons/emoji/x.png?v5", + "yellow_heart": "https://assets-cdn.github.com/images/icons/emoji/yellow_heart.png?v5", + "yen": "https://assets-cdn.github.com/images/icons/emoji/yen.png?v5", + "yum": "https://assets-cdn.github.com/images/icons/emoji/yum.png?v5", + "zap": "https://assets-cdn.github.com/images/icons/emoji/zap.png?v5", + "zero": "https://assets-cdn.github.com/images/icons/emoji/zero.png?v5", + "zzz": "https://assets-cdn.github.com/images/icons/emoji/zzz.png?v5" + } + self.emoji_keys = set(self.emojis.keys()) + self.pattern = re.compile(':([a-z0-9\+\-_]+):') + + def make_emoji(self, m): + name = m.group(1) + if name not in self.emoji_keys: + return ':%s:' % name + tpl = ('%(name)s') + return tpl % {'name': name, 'url': self.emojis[name]} + + def replace(self, text): + if text: + text = self.pattern.sub(self.make_emoji, text) + return text diff --git a/snakefire/mainframe.py b/snakefire/mainframe.py index 121bd34..786ff7b 100644 --- a/snakefire/mainframe.py +++ b/snakefire/mainframe.py @@ -9,6 +9,7 @@ import enchant from snakefire import NOTIFICATIONS_ENABLED, KDE_ENABLED +from snakefire.emoji import Emoji from PyQt4 import Qt from PyQt4 import QtGui @@ -53,6 +54,7 @@ def __init__(self): self._settings = {} self._canConnect = False self._cfDisconnected() + self._emoji = Emoji() if len(sys.argv) > 1: self._qsettings = QtCore.QSettings(sys.argv[1], QtCore.QSettings.IniFormat if sys.platform.find("win") == 0 else QtCore.QSettings.NativeFormat) @@ -498,8 +500,9 @@ def _cfStreamMessage(self, room, message, live=True, updateRoom=True): alertIsDirectPing = False if message.is_text() and not message.is_by_current_user(): - alertIsDirectPing = (QtCore.QString(message.body).indexOf(QtCore.QRegExp("\\s*\\b{name}\\b".format(name=QtCore.QRegExp.escape(self._worker.getUser().name)), QtCore.Qt.CaseInsensitive)) == 0) - alert = self.getSetting("alerts", "notify_ping") if alertIsDirectPing else self._matchesAlert(message.body) + content = self._emoji.replace(message.body) + alertIsDirectPing = (QtCore.QString(content).indexOf(QtCore.QRegExp("\\s*\\b{name}\\b".format(name=QtCore.QRegExp.escape(self._worker.getUser().name)), QtCore.Qt.CaseInsensitive)) == 0) + alert = self.getSetting("alerts", "notify_ping") if alertIsDirectPing else self._matchesAlert(content) maximumImageWidth = int(view.size().width() * 0.4) # 40% of viewport renderer = MessageRenderer( @@ -512,7 +515,8 @@ def _cfStreamMessage(self, room, message, live=True, updateRoom=True): showTimestamps = self.getSetting("display", "show_message_timestamps"), alert=alert, alertIsDirectPing=alertIsDirectPing, - parent=self + parent=self, + emoji=self._emoji ) if renderer.needsThread(): @@ -527,6 +531,7 @@ def _renderMessage(self, html, room, message, live=True, updateRoom=True, alert= frame = self._rooms[room.id]["frame"] view = self._rooms[room.id]["view"] + content = self._emoji.replace(message.body) if not frame or not view: return @@ -558,7 +563,7 @@ def _renderMessage(self, html, room, message, live=True, updateRoom=True, alert= self._trayIcon.alert() if live and ((alert or (not isActiveTab and notifyInactiveTab and message.is_text())) and self.getSetting("alerts", "notify_notify")): - self._notify(room, unicode(u"{} says: {}".format(message.user.name, message.body)), message.user) + self._notify(room, unicode(u"{} says: {}".format(message.user.name, content)), message.user) if updateRoom: if (message.is_joining() or message.is_leaving()): @@ -566,7 +571,7 @@ def _renderMessage(self, html, room, message, live=True, updateRoom=True, alert= elif message.is_upload(): self.updateRoomUploads(room.id) elif message.is_topic_change() and not message.is_by_current_user(): - self._cfTopicChanged(room, message.body) + self._cfTopicChanged(room, content) # Respond to direct pings while being away, but only send an auto-response if last one was sent more than 2 minutes ago if live and alertIsDirectPing and self.getSetting("program", "away") and self._idle: diff --git a/snakefire/renderers.py b/snakefire/renderers.py index 6f0918d..76480a1 100644 --- a/snakefire/renderers.py +++ b/snakefire/renderers.py @@ -7,6 +7,8 @@ from urlparse import urlparse +from snakefire.emoji import Emoji + class MessageRenderer(QtCore.QThread): MESSAGES = { "alert": u'
[{time}] {user}: {message}
', @@ -25,7 +27,7 @@ class MessageRenderer(QtCore.QThread): "tweet": u'
{user} tweeted: {message}
' } - def __init__(self, apiToken, maximumImageWidth, room, message, live=True, updateRoom=True, showTimestamps=True, alert=False, alertIsDirectPing=False, parent=None): + def __init__(self, apiToken, maximumImageWidth, room, message, live=True, updateRoom=True, showTimestamps=True, alert=False, alertIsDirectPing=False, parent=None, emoji=None): super(MessageRenderer, self).__init__(parent) self._apiToken = apiToken self._maximumImageWidth = maximumImageWidth @@ -36,6 +38,7 @@ def __init__(self, apiToken, maximumImageWidth, room, message, live=True, update self._showTimestamps = showTimestamps self._alert = alert self._alertIsDirectPing = alertIsDirectPing + self._emoji = emoji if emoji else Emoji() def run(self): html = self.render() @@ -101,7 +104,9 @@ def render(self): message = body ) elif self._message.is_topic_change(): - html = self.MESSAGES["topic"].format(user=self._message.user.name, topic=self._message.body) + html = self.MESSAGES["topic"].format( + user=self._message.user.name, + topic=self._emoji.replace(self._message.body)) return unicode(html) @@ -184,7 +189,7 @@ def _isImage(self, content_type, name): return False def _plainTextToHTML(self, string): - return string.replace("<", "<").replace(">", ">").replace("\n", "
") + return self._emoji.replace(string.replace("<", "<").replace(">", ">").replace("\n", "
")) def _autoLink(self, string): urlre = re.compile("(\(?https?://[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|])(\">|)?") diff --git a/tests/snakefire_test.py b/tests/snakefire_test.py index fd7e551..14f46cc 100644 --- a/tests/snakefire_test.py +++ b/tests/snakefire_test.py @@ -1,5 +1,8 @@ import unittest, sys, os +from emoji import Emoji + + class TestSnakefire(unittest.TestCase): """ @@ -12,3 +15,17 @@ def setUp(self): def testSanity(self): self.assertEqual(0, 0) + + def testValidEmoji(self): + emoji = Emoji() + self.assertEqual(emoji.replace(':neckbeard:'), 'neckbeard') + + def testInvalidEmoji(self): + emoji = Emoji() + invalid = ':neckbeard2:' + self.assertEqual(emoji.replace(invalid), invalid) + + def testEmojiWithEmpty(self): + emoji = Emoji() + self.assertEqual(emoji.replace(''), '') + self.assertEqual(emoji.replace(None), None)