diff --git a/app/DataBase/output_pc.py b/app/DataBase/output_pc.py
index 11600f7..492c5fb 100644
--- a/app/DataBase/output_pc.py
+++ b/app/DataBase/output_pc.py
@@ -284,11 +284,7 @@ class ChildThread(QThread):
timestamp = message[5]
if self.output_type == Output.HTML:
emoji_path = get_emoji(str_content, thumb=True, output_path=origin_docx_path + '/emoji')
- if emoji_path == "":
- shutil.copy(f"{os.path.abspath('.')}/app/resources/icons/404.png", origin_docx_path + '/emoji/404.png')
- emoji_path = "./emoji/404.png"
- else:
- emoji_path = './emoji/' + os.path.basename(emoji_path)
+ emoji_path = './emoji/' + os.path.basename(emoji_path)
if self.is_5_min(timestamp):
doc.write(
f'''{{ type:0, text: '{str_time}',is_send:0,avatar_path:''}},'''
@@ -473,7 +469,7 @@ class ChildThread(QThread):
self.emoji(f, message)
elif type_ == 10000 and self.message_types.get(type_):
self.system_msg(f, message)
- elif type_ == 49 and sub_type == 57 and self.message_types.get(1):
+ elif type_ == 49 and sub_type == 57:
self.refermsg(f,message)
f.write(html_end)
f.close()
diff --git a/app/util/emoji.py b/app/util/emoji.py
index f6b707a..d2a4d7f 100644
--- a/app/util/emoji.py
+++ b/app/util/emoji.py
@@ -11,8 +11,7 @@ emoji.py
import os
import traceback
import xml.etree.ElementTree as ET
-import sqlite3
-import threading
+
import requests
from app.log import log, logger
@@ -44,10 +43,7 @@ def get_image_format(header):
def parser_xml(xml_string):
assert type(xml_string) == str
# Parse the XML string
- try:
- root = ET.fromstring(xml_string)
- except:
- root = ET.fromstring(xml_string.replace("&", "&"))
+ root = ET.fromstring(xml_string)
emoji = root.find('./emoji')
# Accessing attributes of the 'emoji' element
fromusername = emoji.get('fromusername')
@@ -65,67 +61,10 @@ def parser_xml(xml_string):
'height': height,
'cdnurl': cdnurl,
'thumburl': thumburl if thumburl else cdnurl,
- 'md5': (md5 if md5 else androidmd5).lower(),
+ 'md5': md5 if md5 else androidmd5,
}
-def singleton(cls):
- _instance = {}
-
- def inner():
- if cls not in _instance:
- _instance[cls] = cls()
- return _instance[cls]
-
- return inner
-
-lock = threading.Lock()
-db_path = "./app/Database/Msg/Emotion.db"
-
-@singleton
-class Emotion:
- def __init__(self):
- self.DB = None
- self.cursor: sqlite3.Cursor = None
- self.open_flag = False
- self.init_database()
-
- def init_database(self):
- if not self.open_flag:
- if os.path.exists(db_path):
- self.DB = sqlite3.connect(db_path, check_same_thread=False)
- # '''创建游标'''
- self.cursor = self.DB.cursor()
- self.open_flag = True
- if lock.locked():
- lock.release()
-
- def get_emoji_url(self, md5: str):
- sql = '''
- select CDNUrl
- from CustomEmotion
- where md5 = ?
- '''
- try:
- lock.acquire(True)
- self.cursor.execute(sql, [md5])
- return self.cursor.fetchone()[0]
- except:
- md5 = md5.upper()
- sql = """
- select Data
- from EmotionItem
- where md5 = ?
- """
- self.cursor.execute(sql, [md5])
- try:
- return self.cursor.fetchone()[0]
- except:
- return ""
- finally:
- lock.release()
-
-emoji_db = Emotion()
-
+@log
def download(url, output_dir, name, thumb=False):
if not url:
return ':/icons/icons/404.png'
@@ -153,44 +92,23 @@ def get_emoji(xml_string, thumb=True, output_path=root_path) -> str:
prefix = 'th_' if thumb else ''
file_path = os.path.join(output_path, prefix + md5 + f)
if os.path.exists(file_path):
- # print('表情包已存在', file_path)
+ print('表情包已存在')
return file_path
url = emoji_info['thumburl'] if thumb else emoji_info['cdnurl']
- if not url or url == "":
- url = emoji_db.get_emoji_url(md5)
- if type(url) == str and url != "":
- print("下载表情包ing:", url)
- emoji_path = download(url, output_path, md5, thumb)
- return emoji_path
- elif type(url) == bytes:
- image_format = get_image_format(url[:8])
- if image_format:
- if thumb:
- output_path = os.path.join(output_path, 'th_' + md5 + '.' + image_format)
- else:
- output_path = os.path.join(output_path, md5 + '.' + image_format)
- else:
- output_path = os.path.join(output_path, md5)
- with open(output_path, 'wb') as f:
- f.write(url)
- print("表情包数据库加载", output_path)
- return output_path
- else:
- print("!!!未知表情包数据,信息:", xml_string, emoji_info, url)
- return ""
+ print("下载表情包ing:", url)
+ emoji_path = download(url, output_path, md5, thumb)
+ return emoji_path
except:
logger.error(traceback.format_exc())
return ""
if __name__ == '__main__':
- db_path = r"..\DataBase\Msg\Emotion.db"
- xml_string = ''
- print(get_emoji(xml_string, thumb=False, output_path="."))
- # ET.fromstring()
- # print(res1, res1['md5'])
+ xml_string = ' '
+ res1 = parser_xml(xml_string)
+ print(res1, res1['md5'])
# download(res1['cdnurl'], "./data/emoji/", res1['md5'])
# download(res1['thumburl'], "./data/emoji/", res1['md5'], True)
- # print(get_emoji(xml_string, True))
- # print(get_emoji(xml_string, False))
+ print(get_emoji(xml_string, True))
+ print(get_emoji(xml_string, False))
# http://vweixinf.tc.qq.com/110/20403/stodownload?m=3a4d439aba02dce4834b2c54e9f15597&filekey=3043020101042f302d02016e0402534804203361346434333961626130326463653438333462326335346539663135353937020213f0040d00000004627466730000000131&hy=SH&storeid=323032313037323030373236313130303039653236646365316535316534383236386234306230303030303036653033303034666233&ef=3&bizid=1022