2
0
ppwwyyxx 11 жил өмнө
parent
commit
0d219538a6
100 өөрчлөгдсөн 200 нэмэгдсэн , 197 устгасан
  1. 1 2
      dump_html.py
  2. 1 2
      dump_msg.py
  3. 0 81
      lib/emoji.py
  4. 2 1
      lib/parser.py
  5. 11 5
      lib/render.py
  6. 3 2
      lib/res.py
  7. 81 0
      lib/smiley.py
  8. 7 7
      lib/static/gen_smiley_css.py
  9. 6 8
      lib/static/parse_tencent_smiley.py
  10. 88 89
      lib/static/smiley.css
  11. 0 0
      lib/static/smiley.xml
  12. 0 0
      lib/static/smileys/0.png
  13. 0 0
      lib/static/smileys/1.png
  14. 0 0
      lib/static/smileys/10.png
  15. 0 0
      lib/static/smileys/100.png
  16. 0 0
      lib/static/smileys/101.png
  17. 0 0
      lib/static/smileys/102.png
  18. 0 0
      lib/static/smileys/103.png
  19. 0 0
      lib/static/smileys/104.png
  20. 0 0
      lib/static/smileys/11.png
  21. 0 0
      lib/static/smileys/12.png
  22. 0 0
      lib/static/smileys/13.png
  23. 0 0
      lib/static/smileys/14.png
  24. 0 0
      lib/static/smileys/15.png
  25. 0 0
      lib/static/smileys/16.png
  26. 0 0
      lib/static/smileys/17.png
  27. 0 0
      lib/static/smileys/18.png
  28. 0 0
      lib/static/smileys/19.png
  29. 0 0
      lib/static/smileys/2.png
  30. 0 0
      lib/static/smileys/20.png
  31. 0 0
      lib/static/smileys/21.png
  32. 0 0
      lib/static/smileys/22.png
  33. 0 0
      lib/static/smileys/23.png
  34. 0 0
      lib/static/smileys/24.png
  35. 0 0
      lib/static/smileys/25.png
  36. 0 0
      lib/static/smileys/26.png
  37. 0 0
      lib/static/smileys/27.png
  38. 0 0
      lib/static/smileys/28.png
  39. 0 0
      lib/static/smileys/29.png
  40. 0 0
      lib/static/smileys/3.png
  41. 0 0
      lib/static/smileys/30.png
  42. 0 0
      lib/static/smileys/31.png
  43. 0 0
      lib/static/smileys/32.png
  44. 0 0
      lib/static/smileys/33.png
  45. 0 0
      lib/static/smileys/34.png
  46. 0 0
      lib/static/smileys/35.png
  47. 0 0
      lib/static/smileys/36.png
  48. 0 0
      lib/static/smileys/37.png
  49. 0 0
      lib/static/smileys/38.png
  50. 0 0
      lib/static/smileys/39.png
  51. 0 0
      lib/static/smileys/4.png
  52. 0 0
      lib/static/smileys/40.png
  53. 0 0
      lib/static/smileys/41.png
  54. 0 0
      lib/static/smileys/42.png
  55. 0 0
      lib/static/smileys/43.png
  56. 0 0
      lib/static/smileys/44.png
  57. 0 0
      lib/static/smileys/45.png
  58. 0 0
      lib/static/smileys/46.png
  59. 0 0
      lib/static/smileys/47.png
  60. 0 0
      lib/static/smileys/48.png
  61. 0 0
      lib/static/smileys/49.png
  62. 0 0
      lib/static/smileys/5.png
  63. 0 0
      lib/static/smileys/50.png
  64. 0 0
      lib/static/smileys/51.png
  65. 0 0
      lib/static/smileys/52.png
  66. 0 0
      lib/static/smileys/53.png
  67. 0 0
      lib/static/smileys/54.png
  68. 0 0
      lib/static/smileys/55.png
  69. 0 0
      lib/static/smileys/56.png
  70. 0 0
      lib/static/smileys/57.png
  71. 0 0
      lib/static/smileys/58.png
  72. 0 0
      lib/static/smileys/59.png
  73. 0 0
      lib/static/smileys/6.png
  74. 0 0
      lib/static/smileys/60.png
  75. 0 0
      lib/static/smileys/61.png
  76. 0 0
      lib/static/smileys/62.png
  77. 0 0
      lib/static/smileys/63.png
  78. 0 0
      lib/static/smileys/64.png
  79. 0 0
      lib/static/smileys/65.png
  80. 0 0
      lib/static/smileys/66.png
  81. 0 0
      lib/static/smileys/67.png
  82. 0 0
      lib/static/smileys/68.png
  83. 0 0
      lib/static/smileys/69.png
  84. 0 0
      lib/static/smileys/7.png
  85. 0 0
      lib/static/smileys/70.png
  86. 0 0
      lib/static/smileys/71.png
  87. 0 0
      lib/static/smileys/72.png
  88. 0 0
      lib/static/smileys/73.png
  89. 0 0
      lib/static/smileys/74.png
  90. 0 0
      lib/static/smileys/75.png
  91. 0 0
      lib/static/smileys/76.png
  92. 0 0
      lib/static/smileys/77.png
  93. 0 0
      lib/static/smileys/78.png
  94. 0 0
      lib/static/smileys/79.png
  95. 0 0
      lib/static/smileys/8.png
  96. 0 0
      lib/static/smileys/80.png
  97. 0 0
      lib/static/smileys/81.png
  98. 0 0
      lib/static/smileys/82.png
  99. 0 0
      lib/static/smileys/83.png
  100. 0 0
      lib/static/smileys/84.png

