             "✅  Matched \(photoName) taken on \(photoDate)",
             "(\(candidates.count) candidates)"
         )
-        let flickrPhotoSummary = matches[0]
-
-        guard let flickrPhoto = api.call(
-            method: "flickr.photos.getInfo",
-            parameters: [
-                "photo_id": flickrPhotoSummary.id
-        ])?["photo"] as? [String: Any] else {
-            continue
-        }
+        let flickrPhoto = api.getInfo(forPhoto: matches[0].id)
 
         setLocation(for: photo, from: flickrPhoto)
     }

    } else {
        if let photoLocation = photo.location, !photoLocation.isEmpty {
            print("-   No location on flickr, but photo has location")
        } else if let tagWrapper = flickrPhoto["tags"] as? [String: Any],
             let tags = tagWrapper["tag"] as? [[String: Any]] {
            print("- ⛔️  No location on flickr")
            print(tags.flatMap { tag in
                tag["raw"]
            })
        }
    }
}

    )
}

func setLocation(for photo: PhotosMediaItem, from flickrPhoto: FlickrPhoto?) {
    if let flickrLocation = flickrPhoto?.location {
        var newLocation = [
            flickrLocation.latitude,
            flickrLocation.longitude
        ]
        if let photoLocation = photo.location, !photoLocation.isEmpty {
            let distance = getCLLocation(for: newLocation).distance(
                from: getCLLocation(for: photoLocation)
            )
            let distanceFormatter = MKDistanceFormatter()
