Ошибка при попытке обновить метаданные фотографии с помощью Street View Publish Service Client - Python

Я загрузил пару фотографий в Street View и хочу использовать клиентскую библиотеку Python для обновления ее метаданных. Найдите ниже фрагмент моего кода:

from google.proto.streetview.publish.v1 import resources_pb2
from google.streetview.publish.v1 import street_view_publish_service_client as client
from google.protobuf import field_mask_pb2

streetview_client = client.StreetViewPublishServiceClient(credentials=credentials)

for photo in streetview_client.list_photos(0, ''):
    con = resources_pb2.Connection()
    target_id = resources_pb2.PhotoId()
    target_id.id = "photo_id"
    con.target.id = target_id.id
    photo.connections.extend([con])
    update_mask = field_mask_pb2.FieldMask()
    update_mask.FromJsonString("connections")
    response = streetview_client.update_photo(photo, update_mask)
    break

Я хочу соединить обе фотографии, поэтому добавляю целевой идентификатор к фотографии запроса и поле "подключения" к маске update_mask. Результат после update_photo вызовом является следующее сообщение об ошибке:

google.gax.errors.RetryError: RetryError (Возникла исключительная ситуация в методе повторных попыток, который не был классифицирован как временный, вызванный <_Rendezvous для RPC, который завершился с помощью (StatusCode.INVALID_ARGUMENT, пустое имя уровня не принято.)>)

Любой намек?

1 ответ

Для того, чтобы сделать связь между двумя фотографиями, вам нужно использовать Method: photos.batchUpdate, Connections должен быть установлен прямо под Photo, Кроме того, следует отметить метаданные Photo что вам нужно реализовать.

Вот пример кода.

pose = resources_pb2.Pose(level=resources_pb2.Level(name="lvl", number=0))
connection1 = resources_pb2.Connection(target=resources_pb2.PhotoId(id="idOfConnection1"))
photo = resources_pb2.Photo(connections=[connection1], pose=pose)