+ 1 - 2
dump_html.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python2
 # -*- coding: UTF-8 -*-
 # File: dump_html.py
-# Date: Sun Nov 23 16:37:48 2014 +0800
+# Date: Sat Dec 20 15:58:35 2014 +0800
 # Author: Yuxin Wu <[email protected]>
 
 import sys
@@ -19,7 +19,6 @@ name = ensure_unicode(sys.argv[3])
 output_file = sys.argv[4]
 
 parser = WeChatDBParser(db_file)
-parser.parse()
 msgs = parser.msgs_by_talker[name]
 
 render = HTMLRender(parser, res)

+ 1 - 2
dump_msg.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python2
 # -*- coding: UTF-8 -*-
 # File: dump_msg.py
-# Date: Sat Nov 22 22:32:23 2014 +0800
+# Date: Sat Dec 20 15:58:29 2014 +0800
 # Author: Yuxin Wu <[email protected]>
 
 from lib.parser import WeChatDBParser
@@ -20,7 +20,6 @@ if not os.path.isdir(output_dir):
     sys.exit("Error creating directory {}".format(output_dir))
 
 parser = WeChatDBParser(db_file)
-parser.parse()
 
 for name, msgs in parser.msgs_by_talker.iteritems():
     print u"Writing msgs for {}".format(name)

+ 0 - 81
lib/emoji.py

