123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952 |
- # -*- coding: utf-8 -*-
- """change emoji shortcodes to characters
- Revision ID: 232e68a03aa2
- Revises: af3f5579c84d
- Create Date: 2018-02-28 21:31:35.260704
- """
- from __future__ import unicode_literals
- from alembic import op
- import sqlalchemy as sa
- # revision identifiers, used by Alembic.
- revision = '232e68a03aa2'
- down_revision = 'af3f5579c84d'
- branch_labels = ()
- depends_on = None
- _emoji_replacement_mapping = {
- # bowtie: not in Unicode
- # neckbeard: not in Unicode
- # shipit, squirrel: GitHub inside joke? either way, not in Unicode
- # trollface: ancient meme, not in Unicode
- # octocat: that's a brand logo, of course it's not in Unicode
- # flaskbb: that's our logo! sadly not in Unicode though
- # feelsgood: doom reference, not in Unicode
- # finnadie: doom reference, not in Unicode
- # goberserk: doom reference, not in Unicode
- # godmode: doom reference, not in Unicode
- # hurtrealbad: doom reference, not in Unicode
- # rage1: doom reference, not in Unicode
- # rage2: doom reference, not in Unicode
- # rage3: doom reference, not in Unicode
- # rage4: doom reference, not in Unicode
- # suspect: doom reference, not in Unicode
- '+1': '👍',
- '-1': '👎',
- '100': '💯',
- '1234': '🔢',
- '8ball': '🎱',
- 'a': '🅰️',
- 'ab': '🆎',
- 'abc': '🔤',
- 'abcd': '🔡',
- 'accept': '🉑',
- 'aerial_tramway': '🚡',
- 'airplane': '✈️',
- 'alarm_clock': '⏰',
- 'alien': '👽',
- 'ambulance': '🚑',
- 'anchor': '⚓️',
- 'angel': '👼',
- 'anger': '💢',
- 'angry': '😠',
- 'anguished': '😧',
- 'ant': '🐜',
- 'apple': '🍎',
- 'aquarius': '♒️',
- 'aries': '♈️',
- 'arrow_backward': '◀️',
- 'arrow_double_down': '⏬',
- 'arrow_double_up': '⏫',
- 'arrow_down': '⬇️',
- 'arrow_down_small': '🔽',
- 'arrow_forward': '▶️',
- 'arrow_heading_down': '⤵️',
- 'arrow_heading_up': '⤴️',
- 'arrow_left': '⬅️',
- 'arrow_lower_left': '↙️',
- 'arrow_lower_right': '↘️',
- 'arrow_right': '➡️',
- 'arrow_right_hook': '↪️',
- 'arrow_up': '⬆️',
- 'arrow_up_down': '↕️',
- 'arrow_up_small': '🔼',
- 'arrow_upper_left': '↖️',
- 'arrow_upper_right': '↗️',
- 'arrows_clockwise': '🔃',
- 'arrows_counterclockwise': '🔄',
- 'art': '🎨',
- 'articulated_lorry': '🚛',
- 'astonished': '😲',
- 'atm': '🏧',
- 'b': '🅱️',
- 'baby': '👶',
- 'baby_bottle': '🍼',
- 'baby_chick': '🐤',
- 'baby_symbol': '🚼',
- 'back': '🔙',
- 'baggage_claim': '🛄',
- 'balloon': '🎈',
- 'ballot_box_with_check': '☑️',
- 'bamboo': '🎍',
- 'banana': '🍌',
- 'bangbang': '‼️',
- 'bank': '🏦',
- 'bar_chart': '📊',
- 'barber': '💈',
- 'baseball': '⚾️',
- 'basketball': '🏀',
- 'bath': '🛀',
- 'bathtub': '🛁',
- 'battery': '🔋',
- 'bear': '🐻',
- 'bee': '🐝',
- 'beer': '🍺',
- 'beers': '🍻',
- 'beetle': '🐞',
- 'beginner': '🔰',
- 'bell': '🔔',
- 'bento': '🍱',
- 'bicyclist': '🚴',
- 'bike': '🚲',
- 'bikini': '👙',
- 'bird': '🐦',
- 'birthday': '🎂',
- 'black_circle': '⚫️',
- 'black_joker': '🃏',
- 'black_medium_small_square': '◾️',
- 'black_medium_square': '◼️',
- 'black_nib': '✒️',
- 'black_small_square': '▪️',
- 'black_square': '⬛', # i assume that's black large square
- 'black_square_button': '🔲',
- 'blossom': '🌼',
- 'blowfish': '🐡',
- 'blue_book': '📘',
- 'blue_car': '🚙',
- 'blue_heart': '💙',
- 'blush': '😊',
- 'boar': '🐗',
- 'boat': '⛵️',
- 'bomb': '💣',
- 'book': '📖',
- 'bookmark': '🔖',
- 'bookmark_tabs': '📑',
- 'books': '📚',
- 'boom': '💥',
- 'boot': '👢',
- 'bouquet': '💐',
- 'bow': '🙇',
- 'bowling': '🎳',
- 'boy': '👦',
- 'bread': '🍞',
- 'bride_with_veil': '👰',
- 'bridge_at_night': '🌉',
- 'briefcase': '💼',
- 'broken_heart': '💔',
- 'bug': '🐛',
- 'bulb': '💡',
- 'bullettrain_front': '🚅',
- 'bullettrain_side': '🚄',
- 'bus': '🚌',
- 'busstop': '🚏',
- 'bust_in_silhouette': '👤',
- 'busts_in_silhouette': '👥',
- 'cactus': '🌵',
- 'cake': '🍰',
- 'calendar': '📆',
- 'calling': '📲',
- 'camel': '🐫',
- 'camera': '📷',
- 'cancer': '♋️',
- 'candy': '🍬',
- 'capital_abcd': '🔠',
- 'capricorn': '♑️',
- 'car': '🚗',
- 'card_index': '📇',
- 'carousel_horse': '🎠',
- 'cat': '🐱',
- 'cat2': '🐈',
- 'cd': '💿',
- 'chart': '💹',
- 'chart_with_downwards_trend': '📉',
- 'chart_with_upwards_trend': '📈',
- 'checkered_flag': '🏁',
- 'cherries': '🍒',
- 'cherry_blossom': '🌸',
- 'chestnut': '🌰',
- 'chicken': '🐔',
- 'children_crossing': '🚸',
- 'chocolate_bar': '🍫',
- 'christmas_tree': '🎄',
- 'church': '⛪️',
- 'cinema': '🎦',
- 'circus_tent': '🎪',
- 'city_sunrise': '🌇',
- 'city_sunset': '🌆',
- 'cl': '🆑',
- 'clap': '👏',
- 'clapper': '🎬',
- 'clipboard': '📋',
- 'clock1': '🕐',
- 'clock10': '🕙',
- 'clock1030': '🕥',
- 'clock11': '🕚',
- 'clock1130': '🕦',
- 'clock12': '🕛',
- 'clock1230': '🕧',
- 'clock130': '🕜',
- 'clock2': '🕑',
- 'clock230': '🕝',
- 'clock3': '🕒',
- 'clock330': '🕞',
- 'clock4': '🕓',
- 'clock430': '🕟',
- 'clock5': '🕔',
- 'clock530': '🕠',
- 'clock6': '🕕',
- 'clock630': '🕡',
- 'clock7': '🕖',
- 'clock730': '🕢',
- 'clock8': '🕗',
- 'clock830': '🕣',
- 'clock9': '🕘',
- 'clock930': '🕤',
- 'closed_book': '📕',
- 'closed_lock_with_key': '🔐',
- 'closed_umbrella': '🌂',
- 'cloud': '☁️',
- 'clubs': '♣️',
- 'cn': '🇨🇳',
- 'cocktail': '🍸',
- 'coffee': '☕️',
- 'cold_sweat': '😰',
- 'collision': '💥',
- 'computer': '💻',
- 'confetti_ball': '🎊',
- 'confounded': '😖',
- 'confused': '😕',
- 'congratulations': '㊗',
- 'construction': '🚧',
- 'construction_worker': '👷',
- 'convenience_store': '🏪',
- 'cookie': '🍪',
- 'cool': '🆒',
- 'cop': '👮',
- 'copyright': '©️',
- 'corn': '🌽',
- 'couple': '👫',
- 'couple_with_heart': '💑',
- 'couplekiss': '💏', # kiss
- 'cow': '🐮',
- 'cow2': '🐄',
- 'credit_card': '💳',
- 'crescent_moon': '🌙',
- 'crocodile': '🐊',
- 'crossed_flags': '🎌',
- 'crown': '👑',
- 'cry': '😢',
- 'crying_cat_face': '😿',
- 'crystal_ball': '🔮',
- 'cupid': '💘',
- 'curly_loop': '➰',
- 'currency_exchange': '💱',
- 'curry': '🍛',
- 'custard': '🍮',
- 'customs': '🛃',
- 'cyclone': '🌀',
- 'dancer': '💃',
- 'dancers': '👯',
- 'dango': '🍡',
- 'dart': '🎯',
- 'dash': '💨',
- 'date': '📅',
- 'de': '🇩🇪',
- 'deciduous_tree': '🌳',
- 'department_store': '🏬',
- 'diamond_shape_with_a_dot_inside': '💠',
- 'diamonds': '♦️',
- 'disappointed': '😞',
- 'disappointed_relieved': '😥',
- 'dizzy': '💫',
- 'dizzy_face': '😵',
- 'do_not_litter': '🚯',
- 'dog': '🐶',
- 'dog2': '🐕',
- 'dollar': '💵',
- 'dolls': '🎎',
- 'dolphin': '🐬',
- 'donut': '🍩', # it's doughnut, you 'muricans
- 'door': '🚪',
- 'doughnut': '🍩',
- 'dragon': '🐉',
- 'dragon_face': '🐲',
- 'dress': '👗',
- 'dromedary_camel': '🐪',
- 'droplet': '💧',
- 'dvd': '📀',
- 'e-mail': '📧',
- 'ear': '👂',
- 'ear_of_rice': '🌾',
- 'earth_africa': '🌍',
- 'earth_americas': '🌎',
- 'earth_asia': '🌏',
- 'egg': '🥚',
- 'eggplant': '🍆',
- 'eight': '8️⃣',
- 'eight_pointed_black_star': '✴️',
- 'eight_spoked_asterisk': '✳️',
- 'electric_plug': '🔌',
- 'elephant': '🐘',
- 'email': '✉️',
- 'end': '🔚',
- 'envelope': '✉️',
- 'es': '🇪🇸',
- 'euro': '💶',
- 'european_castle': '🏰',
- 'european_post_office': '🏤',
- 'evergreen_tree': '🌲',
- 'exclamation': '❗️',
- 'expressionless': '😑',
- 'eyeglasses': '👓',
- 'eyes': '👀',
- 'facepunch': '👊',
- 'factory': '🏭',
- 'fallen_leaf': '🍂',
- 'family': '👪',
- 'fast_forward': '⏩',
- 'fax': '📠',
- 'fearful': '😨',
- 'feet': '🐾',
- 'ferris_wheel': '🎡',
- 'file_folder': '📁',
- 'fire': '🔥',
- 'fire_engine': '🚒',
- 'fireworks': '🎆',
- 'first_quarter_moon': '🌓',
- 'first_quarter_moon_with_face': '🌛',
- 'fish': '🐟',
- 'fish_cake': '🍥',
- 'fishing_pole_and_fish': '🎣',
- 'fist': '✊',
- 'five': '5️⃣',
- 'flags': '🎏',
- 'flashlight': '🔦',
- 'floppy_disk': '💾',
- 'flower_playing_cards': '🎴',
- 'flushed': '😳',
- 'foggy': '🌁',
- 'football': '🏈',
- 'fork_and_knife': '🍴',
- 'fountain': '⛲️',
- 'four': '4️⃣',
- 'four_leaf_clover': '🍀',
- 'fr': '🇫🇷',
- 'free': '🆓',
- 'fried_shrimp': '🍤',
- 'fries': '🍟',
- 'frog': '🐸',
- 'frowning': '😦',
- 'fu': '🖕',
- 'fuelpump': '⛽️',
- 'full_moon': '🌕',
- 'full_moon_with_face': '🌝',
- 'game_die': '🎲',
- 'gb': '🇬🇧',
- 'gem': '💎',
- 'gemini': '♊️',
- 'ghost': '👻',
- 'gift': '🎁',
- 'gift_heart': '💝',
- 'girl': '👧',
- 'globe_with_meridians': '🌐',
- 'goat': '🐐',
- 'golf': '⛳️',
- 'grapes': '🍇',
- 'green_apple': '🍏',
- 'green_book': '📗',
- 'green_heart': '💚',
- 'grey_exclamation': '❕',
- 'grey_question': '❔',
- 'grimacing': '😬',
- 'grin': '😁',
- 'grinning': '😀',
- 'guardsman': '💂',
- 'guitar': '🎸',
- 'gun': '🔫',
- 'haircut': '💇',
- 'hamburger': '🍔',
- 'hammer': '🔨',
- 'hamster': '🐹',
- 'hand': '✋',
- 'handbag': '👜',
- 'hankey': '💩',
- 'hash': '#️⃣',
- 'hatched_chick': '🐥',
- 'hatching_chick': '🐣',
- 'headphones': '🎧',
- 'hear_no_evil': '🙉',
- 'heart': '❤️',
- 'heart_decoration': '💟',
- 'heart_eyes': '😍',
- 'heart_eyes_cat': '😻',
- 'heartbeat': '💓',
- 'heartpulse': '💗',
- 'hearts': '♥️',
- 'heavy_check_mark': '✔️',
- 'heavy_division_sign': '➗',
- 'heavy_dollar_sign': '💲',
- 'heavy_exclamation_mark': '❗️',
- 'heavy_minus_sign': '➖',
- 'heavy_multiplication_x': '✖️',
- 'heavy_plus_sign': '➕',
- 'helicopter': '🚁',
- 'herb': '🌿',
- 'hibiscus': '🌺',
- 'high_brightness': '🔆',
- 'high_heel': '👠',
- 'hocho': '🔪',
- 'honey_pot': '🍯',
- 'honeybee': '🐝',
- 'horse': '🐴',
- 'horse_racing': '🏇',
- 'hospital': '🏥',
- 'hotel': '🏨',
- 'hotsprings': '♨️',
- 'hourglass': '⌛️',
- 'hourglass_flowing_sand': '⏳',
- 'house': '🏠',
- 'house_with_garden': '🏡',
- 'hushed': '😯',
- 'ice_cream': '🍨',
- 'icecream': '🍦',
- 'id': '🆔',
- 'ideograph_advantage': '🉐',
- 'imp': '👿',
- 'inbox_tray': '📥',
- 'incoming_envelope': '📨',
- 'information_desk_person': '💁',
- 'information_source': 'ℹ️',
- 'innocent': '😇',
- 'interrobang': '⁉️',
- 'iphone': '📱',
- 'it': '🇮🇹',
- 'izakaya_lantern': '🏮',
- 'jack_o_lantern': '🎃',
- 'japan': '🗾',
- 'japanese_castle': '🏯',
- 'japanese_goblin': '👺',
- 'japanese_ogre': '👹',
- 'jeans': '👖',
- 'joy': '😂',
- 'joy_cat': '😹',
- 'jp': '🇯🇵',
- 'key': '🔑',
- 'keycap_ten': '🔟',
- 'kimono': '👘',
- 'kiss': '💋',
- 'kissing': '😗',
- 'kissing_cat': '😽',
- 'kissing_closed_eyes': '😚',
- 'kissing_face': '😗', # aparently, the shortcode is just 'kissing'
- 'kissing_heart': '😘',
- 'kissing_smiling_eyes': '😙',
- 'koala': '🐨',
- 'koko': '🈁',
- 'kr': '🇰🇷',
- 'large_blue_circle': '🔵',
- 'large_blue_diamond': '🔷',
- 'large_orange_diamond': '🔶',
- 'last_quarter_moon': '🌗',
- 'last_quarter_moon_with_face': '🌜',
- 'laughing': '😆',
- 'leaves': '🍃',
- 'ledger': '📒',
- 'left_luggage': '🛅',
- 'left_right_arrow': '↔️',
- 'leftwards_arrow_with_hook': '↩️',
- 'lemon': '🍋',
- 'leo': '♌️',
- 'leopard': '🐆',
- 'libra': '♎️',
- 'light_rail': '🚈',
- 'link': '🔗',
- 'lips': '👄',
- 'lipstick': '💄',
- 'lock': '🔒',
- 'lock_with_ink_pen': '🔏',
- 'lollipop': '🍭',
- 'loop': '➿',
- 'loudspeaker': '📢',
- 'love_hotel': '🏩',
- 'love_letter': '💌',
- 'low_brightness': '🔅',
- 'm': 'Ⓜ️',
- 'mag': '🔍',
- 'mag_right': '🔎',
- 'mahjong': '🀄️',
- 'mailbox': '📫',
- 'mailbox_closed': '📪',
- 'mailbox_with_mail': '📬',
- 'mailbox_with_no_mail': '📭',
- 'man': '👨',
- 'man_with_gua_pi_mao': '👲',
- 'man_with_turban': '👳',
- 'mans_shoe': '👞',
- 'maple_leaf': '🍁',
- 'mask': '😷',
- 'massage': '💆',
- 'meat_on_bone': '🍖',
- 'mega': '📣',
- 'melon': '🍈',
- 'memo': '📝',
- 'mens': '🚹',
- 'metal': '🤘',
- 'metro': '🚇',
- 'microphone': '🎤',
- 'microscope': '🔬',
- 'milky_way': '🌌',
- 'minibus': '🚐',
- 'minidisc': '💽',
- 'mobile_phone_off': '📴',
- 'money_with_wings': '💸',
- 'moneybag': '💰',
- 'monkey': '🐒',
- 'monkey_face': '🐵',
- 'monorail': '🚝',
- 'mortar_board': '🎓',
- 'mount_fuji': '🗻',
- 'mountain_bicyclist': '🚵',
- 'mountain_cableway': '🚠',
- 'mountain_railway': '🚞',
- 'mouse': '🐭',
- 'mouse2': '🐁',
- 'movie_camera': '🎥',
- 'moyai': '🗿',
- 'muscle': '💪',
- 'mushroom': '🍄',
- 'musical_keyboard': '🎹',
- 'musical_note': '🎵',
- 'musical_score': '🎼',
- 'mute': '🔇',
- 'nail_care': '💅',
- 'name_badge': '📛',
- 'necktie': '👔',
- 'negative_squared_cross_mark': '❎',
- 'neutral_face': '😐',
- 'new': '🆕',
- 'new_moon': '🌑',
- 'new_moon_with_face': '🌚',
- 'newspaper': '📰',
- 'ng': '🆖',
- 'nine': '9️⃣',
- 'no_bell': '🔕',
- 'no_bicycles': '🚳',
- 'no_entry': '⛔️',
- 'no_entry_sign': '🚫',
- 'no_good': '🙅',
- 'no_mobile_phones': '📵',
- 'no_mouth': '😶',
- 'no_pedestrians': '🚷',
- 'no_smoking': '🚭',
- 'non-potable_water': '🚱',
- 'nose': '👃',
- 'notebook': '📓',
- 'notebook_with_decorative_cover': '📔',
- 'notes': '🎶',
- 'nut_and_bolt': '🔩',
- 'o': '⭕️',
- 'o2': '🅾️',
- 'ocean': '🌊',
- 'octopus': '🐙',
- 'oden': '🍢',
- 'office': '🏢',
- 'ok': '🆗',
- 'ok_hand': '👌',
- 'ok_woman': '🙆',
- 'older_man': '👴',
- 'older_woman': '👵',
- 'on': '🔛',
- 'oncoming_automobile': '🚘',
- 'oncoming_bus': '🚍',
- 'oncoming_police_car': '🚔',
- 'oncoming_taxi': '🚖',
- 'one': '1️⃣',
- 'open_file_folder': '📂',
- 'open_hands': '👐',
- 'open_mouth': '😮',
- 'ophiuchus': '⛎',
- 'orange_book': '📙',
- 'outbox_tray': '📤',
- 'ox': '🐂',
- 'package': '📦',
- 'page_facing_up': '📄',
- 'page_with_curl': '📃',
- 'pager': '📟',
- 'palm_tree': '🌴',
- 'panda_face': '🐼',
- 'paperclip': '📎',
- 'parking': '🅿️',
- 'part_alternation_mark': '〽',
- 'partly_sunny': '⛅️',
- 'passport_control': '🛂',
- 'paw_prints': '🐾',
- 'peach': '🍑',
- 'pear': '🍐',
- 'pencil': '📝',
- 'pencil2': '✏️',
- 'penguin': '🐧',
- 'pensive': '😔',
- 'performing_arts': '🎭',
- 'persevere': '😣',
- 'person_frowning': '🙍',
- 'person_with_blond_hair': '👱',
- 'person_with_pouting_face': '🙎',
- 'phone': '☎️',
- 'pig': '🐷',
- 'pig2': '🐖',
- 'pig_nose': '🐽',
- 'pill': '💊',
- 'pineapple': '🍍',
- 'pisces': '♓️',
- 'pizza': '🍕',
- 'plus1': '👍', # an alias to +1
- 'point_down': '👇',
- 'point_left': '👈',
- 'point_right': '👉',
- 'point_up': '☝️',
- 'point_up_2': '👆',
- 'police_car': '🚓',
- 'poodle': '🐩',
- 'poop': '💩',
- 'post_office': '🏣',
- 'postal_horn': '📯',
- 'postbox': '📮',
- 'potable_water': '🚰',
- 'pouch': '👝',
- 'poultry_leg': '🍗',
- 'pound': '💷',
- 'pouting_cat': '😾',
- 'pray': '🙏',
- 'princess': '👸',
- 'punch': '👊',
- 'purple_heart': '💜',
- 'purse': '👛',
- 'pushpin': '📌',
- 'put_litter_in_its_place': '🚮',
- 'question': '❓',
- 'rabbit': '🐰',
- 'rabbit2': '🐇',
- 'racehorse': '🐎',
- 'radio': '📻',
- 'radio_button': '🔘',
- 'rage': '😡',
- 'railway_car': '🚃',
- 'rainbow': '🌈',
- 'raised_hand': '✋',
- 'raised_hands': '🙌',
- 'raising_hand': '🙋',
- 'ram': '🐏',
- 'ramen': '🍜',
- 'rat': '🐀',
- 'recycle': '♻️',
- 'red_car': '🚗',
- 'red_circle': '🔴',
- 'registered': '®️',
- 'relaxed': '☺️',
- 'relieved': '😌',
- 'repeat': '🔁',
- 'repeat_one': '🔂',
- 'restroom': '🚻',
- 'revolving_hearts': '💞',
- 'rewind': '⏪',
- 'ribbon': '🎀',
- 'rice': '🍚',
- 'rice_ball': '🍙',
- 'rice_cracker': '🍘',
- 'rice_scene': '🎑',
- 'ring': '💍',
- 'rocket': '🚀',
- 'roller_coaster': '🎢',
- 'rooster': '🐓',
- 'rose': '🌹',
- 'rotating_light': '🚨',
- 'round_pushpin': '📍',
- 'rowboat': '🚣',
- 'ru': '🇷🇺',
- 'rugby_football': '🏉',
- 'runner': '🏃',
- 'running': '🏃',
- 'running_shirt_with_sash': '🎽',
- 'sa': '🈂',
- 'sagittarius': '♐️',
- 'sailboat': '⛵️',
- 'sake': '🍶',
- 'sandal': '👡',
- 'santa': '🎅',
- 'satellite': '📡',
- 'satisfied': '😆',
- 'saxophone': '🎷',
- 'school': '🏫',
- 'school_satchel': '🎒',
- 'scissors': '✂️',
- 'scorpius': '♏️',
- 'scream': '😱',
- 'scream_cat': '🙀',
- 'scroll': '📜',
- 'seat': '💺',
- 'secret': '㊙',
- 'see_no_evil': '🙈',
- 'seedling': '🌱',
- 'seven': '7️⃣',
- 'shaved_ice': '🍧',
- 'sheep': '🐑',
- 'shell': '🐚',
- 'ship': '🚢',
- 'shirt': '👕',
- 'shit': '💩',
- 'shoe': '👞',
- 'shower': '🚿',
- 'signal_strength': '📶',
- 'simple_smile': '🙂', # slightly smiling face
- 'six': '6️⃣',
- 'six_pointed_star': '🔯',
- 'ski': '🎿',
- 'skull': '💀',
- 'sleeping': '😴',
- 'sleepy': '😪',
- 'slot_machine': '🎰',
- 'small_blue_diamond': '🔹',
- 'small_orange_diamond': '🔸',
- 'small_red_triangle': '🔺',
- 'small_red_triangle_down': '🔻',
- 'smile': '😄',
- 'smile_cat': '😸',
- 'smiley': '😃',
- 'smiley_cat': '😺',
- 'smiling_imp': '😈',
- 'smirk': '😏',
- 'smirk_cat': '😼',
- 'smoking': '🚬',
- 'snail': '🐌',
- 'snake': '🐍',
- 'snowboarder': '🏂',
- 'snowflake': '❄️',
- 'snowman': '⛄️',
- 'sob': '😭',
- 'soccer': '⚽️',
- 'soon': '🔜',
- 'sos': '🆘',
- 'sound': '🔉',
- 'space_invader': '👾',
- 'spades': '♠️',
- 'spaghetti': '🍝',
- 'sparkle': '❇️',
- 'sparkler': '🎇',
- 'sparkles': '✨',
- 'sparkling_heart': '💖',
- 'speak_no_evil': '🙊',
- 'speaker': '🔈',
- 'speech_balloon': '💬',
- 'speedboat': '🚤',
- 'star': '⭐️',
- 'star2': '🌟',
- 'stars': '🌠',
- 'station': '🚉',
- 'statue_of_liberty': '🗽',
- 'steam_locomotive': '🚂',
- 'stew': '🍲',
- 'straight_ruler': '📏',
- 'strawberry': '🍓',
- 'stuck_out_tongue': '😛',
- 'stuck_out_tongue_closed_eyes': '😝',
- 'stuck_out_tongue_winking_eye': '😜',
- 'sun_with_face': '🌞',
- 'sunflower': '🌻',
- 'sunglasses': '😎',
- 'sunny': '☀️',
- 'sunrise': '🌅',
- 'sunrise_over_mountains': '🌄',
- 'surfer': '🏄',
- 'sushi': '🍣',
- 'suspension_railway': '🚟',
- 'sweat': '😓',
- 'sweat_drops': '💦',
- 'sweat_smile': '😅',
- 'sweet_potato': '🍠',
- 'swimmer': '🏊',
- 'symbols': '🔣',
- 'syringe': '💉',
- 'tada': '🎉',
- 'tanabata_tree': '🎋',
- 'tangerine': '🍊',
- 'taurus': '♉️',
- 'taxi': '🚕',
- 'tea': '🍵',
- 'telephone': '☎️',
- 'telephone_receiver': '📞',
- 'telescope': '🔭',
- 'tennis': '🎾',
- 'tent': '⛺️',
- 'thought_balloon': '💭',
- 'three': '3️⃣',
- 'thumbsdown': '👎',
- 'thumbsup': '👍',
- 'ticket': '🎫',
- 'tiger': '🐯',
- 'tiger2': '🐅',
- 'tired_face': '😫',
- 'tm': '™️',
- 'toilet': '🚽',
- 'tokyo_tower': '🗼',
- 'tomato': '🍅',
- 'tongue': '👅',
- 'top': '🔝',
- 'tophat': '🎩',
- 'tractor': '🚜',
- 'traffic_light': '🚥',
- 'train': '🚋',
- 'train2': '🚆',
- 'tram': '🚊',
- 'triangular_flag_on_post': '🚩',
- 'triangular_ruler': '📐',
- 'trident': '🔱',
- 'triumph': '😤',
- 'trolleybus': '🚎',
- 'trophy': '🏆',
- 'tropical_drink': '🍹',
- 'tropical_fish': '🐠',
- 'truck': '🚚',
- 'trumpet': '🎺',
- 'tshirt': '👕',
- 'tulip': '🌷',
- 'turtle': '🐢',
- 'tv': '📺',
- 'twisted_rightwards_arrows': '🔀',
- 'two': '2️⃣',
- 'two_hearts': '💕',
- 'two_men_holding_hands': '👬',
- 'two_women_holding_hands': '👭',
- 'u5272': '🈹',
- 'u5408': '🈴',
- 'u55b6': '🈺',
- 'u6307': '🈯',
- 'u6708': '🈷',
- 'u6709': '🈶',
- 'u6e80': '🈵',
- 'u7121': '🈚',
- 'u7533': '🈸',
- 'u7981': '🈲',
- 'u7a7a': '🈳',
- 'uk': '🇬🇧',
- 'umbrella': '☔️',
- 'unamused': '😒',
- 'underage': '🔞',
- 'unlock': '🔓',
- 'up': '🆙',
- 'us': '🇺🇸',
- 'v': '✌️',
- 'vertical_traffic_light': '🚦',
- 'vhs': '📼',
- 'vibration_mode': '📳',
- 'video_camera': '📹',
- 'video_game': '🎮',
- 'violin': '🎻',
- 'virgo': '♍️',
- 'volcano': '🌋',
- 'vs': '🆚',
- 'walking': '🚶',
- 'waning_crescent_moon': '🌘',
- 'waning_gibbous_moon': '🌖',
- 'warning': '⚠️',
- 'watch': '⌚️',
- 'water_buffalo': '🐃',
- 'watermelon': '🍉',
- 'wave': '👋',
- 'wavy_dash': '〰️',
- 'waxing_crescent_moon': '🌒',
- 'waxing_gibbous_moon': '🌔',
- 'wc': '🚾',
- 'weary': '😩',
- 'wedding': '💒',
- 'whale': '🐳',
- 'whale2': '🐋',
- 'wheelchair': '♿️',
- 'white_check_mark': '✅',
- 'white_circle': '⚪️',
- 'white_flower': '💮',
- 'white_large_square': '⬜️',
- 'white_medium_small_square': '◽️',
- 'white_medium_square': '◻️',
- 'white_small_square': '▫️',
- 'white_square_button': '🔳',
- 'wind_chime': '🎐',
- 'wine_glass': '🍷',
- 'wink': '😉',
- 'wolf': '🐺',
- 'woman': '👩',
- 'womans_clothes': '👚',
- 'womans_hat': '👒',
- 'womens': '🚺',
- 'worried': '😟',
- 'wrench': '🔧',
- 'x': '❌',
- 'yellow_heart': '💛',
- 'yen': '💴',
- 'yum': '😋',
- 'zap': '⚡️',
- 'zero': '0️⃣',
- 'zzz': '💤',
- }
- def _replace_emoji(line):
- for shortcode, characters in _emoji_replacement_mapping.items():
- line = line.replace(':{}:'.format(shortcode), characters)
- return line
- def _unreplace_emoji(line):
- # replace sequences before single characters
- for shortcode, character in sorted(
- _emoji_replacement_mapping.items(),
- key=lambda t: len(t[1]),
- reverse=True
- ):
- line = line.replace(character, ':{}:'.format(shortcode))
- return line
- def do_the_thing(func):
- conn = op.get_bind()
- for table_name, column_name in (('posts', 'content'),
- ('messages', 'message')):
- table = sa.Table(
- table_name,
- sa.MetaData(),
- sa.Column('id', sa.Integer, primary_key=True),
- sa.Column(column_name, sa.String)
- )
- for row in conn.execute(table.select()):
- content = getattr(row, column_name)
- new_content = func(content)
- if not new_content == content:
- conn.execute(
- table.update().where(
- table.c.id == row.id
- ).values(**{column_name: new_content})
- )
- def upgrade():
- do_the_thing(_replace_emoji)
- def downgrade():
- do_the_thing(_unreplace_emoji)
|