Skip to main content

A simple django app to use emojis on your website

Project description

https://travis-ci.org/gaqzi/django-emoji.png?branch=master https://coveralls.io/repos/gaqzi/django-emoji/badge.png Latest Version Downloads

Emoji is a port of the GitHub gem gemoji to Django.

This app got two main use cases:

  1. It’ll try to replace items between :: with emojis, for instance : dog : (without the spaces) will become an emoji of a dog (:dog:).

  2. It’ll try to replace unicode characters with emojis, for instance ‘✌️’ with a victory symbol (:v:).

Quick start

  1. Install django-emoji from PyPi:

    pip install django-emoji
  1. Add “emoji” to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = (
        ...
        'emoji',
    )
  2. Include the emoji URLconf in your project urls.py like this if you want to be able to get a JSON list of emojis:

    url(r'^emoji/', include('emoji.urls')),
  3. Visit http://127.0.0.1:8000/emoji/all.json to get a json object with all emojis avilable

Python versions

Support for Django 1.4, 1.5, 1.6 and 1.7 with their respective versions of Python 2/3 support.

Settings

These are settings that can be configured in your settings.py:

Settings name

Description

EMOJI_IMG_TAG

The template string that is used for creating the <img> tag when converting an emoji to an image. Default: <img src="{0}" alt="{1}" title="{2}" class="emoji">

EMOJI_ALT_AS_UNICODE

Whether to put the unicode character that corresponds to an emoji as the alt text in replace_unicode. Default: True

EMOJI_REPLACE_HTML_ENTITIES

Whether to automatically convert HTML encoded unicode characters into emojis. Default: True

Usage

API

Python

The Python class Emoji is a singleton and will return the same instance between instantiations. On load Emoji will load the name of all the emjis and their unicode equivalents into memory.

Call

Description

Emoji.names()

A list of all known emojis

Emoji.replace(replacement_string)

Replaces all emojis between ::

Emoji.name_for(character)

The name for a given unicode character

Emoji.replace_unicode(replacement_string)

Replaces all known unicode emojis

Emoji.replace_html_entities(replacement_string)

Replaces all HTML encoded unicode characters

Javascript

The browser version caches all the emojis in localStorage so there won’t be that many roundtrips to the server just to get a list of the emojis.

NOTE: Depends on jQuery or some other library that exports $.get.

Call

Description

Emoji.setDataUrl(url)

Where to fetch the list of all available emojis

Emoji.load()

Load all emojis from the server

Emoji.get(/*emoji*/)

Get the URL to an emoji of a name or return the names of all known emojis

Emoji.replace(replacementString)

Replace all :: style emojis with images

Emoji.clear()

Empty the browser cache

Examples

Replace an emoji using Python templates by loading the tags in your template:

{% load emoji_tags %}
{{ blog_post.body|emoji_replace }}
{{ blog_post.body|emoji_replace_unicode }}
{{ blog_post.body|emoji_replace_html_entities }}

Replace emojis using Javascript (to for instance show a preview before the user saves what it is they are writing):

{% load emoji_tags %}

<script src="{% static 'emoji/js/emoji.js' %}"></script>
{% emoji_load %}

Emoji.get('dog') // => url stub to dog emoji or falsy
Emoji.get() // => all emojis available

Emoji.replace("It's raining :cats: and :dogs:.") // => It's raining <img src="..." alt="cats" class="emoji"> and <img src="..." alt="dogs" class="emoji">

What emoji_load does is that it sets the endpoint to retrieve the listing of all the available emojis and thus only works if the emoji urls has been included.

It is the equivalent of doing:

Emoji.setDataUrl('{% url 'emoji:list.json' %}').load();

Which is also available as template stub:

{% include 'emoji/script.html' %}

Usage from inside Python where the Emoji class mimics some of the behavior of a dict:

from emoji import Emoji
Emoji['dog'] # => url stub to dog emoji or None
'dog' in Emoji # => True
Emoji.keys() # => a list of all emojis by name
Emoji.replace("It's raining :cats: and :dogs:") # => It's raining <img src="..." alt="cats" class="emoji"> and <img src="..." alt="dogs" class="emoji">

Replacing unicode Emojis

Emoji has the ability to give you the name of an emoji from a unicode character. It can also replace every instance of emoji characters in a string with their image replacements.

Usage:

>>> from emoji import Emoji
>>> Emoji.name_for(u'\U000148b')
kiss
>>> Emoji.replace_unicode(u'I send a \U0001f48b!')
I send a <img src="/static/emoji/img/kiss.png" alt="kiss" class="emoji">

Note:

For best use of the unicode replacements use a build of Python that was built with wide unicode character support. From version 1.2 there is code added for dealing with unicode surrogate pairs and it should work well on narrow builds. But this has not been production tested so try it out properly. Please report any bugs found.

To test whether you got a narrow or wide build of Python run the following, if you get an exception it means you’re running a narrow build.:

>>> print(unichr(0x0001f48b))
ValueError: unichr() arg not in range(0x10000) (narrow Python build)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-emoji-1.3.0.tar.gz (4.0 MB view details)

Uploaded Source

Built Distribution

django_emoji-1.3.0-py2.py3-none-any.whl (4.3 MB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-emoji-1.3.0.tar.gz.

File metadata

File hashes

Hashes for django-emoji-1.3.0.tar.gz
Algorithm Hash digest
SHA256 5e6fadf52de9977f0860ed62979f4dead81affd6e6bfb0b66a2e4b250c23397b
MD5 39bc13e03eff785141acffceb26eee76
BLAKE2b-256 21c301f18566e8b78c17cba44ac9c9221a138b614b9e4132fba966ae518c63e1

See more details on using hashes here.

File details

Details for the file django_emoji-1.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_emoji-1.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b8437568b670ee06f6a92f507e54115588f3eab5fc8531dcfa0e36bbc09682af
MD5 cad4379f90a8af45de9891547b3c0bb9
BLAKE2b-256 fc25f18918e2085dfb0da0f8c5412b0e323e173c9962195d575b9e5a46f72c82

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page