emoji works for only some format...

This commit is contained in:
ppwwyyxx
2014-12-15 22:40:42 +08:00
parent 4b847d0c3b
commit f91316a9fa
2 changed files with 19 additions and 9 deletions
+15 -8
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env python2
# -*- coding: UTF-8 -*-
# File: emoji.py
# Date: Sun Dec 14 01:56:45 2014 +0800
# Date: Mon Dec 15 22:30:24 2014 +0800
# Author: Yuxin Wu <[email protected]>
import os
@@ -11,9 +11,17 @@ LIB_PATH = os.path.dirname(os.path.abspath(__file__))
from emojiname import gQQFaceMap as gBracketFace
from emojiname import gUnicodeFaceMap as gUnicodeFace
from emojiname import gEmojiCodeMap as gUnicodeCodeMap
UNICODE_EMOJI_RE = re.compile(u'[\U00010000-\U0010ffff]|[\u2600-\u2764]|\u2122|\u00a9|\u00ae')
class EmojiProvider(object):
def __init__(self):
def __init__(self, html_replace=True):
""" html_replace: replace emojicode by html.
otherwise, replace by plain text
"""
self.html_replace = html_replace
if not html_replace:
raise NotImplementedError()
# [微笑] -> 0
self.bracket_face = dict([(('[' + k + ']').decode('utf-8'), v)
for k, v in gBracketFace.iteritems()])
@@ -24,21 +32,20 @@ class EmojiProvider(object):
# u'\U0001f35c' -> "e340"
self.unicode_face = dict([(unichr(int(k, 16)), v[2:])
for k, v in gUnicodeCodeMap.iteritems()])
self.unicode_re = re.compile(u'[\U00010000-\U0010ffff]|[\u2600-\u2764]|\u2122|\u00a9|\u00ae')
self.used_emoji_id = set()
@staticmethod
def gen_html_elem(emoji_id):
def gen_replace_elem(self, emoji_id):
return '<span class="emoji emoji{}"></span>'.format(emoji_id)
def _replace_unicode(self, msg):
if not UNICODE_EMOJI_RE.findall(msg):
# didn't find the code
if not self.unicode_re.findall(msg):
return msg
for k, v in self.unicode_face.iteritems():
if k in msg:
self.used_emoji_id.add(v)
msg = msg.replace(k, EmojiProvider.gen_html_elem(v))
msg = msg.replace(k, self.gen_replace_elem(v))
return msg
def _replace_bracket(self, msg):
@@ -47,7 +54,7 @@ class EmojiProvider(object):
for k, v in self.bracket_face.iteritems():
if k in msg:
self.used_emoji_id.add(v)
msg = msg.replace(k, EmojiProvider.gen_html_elem(v))
msg = msg.replace(k, self.gen_replace_elem(v))
return msg
def replace_emojicode(self, msg):
+4 -1
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env python2
# -*- coding: UTF-8 -*-
# File: render.py
# Date: Sun Dec 14 00:12:43 2014 +0800
# Date: Mon Dec 15 21:44:07 2014 +0800
# Author: Yuxin Wu <[email protected]>
import os
@@ -21,6 +21,7 @@ except:
from .msg import *
from .utils import ensure_unicode
from emoji import EmojiProvider
TEMPLATES_FILES = {TYPE_MSG: "TP_MSG",
TYPE_IMG: "TP_IMG",
@@ -34,6 +35,7 @@ class HTMLRender(object):
self.html = ensure_unicode(open(HTML_FILE).read())
self.parser = parser
self.res = res
self.emoji = EmojiProvider()
csss = glob.glob(os.path.join(LIB_PATH, 'static/*.css'))
css_string = []
@@ -106,6 +108,7 @@ class HTMLRender(object):
except:
template = ensure_unicode(TEMPLATES[1])
content = msg.msg_str()
content = self.emoji.replace_emojicode(content)
return template.format(sender_label=sender,
content=content)