diff --git a/fbchat/graphql.py b/fbchat/graphql.py index 7aea2839..a6a2896b 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 60891048..673ef6b6 100644 --- a/fbchat/models.py +++ b/fbchat/models.py @@ -444,7 +444,9 @@ def __init__( 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):