From caa2ecd0b7b8a494f77cff6f5cacc565f08fafb2 Mon Sep 17 00:00:00 2001 From: darylkell <46514397+darylkell@users.noreply.github.com> Date: Tue, 19 Feb 2019 19:19:20 +0800 Subject: [PATCH] Fix LocationAttachment (#395) Set `LocationAttachment.address` instead of `latitude` and `longitude`, when no GPS coords are supplied. Fixes #392 --- fbchat/graphql.py | 14 +++++++++----- fbchat/models.py | 9 +++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/fbchat/graphql.py b/fbchat/graphql.py index 7aea283..a6a2896 100644 --- a/fbchat/graphql.py +++ b/fbchat/graphql.py @@ -143,13 +143,17 @@ def graphql_to_extensible_attachment(a): _type = target["__typename"] if _type == "MessageLocation": url = story.get("url") - latitude, longitude = get_url_parameter( - get_url_parameter(url, "u"), "where1" - ).split(", ") + address = get_url_parameter(get_url_parameter(url, "u"), "where1") + try: + latitude, longitude = [float(x) for x in address.split(", ")] + address = None + except ValueError: + latitude, longitude = None, None rtn = LocationAttachment( uid=int(story["deduplication_key"]), - latitude=float(latitude), - longitude=float(longitude), + latitude=latitude, + longitude=longitude, + address=address, ) media = story.get("media") if media and media.get("image"): diff --git a/fbchat/models.py b/fbchat/models.py index 6089104..673ef6b 100644 --- a/fbchat/models.py +++ b/fbchat/models.py @@ -444,7 +444,9 @@ class ShareAttachment(Attachment): class LocationAttachment(Attachment): - #: Latidute of the location + """Latitude and longitude OR address is provided by Facebook""" + + #: Latitude of the location latitude = None #: Longitude of the location longitude = None @@ -456,12 +458,15 @@ class LocationAttachment(Attachment): image_height = None #: URL to Bing maps with the location url = None + # Address of the location + address = None - def __init__(self, latitude=None, longitude=None, **kwargs): + def __init__(self, latitude=None, longitude=None, address=None, **kwargs): """Represents a user location""" super(LocationAttachment, self).__init__(**kwargs) self.latitude = latitude self.longitude = longitude + self.address = address class LiveLocationAttachment(LocationAttachment):