pythonwise / emoji

#!/usr/bin/env python
'''Find an emoji'''

# You can generate ~/.emoji with the following command
# lynx -dump http://www.emoji-cheat-sheet.com/ | egrep -o ':[^:]+:' > ~/.emoji

from os.path import expanduser, isfile
import matplotlib.pyplot as plt
import re
import sys

if sys.version_info[0] > 2:
    from urllib.request import urlopen
else:
    from urllib import urlopen


def show_emoji(name):
    img = name[1:-1]  # :ship: -> ship
    url = 'http://www.emoji-cheat-sheet.com/graphics/emojis/{}.png'.format(img)
    fo = urlopen(url)
    img = plt.imread(fo)
    plt.imshow(img)
    plt.show()


def main(argv=None):
    import sys
    from argparse import ArgumentParser

    argv = argv or sys.argv

    parser = ArgumentParser(description='Show emoji')
    parser.add_argument('query', help='query string')
    parser.add_argument('--show', '-s', help='show images',
                        action='store_true', default=False)
    args = parser.parse_args(argv[1:])

    filename = expanduser('~/.emoji')
    if not isfile(filename):
        raise SystemExit('error: cannot find {}'.format(filename))

    with open(filename) as fo:
        data = fo.read()

    regexp = ':.*{}.*:'.format(args.query)
    for match in re.findall(regexp, data):
        print(match)
        if args.show:
            show_emoji(match)


if __name__ == '__main__':
    main()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.