emoji works for only some format...
This commit is contained in:
+15
-8
@@ -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
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user