diff --git a/instaloader/instaloader.py b/instaloader/instaloader.py index 5e4c2d2..c425093 100644 --- a/instaloader/instaloader.py +++ b/instaloader/instaloader.py @@ -453,9 +453,12 @@ class Instaloader: def save_location(self, filename: str, location: PostLocation, mtime: datetime) -> None: """Save post location name and Google Maps link.""" filename += '_location.txt' - location_string = (location.name + "\n" + - "https://maps.google.com/maps?q={0},{1}&ll={0},{1}\n".format(location.lat, - location.lng)) + if location.lat is not None and location.lng is not None: + location_string = (location.name + "\n" + + "https://maps.google.com/maps?q={0},{1}&ll={0},{1}\n".format(location.lat, + location.lng)) + else: + location_string = location.name with open(filename, 'wb') as text_file: with BytesIO(location_string.encode()) as bio: shutil.copyfileobj(cast(IO, bio), text_file) diff --git a/instaloader/structures.py b/instaloader/structures.py index f4ac793..59f0b31 100644 --- a/instaloader/structures.py +++ b/instaloader/structures.py @@ -35,8 +35,8 @@ PostLocation.id.__doc__ = "ID number of location." PostLocation.name.__doc__ = "Location name." PostLocation.slug.__doc__ = "URL friendly variant of location name." PostLocation.has_public_page.__doc__ = "Whether location has a public page." -PostLocation.lat.__doc__ = "Latitude (:class:`float`)." -PostLocation.lng.__doc__ = "Longitude (:class:`float`)." +PostLocation.lat.__doc__ = "Latitude (:class:`float` or None)." +PostLocation.lng.__doc__ = "Longitude (:class:`float` or None)." class Post: @@ -581,7 +581,7 @@ class Post: loc.update(self._context.get_json("explore/locations/{0}/".format(location_id), params={'__a': 1})['native_location_data']['location_info']) self._location = PostLocation(location_id, loc['name'], loc['slug'], loc['has_public_page'], - loc['lat'], loc['lng']) + loc.get('lat'), loc.get('lng')) return self._location @@ -1559,7 +1559,7 @@ class TopSearchResults: place = location.get('place', {}) slug = place.get('slug') loc = place.get('location', {}) - yield PostLocation(int(loc['pk']), loc['name'], slug, None, loc['lat'], loc['lng']) + yield PostLocation(int(loc['pk']), loc['name'], slug, None, loc.get('lat'), loc.get('lng')) def get_hashtag_strings(self) -> Iterator[str]: """