@@ -1,81 +0,0 @@
-#!/usr/bin/env python2
-# -*- coding: UTF-8 -*-
-# File: emoji.py
-# Date: Sat Dec 20 15:08:45 2014 +0800
-# Author: Yuxin Wu <[email protected]>
-
-import os
-import re
-import json
-LIB_PATH = os.path.dirname(os.path.abspath(__file__))
-
-UNICODE_EMOJI_FILE = os.path.join(LIB_PATH, 'static', 'unicode-emoji.json')
-TENCENT_EMOJI_FILE = os.path.join(LIB_PATH, 'static', 'tencent-emoji.json')
-TENCENT_EXTRAEMOJI_FILE = os.path.join(LIB_PATH,
-                                       'static', 'tencent-emoji-extra.json')
-UNICODE_EMOJI_RE = re.compile(u'[\U00010000-\U0010ffff]|[\u2600-\u2764]|\u2122|\u00a9|\u00ae')
-
-class EmojiProvider(object):
-    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.tencent_emoji = json.load(open(TENCENT_EMOJI_FILE))
-
-        # some extra emoji from javascript on wx.qq.com
-        extra_emoji = json.load(open(TENCENT_EXTRAEMOJI_FILE))
-        extra_emoji = dict([(u'[' + k + u']', v) for k, v in
-                            extra_emoji.iteritems()])
-        self.tencent_emoji.update(extra_emoji)
-
-        # 1f35c -> "\ue340"
-        #self.unicode_emoji_code = gUnicodeCodeMap
-
-        # u'\U0001f35c' -> "e340"
-        self.unicode_emoji = dict([(unichr(int(k, 16)), hex(ord(v))[2:])
-                                for k, v in
-                                  json.load(open(UNICODE_EMOJI_FILE)).iteritems()])
-        self.used_emoji_id = set()
-
-
-    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
-            return msg
-        for k, v in self.unicode_emoji.iteritems():
-            if k in msg:
-                self.used_emoji_id.add(v)
-                msg = msg.replace(k, self.gen_replace_elem(v))
-        return msg
-
-    def _replace_tencent(self, msg):
-        if (not '[' in msg or not ']' in msg) \
-           and (not '\:' in msg) and (not '/' in msg):
-            return msg
-        for k, v in self.tencent_emoji.iteritems():
-            if k in msg:
-                self.used_emoji_id.add(v)
-                msg = msg.replace(k, self.gen_replace_elem(v))
-        return msg
-
-    def replace_emojicode(self, msg):
-        """ replace the emoji code in msg
-            return a html
-        """
-        msg = self._replace_unicode(msg)
-        msg = self._replace_tencent(msg)
-        return msg
-
-if __name__ == '__main__':
-    emoji = EmojiProvider()
-    msg = u"[挥手]哈哈呵呵hihi\U0001f684\u2728\u0001"
-    msg = emoji.replace_emojicode(msg)
-    print msg

+ 2 - 1
lib/parser.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python2
 # -*- coding: UTF-8 -*-
 # File: parser.py
-# Date: Wed Dec 17 23:04:54 2014 +0800
+# Date: Sat Dec 20 15:58:16 2014 +0800
 # Author: Yuxin Wu <[email protected]>
 
 import sqlite3
@@ -30,6 +30,7 @@ class WeChatDBParser(object):
         self.cc = self.db_conn.cursor()
         self.contacts = {}
         self.msgs_by_talker = defaultdict(list)
