From 403870e39ecabf5e9fc689fbe11496dd35dbb11f Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 7 Mar 2019 18:13:05 +0100 Subject: [PATCH] Move emojisize pull parsing into the model --- fbchat/_client.py | 2 +- fbchat/_message.py | 16 ++++++++++++++++ fbchat/_util.py | 24 ------------------------ fbchat/utils.py | 2 -- 4 files changed, 17 insertions(+), 27 deletions(-) diff --git a/fbchat/_client.py b/fbchat/_client.py index fa4fb2c..607dd58 100644 --- a/fbchat/_client.py +++ b/fbchat/_client.py @@ -3096,7 +3096,7 @@ class Client(object): ) if metadata and metadata.get("tags"): - emoji_size = get_emojisize_from_tags(metadata.get("tags")) + emoji_size = EmojiSize._from_tags(metadata.get("tags")) message = Message( text=delta.get("body"), diff --git a/fbchat/_message.py b/fbchat/_message.py index 3f6f03d..59e52ba 100644 --- a/fbchat/_message.py +++ b/fbchat/_message.py @@ -13,6 +13,22 @@ class EmojiSize(Enum): MEDIUM = "369239343222814" SMALL = "369239263222822" + @classmethod + def _from_tags(cls, tags): + string_to_emojisize = { + "large": cls.LARGE, + "medium": cls.MEDIUM, + "small": cls.SMALL, + "l": cls.LARGE, + "m": cls.MEDIUM, + "s": cls.SMALL, + } + for tag in tags or (): + data = tag.split(":", maxsplit=1) + if len(data) > 1 and data[0] == "hot_emoji_size": + return string_to_emojisize.get(data[1]) + return None + class MessageReaction(Enum): """Used to specify a message reaction""" diff --git a/fbchat/_util.py b/fbchat/_util.py index 8705442..5794fe7 100644 --- a/fbchat/_util.py +++ b/fbchat/_util.py @@ -12,7 +12,6 @@ import warnings import logging import requests import aenum -from .models import * try: from urllib.parse import urlencode, parse_qs, urlparse @@ -47,15 +46,6 @@ USER_AGENTS = [ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6", ] -LIKES = { - "large": EmojiSize.LARGE, - "medium": EmojiSize.MEDIUM, - "small": EmojiSize.SMALL, - "l": EmojiSize.LARGE, - "m": EmojiSize.MEDIUM, - "s": EmojiSize.SMALL, -} - GENDERS = { # For standard requests @@ -295,20 +285,6 @@ def get_jsmods_require(j, index): return None -def get_emojisize_from_tags(tags): - if tags is None: - return None - tmp = [tag for tag in tags if tag.startswith("hot_emoji_size:")] - if len(tmp) > 0: - try: - return LIKES[tmp[0].split(":")[1]] - except (KeyError, IndexError): - log.exception( - "Could not determine emoji size from {} - {}".format(tags, tmp) - ) - return None - - def require_list(list_): if isinstance(list_, list): return set(list_) diff --git a/fbchat/utils.py b/fbchat/utils.py index fedb1ea..4491d1c 100644 --- a/fbchat/utils.py +++ b/fbchat/utils.py @@ -7,7 +7,6 @@ from ._util import ( log, handler, USER_AGENTS, - LIKES, GENDERS, ReqUrl, facebookEncoding, @@ -25,7 +24,6 @@ from ._util import ( check_json, check_request, get_jsmods_require, - get_emojisize_from_tags, require_list, mimetype_to_key, get_files_from_urls,