+        self.parse()
 
     def _parse_contact(self):
         contacts = self.cc.execute(

+ 11 - 5
lib/render.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python2
 # -*- coding: UTF-8 -*-
 # File: render.py
-# Date: Sat Dec 20 15:40:19 2014 +0800
+# Date: Sat Dec 20 17:48:48 2014 +0800
 # Author: Yuxin Wu <[email protected]>
 
 import os
@@ -20,7 +20,7 @@ except:
 
 from .msg import *
 from .utils import ensure_unicode
-from emoji import EmojiProvider
+from smiley import SmileyProvider
 
 TEMPLATES_FILES = {TYPE_MSG: "TP_MSG",
                    TYPE_IMG: "TP_IMG",
@@ -36,12 +36,12 @@ class HTMLRender(object):
         self.res = res
         if self.res is None:
             logger.warn("Resource Directory not given. Images / Voice Message won't be displayed.")
-        self.emoji = EmojiProvider()
+        self.smiley = SmileyProvider()
 
         csss = glob.glob(os.path.join(LIB_PATH, 'static/*.css'))
         css_string = []
         for css in csss:
-            logger.info("Loading {}.".format(os.path.basename(css)))
+            logger.info("Loading {}".format(os.path.basename(css)))
             css = ensure_unicode(css_compress(open(css).read()))
             css = u'<style type="text/css">{}</style>'.format(css)
             css_string.append(css)
@@ -71,7 +71,7 @@ class HTMLRender(object):
         def fallback():
             template = ensure_unicode(TEMPLATES[1])
             content = msg.msg_str()
-            content = self.emoji.replace_emojicode(content)
+            content = self.smiley.replace_smileycode(content)
             return template.format(sender_label=sender,
                                    content=content)
         if msg.type not in TEMPLATES:
@@ -94,6 +94,12 @@ class HTMLRender(object):
             return template.format(sender_label=sender,
                                    small_img=smallimg,
                                    big_img=bigimg)
+        elif msg.type == TYPE_EMOJI:
+            imgpath = msg.imgPath
+            print imgpath
+            return fallback()
+            # custom emoji
+
         return fallback()
 
     def render_msgs(self, msgs):

+ 3 - 2
lib/res.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python2
 # -*- coding: UTF-8 -*-
 # File: res.py
-# Date: Sat Dec 20 15:40:33 2014 +0800
+# Date: Sat Dec 20 16:26:51 2014 +0800
 # Author: Yuxin Wu <[email protected]>
 
 import glob
@@ -16,6 +16,7 @@ logger = logging.getLogger(__name__)
 from lib.avatar import AvatarReader
 
 VOICE_DIRNAME = 'voice2'
+IMG_DIRNAME = 'image2'
 JPEG_QUALITY = 50
 
 class Resource(object):
@@ -23,7 +24,7 @@ class Resource(object):
     def __init__(self, res_dir):
         assert os.path.isdir(res_dir), "No such directory: {}".format(res_dir)
         self.res_dir = res_dir
-        self.img_dir = os.path.join(res_dir, 'image2')
+        self.img_dir = os.path.join(res_dir, IMG_DIRNAME)
         assert os.path.isdir(self.img_dir), \
                      "No such directory: {}".format(self.img_dir)
         self.avt_reader = AvatarReader(self.res_dir)

+ 81 - 0
lib/smiley.py

@@ -0,0 +1,81 @@
+#!/usr/bin/env python2
+# -*- coding: UTF-8 -*-
+# File: smiley.py
+# Date: Sat Dec 20 17:49:42 2014 +0800
+# Author: Yuxin Wu <[email protected]>
+
+import os
+import re
+import json
+LIB_PATH = os.path.dirname(os.path.abspath(__file__))
+
+UNICODE_SMILEY_FILE = os.path.join(LIB_PATH, 'static', 'unicode-smiley.json')
+TENCENT_SMILEY_FILE = os.path.join(LIB_PATH, 'static', 'tencent-smiley.json')
+TENCENT_EXTRASMILEY_FILE = os.path.join(LIB_PATH,
+                                       'static', 'tencent-smiley-extra.json')
+UNICODE_SMILEY_RE = re.compile(u'[\U00010000-\U0010ffff]|[\u2600-\u2764]|\u2122|\u00a9|\u00ae')
+
+class SmileyProvider(object):
+    def __init__(self, html_replace=True):
+        """ html_replace: replace smileycode by html.
+            otherwise, replace by plain text
+        """
+        self.html_replace = html_replace
+        if not html_replace:
+            raise NotImplementedError()
+
+        # [微笑] -> 0
+        self.tencent_smiley = json.load(open(TENCENT_SMILEY_FILE))
+
+        # some extra smiley from javascript on wx.qq.com
+        extra_smiley = json.load(open(TENCENT_EXTRASMILEY_FILE))
+        extra_smiley = dict([(u'[' + k + u']', v) for k, v in
+                            extra_smiley.iteritems()])
+        self.tencent_smiley.update(extra_smiley)
+
+        # 1f35c -> "\ue340"
+        #self.unicode_smiley_code = gUnicodeCodeMap
+
+        # u'\U0001f35c' -> "e340"
+        self.unicode_smiley = dict([(unichr(int(k, 16)), hex(ord(v))[2:])
+                                for k, v in
+                                  json.load(open(UNICODE_SMILEY_FILE)).iteritems()])
+        self.used_smiley_id = set()
+
+
+    def gen_replace_elem(self, smiley_id):
+        return '<span class="smiley smiley{}"></span>'.format(smiley_id)
+
+    def _replace_unicode(self, msg):
+        if not UNICODE_SMILEY_RE.findall(msg):
+        # didn't find the code
+            return msg
+        for k, v in self.unicode_smiley.iteritems():
+            if k in msg:
+                self.used_smiley_id.add(v)
+                msg = msg.replace(k, self.gen_replace_elem(v))
+        return msg
+
+    def _replace_tencent(self, msg):
+        if (not '[' in msg or not ']' in msg) \
+           and (not '\:' in msg) and (not '/' in msg):
+            return msg
+        for k, v in self.tencent_smiley.iteritems():
+            if k in msg:
+                self.used_smiley_id.add(v)
+                msg = msg.replace(k, self.gen_replace_elem(v))
+        return msg
+
+    def replace_smileycode(self, msg):
+        """ replace the smiley code in msg
+            return a html
+        """
+        msg = self._replace_unicode(msg)
+        msg = self._replace_tencent(msg)
+        return msg
+
+if __name__ == '__main__':
+    smiley = SmileyProvider()
+    msg = u"[挥手]哈哈呵呵hihi\U0001f684\u2728\u0001"
+    msg = smiley.replace_smileycode(msg)
+    print msg

+ 7 - 7
lib/static/gen_emoji_css.py → lib/static/gen_smiley_css.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python2
 # -*- coding: UTF-8 -*-
 # File: gen_emoji_css.py
-# Date: Mon Dec 15 22:15:54 2014 +0800
+# Date: Sat Dec 20 17:50:57 2014 +0800
 # Author: Yuxin Wu <[email protected]>
 
 import os
@@ -9,9 +9,9 @@ import glob
 import base64
 
 DIR_PATH = os.path.dirname(os.path.abspath(__file__))
-OUTPUT_FILE = os.path.join(DIR_PATH, 'emoji.css')
+OUTPUT_FILE = os.path.join(DIR_PATH, 'smiley.css')
 
-HEAD = """.emoji {
+HEAD = """.smiley {
     background-position: -2px -2px;
     background-repeat: norepeat;
     width: 20px;
@@ -22,7 +22,7 @@ HEAD = """.emoji {
 }
 """
 
-TEMPLATE = """.emoji{name} {{
+TEMPLATE = """.smiley{name} {{
     background-image: url("data:image/png;base64,{b64}");
 }}"""
 
@@ -32,8 +32,8 @@ def get_file_b64(fname):
 
 with open(OUTPUT_FILE, 'w') as f:
     print >> f, HEAD
-    for fname in glob.glob(os.path.join(DIR_PATH, 'emojis', '*.png')):
+    for fname in glob.glob(os.path.join(DIR_PATH, 'smileys', '*.png')):
         b64 = get_file_b64(fname)
         basename = os.path.basename(fname)
-        emojiname = basename[:-4]
-        print >> f, TEMPLATE.format(name=emojiname, b64=b64);
+        smileyname = basename[:-4]
+        print >> f, TEMPLATE.format(name=smileyname, b64=b64);

+ 6 - 8
lib/static/parse_tencent_emoji.py → lib/static/parse_tencent_smiley.py

@@ -1,20 +1,18 @@
 #!/usr/bin/env python2
 # -*- coding: UTF-8 -*-
 # File: parse_tencent_emoji.py
-# Date: Tue Dec 16 23:22:50 2014 +0800
+# Date: Sat Dec 20 17:52:20 2014 +0800
 # Author: Yuxin Wu <[email protected]>
 
 import xml.etree.ElementTree as ET
 import os
 import json
 
-NUM_EMOJI = 105
-
 tree = ET.parse(os.path.join(
-    os.path.dirname(os.path.abspath(__file__)), 'emoji.xml'))
+    os.path.dirname(os.path.abspath(__file__)), 'smiley.xml'))
 root = tree.getroot()
 
-emojis = {}
+smileys = {}
 for child in root:
     name = child.attrib['name']
     if 'smiley_values' in name:
@@ -25,8 +23,8 @@ for child in root:
         for idx, v in enumerate(lst):
             if type(v) == str:
                 v = v.decode('utf-8')
-            emojis[v] = idx
+            smileys[v] = idx
 
-with open('tencent-emoji.json', 'w') as f:
-    json.dump(emojis, f)
+with open('tencent-smiley.json', 'w') as f:
+    json.dump(smileys, f)
 

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 88 - 89
lib/static/smiley.css


+ 0 - 0
lib/static/emoji.xml → lib/static/smiley.xml


+ 0 - 0
lib/static/emojis/0.png → lib/static/smileys/0.png


+ 0 - 0
lib/static/emojis/1.png → lib/static/smileys/1.png


+ 0 - 0
lib/static/emojis/10.png → lib/static/smileys/10.png


+ 0 - 0
lib/static/emojis/100.png → lib/static/smileys/100.png


+ 0 - 0
lib/static/emojis/101.png → lib/static/smileys/101.png


+ 0 - 0
lib/static/emojis/102.png → lib/static/smileys/102.png


+ 0 - 0
lib/static/emojis/103.png → lib/static/smileys/103.png


+ 0 - 0
lib/static/emojis/104.png → lib/static/smileys/104.png


+ 0 - 0
lib/static/emojis/11.png → lib/static/smileys/11.png


+ 0 - 0
lib/static/emojis/12.png → lib/static/smileys/12.png


+ 0 - 0
lib/static/emojis/13.png → lib/static/smileys/13.png


+ 0 - 0
lib/static/emojis/14.png → lib/static/smileys/14.png


+ 0 - 0
lib/static/emojis/15.png → lib/static/smileys/15.png


+ 0 - 0
lib/static/emojis/16.png → lib/static/smileys/16.png


+ 0 - 0
lib/static/emojis/17.png → lib/static/smileys/17.png


+ 0 - 0
lib/static/emojis/18.png → lib/static/smileys/18.png


+ 0 - 0
lib/static/emojis/19.png → lib/static/smileys/19.png


+ 0 - 0
lib/static/emojis/2.png → lib/static/smileys/2.png


+ 0 - 0
lib/static/emojis/20.png → lib/static/smileys/20.png


+ 0 - 0
lib/static/emojis/21.png → lib/static/smileys/21.png


+ 0 - 0
lib/static/emojis/22.png → lib/static/smileys/22.png


+ 0 - 0
lib/static/emojis/23.png → lib/static/smileys/23.png


+ 0 - 0
lib/static/emojis/24.png → lib/static/smileys/24.png


+ 0 - 0
lib/static/emojis/25.png → lib/static/smileys/25.png


+ 0 - 0
lib/static/emojis/26.png → lib/static/smileys/26.png


+ 0 - 0
lib/static/emojis/27.png → lib/static/smileys/27.png


+ 0 - 0
lib/static/emojis/28.png → lib/static/smileys/28.png


+ 0 - 0
lib/static/emojis/29.png → lib/static/smileys/29.png


+ 0 - 0
lib/static/emojis/3.png → lib/static/smileys/3.png


+ 0 - 0
lib/static/emojis/30.png → lib/static/smileys/30.png


+ 0 - 0
lib/static/emojis/31.png → lib/static/smileys/31.png


+ 0 - 0
lib/static/emojis/32.png → lib/static/smileys/32.png


+ 0 - 0
lib/static/emojis/33.png → lib/static/smileys/33.png


+ 0 - 0
lib/static/emojis/34.png → lib/static/smileys/34.png


+ 0 - 0
lib/static/emojis/35.png → lib/static/smileys/35.png


+ 0 - 0
lib/static/emojis/36.png → lib/static/smileys/36.png


+ 0 - 0
lib/static/emojis/37.png → lib/static/smileys/37.png


+ 0 - 0
lib/static/emojis/38.png → lib/static/smileys/38.png


+ 0 - 0
lib/static/emojis/39.png → lib/static/smileys/39.png


+ 0 - 0
lib/static/emojis/4.png → lib/static/smileys/4.png


+ 0 - 0
lib/static/emojis/40.png → lib/static/smileys/40.png


+ 0 - 0
lib/static/emojis/41.png → lib/static/smileys/41.png


+ 0 - 0
lib/static/emojis/42.png → lib/static/smileys/42.png


+ 0 - 0
lib/static/emojis/43.png → lib/static/smileys/43.png


+ 0 - 0
lib/static/emojis/44.png → lib/static/smileys/44.png


+ 0 - 0
lib/static/emojis/45.png → lib/static/smileys/45.png


+ 0 - 0
lib/static/emojis/46.png → lib/static/smileys/46.png


+ 0 - 0
lib/static/emojis/47.png → lib/static/smileys/47.png


+ 0 - 0
lib/static/emojis/48.png → lib/static/smileys/48.png


+ 0 - 0
lib/static/emojis/49.png → lib/static/smileys/49.png


+ 0 - 0
lib/static/emojis/5.png → lib/static/smileys/5.png


+ 0 - 0
lib/static/emojis/50.png → lib/static/smileys/50.png


+ 0 - 0
lib/static/emojis/51.png → lib/static/smileys/51.png


+ 0 - 0
lib/static/emojis/52.png → lib/static/smileys/52.png


+ 0 - 0
lib/static/emojis/53.png → lib/static/smileys/53.png


+ 0 - 0
lib/static/emojis/54.png → lib/static/smileys/54.png


+ 0 - 0
lib/static/emojis/55.png → lib/static/smileys/55.png


+ 0 - 0
lib/static/emojis/56.png → lib/static/smileys/56.png


+ 0 - 0
lib/static/emojis/57.png → lib/static/smileys/57.png


+ 0 - 0
lib/static/emojis/58.png → lib/static/smileys/58.png


+ 0 - 0
lib/static/emojis/59.png → lib/static/smileys/59.png


+ 0 - 0
lib/static/emojis/6.png → lib/static/smileys/6.png


+ 0 - 0
lib/static/emojis/60.png → lib/static/smileys/60.png


+ 0 - 0
lib/static/emojis/61.png → lib/static/smileys/61.png


+ 0 - 0
lib/static/emojis/62.png → lib/static/smileys/62.png


+ 0 - 0
lib/static/emojis/63.png → lib/static/smileys/63.png


+ 0 - 0
lib/static/emojis/64.png → lib/static/smileys/64.png


+ 0 - 0
lib/static/emojis/65.png → lib/static/smileys/65.png


+ 0 - 0
lib/static/emojis/66.png → lib/static/smileys/66.png


+ 0 - 0
lib/static/emojis/67.png → lib/static/smileys/67.png


+ 0 - 0
lib/static/emojis/68.png → lib/static/smileys/68.png


+ 0 - 0
lib/static/emojis/69.png → lib/static/smileys/69.png


+ 0 - 0
lib/static/emojis/7.png → lib/static/smileys/7.png


+ 0 - 0
lib/static/emojis/70.png → lib/static/smileys/70.png


+ 0 - 0
lib/static/emojis/71.png → lib/static/smileys/71.png


+ 0 - 0
lib/static/emojis/72.png → lib/static/smileys/72.png


+ 0 - 0
lib/static/emojis/73.png → lib/static/smileys/73.png


+ 0 - 0
lib/static/emojis/74.png → lib/static/smileys/74.png


+ 0 - 0
lib/static/emojis/75.png → lib/static/smileys/75.png


+ 0 - 0
lib/static/emojis/76.png → lib/static/smileys/76.png


+ 0 - 0
lib/static/emojis/77.png → lib/static/smileys/77.png


+ 0 - 0
lib/static/emojis/78.png → lib/static/smileys/78.png


+ 0 - 0
lib/static/emojis/79.png → lib/static/smileys/79.png


+ 0 - 0
lib/static/emojis/8.png → lib/static/smileys/8.png


+ 0 - 0
lib/static/emojis/80.png → lib/static/smileys/80.png


+ 0 - 0
lib/static/emojis/81.png → lib/static/smileys/81.png


+ 0 - 0
lib/static/emojis/82.png → lib/static/smileys/82.png


+ 0 - 0
lib/static/emojis/83.png → lib/static/smileys/83.png


+ 0 - 0
lib/static/emojis/84.png → lib/static/smileys/84.png


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно