def test_batch_delete_photos(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock request photo_ids = [] # Mock response expected_response = rpcmessages_pb2.BatchDeletePhotosResponse() grpc_stub.BatchDeletePhotos.return_value = expected_response response = client.batch_delete_photos(photo_ids) self.assertEqual(expected_response, response) grpc_stub.BatchDeletePhotos.assert_called_once() args, kwargs = grpc_stub.BatchDeletePhotos.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = rpcmessages_pb2.BatchDeletePhotosRequest( photo_ids=photo_ids) self.assertEqual(expected_request, actual_request)
def test_create_photo(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock request photo = resources_pb2.Photo() # Mock response download_url = 'downloadUrl1109408056' thumbnail_url = 'thumbnailUrl1825632156' share_link = 'shareLink-1788203942' view_count = -1534353675 expected_response = resources_pb2.Photo(download_url=download_url, thumbnail_url=thumbnail_url, share_link=share_link, view_count=view_count) grpc_stub.CreatePhoto.return_value = expected_response response = client.create_photo(photo) self.assertEqual(expected_response, response) grpc_stub.CreatePhoto.assert_called_once() args, kwargs = grpc_stub.CreatePhoto.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = rpcmessages_pb2.CreatePhotoRequest(photo=photo) self.assertEqual(expected_request, actual_request)
def test_start_upload(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock response upload_url = 'uploadUrl-242738639' expected_response = resources_pb2.UploadRef(upload_url=upload_url) grpc_stub.StartUpload.return_value = expected_response response = client.start_upload() self.assertEqual(expected_response, response) grpc_stub.StartUpload.assert_called_once() args, kwargs = grpc_stub.StartUpload.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = empty_pb2.Empty() self.assertEqual(expected_request, actual_request)
def test_list_photos(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock request view = enums.PhotoView.BASIC filter_ = 'filter-1274492040' # Mock response next_page_token = '' photos_element = resources_pb2.Photo() photos = [photos_element] expected_response = rpcmessages_pb2.ListPhotosResponse( next_page_token=next_page_token, photos=photos) grpc_stub.ListPhotos.return_value = expected_response paged_list_response = client.list_photos(view, filter_) resources = list(paged_list_response) self.assertEqual(1, len(resources)) self.assertEqual(expected_response.photos[0], resources[0]) grpc_stub.ListPhotos.assert_called_once() args, kwargs = grpc_stub.ListPhotos.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = rpcmessages_pb2.ListPhotosRequest(view=view, filter=filter_) self.assertEqual(expected_request, actual_request)
def test_start_upload_exception(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock exception response grpc_stub.StartUpload.side_effect = CustomException() self.assertRaises(errors.GaxError, client.start_upload)
def test_delete_photo_exception(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock request photo_id = 'photoId-1274270136' # Mock exception response grpc_stub.DeletePhoto.side_effect = CustomException() self.assertRaises(errors.GaxError, client.delete_photo, photo_id)
def test_create_photo_exception(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock request photo = resources_pb2.Photo() # Mock exception response grpc_stub.CreatePhoto.side_effect = CustomException() self.assertRaises(errors.GaxError, client.create_photo, photo)
def test_batch_delete_photos_exception(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock request photo_ids = [] # Mock exception response grpc_stub.BatchDeletePhotos.side_effect = CustomException() self.assertRaises(errors.GaxError, client.batch_delete_photos, photo_ids)
def test_list_photos_exception(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock request view = enums.PhotoView.BASIC filter_ = 'filter-1274492040' # Mock exception response grpc_stub.ListPhotos.side_effect = CustomException() paged_list_response = client.list_photos(view, filter_) self.assertRaises(errors.GaxError, list, paged_list_response)
def test_delete_photo(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = street_view_publish_service_client.StreetViewPublishServiceClient( ) # Mock request photo_id = 'photoId-1274270136' client.delete_photo(photo_id) grpc_stub.DeletePhoto.assert_called_once() args, kwargs = grpc_stub.DeletePhoto.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = rpcmessages_pb2.DeletePhotoRequest( photo_id=photo_id) self.assertEqual(expected_request, actual_request)
def main(): UPLOADED_FOLDER = 'uploaded to google street view' args = arguments_parser.parse_args() path = args.path sys.argv = [sys.argv[0]] token = get_access_token() credentials = google.oauth2.credentials.Credentials(token) files = list() for dirpath, dnames, fnames in os.walk(path): for f in fnames: if f.upper().endswith(".JPG"): files.append(os.path.join(dirpath, f)) total_count = 0 for infile in sorted(files): if os.path.basename(os.path.dirname(infile)) == UPLOADED_FOLDER: continue else: total_count = total_count + 1 print('Upload all JPG files from ' + path) i = 0 for infile in sorted(files): if os.path.basename(os.path.dirname(infile)) == UPLOADED_FOLDER: continue i = i + 1 print( os.path.basename(infile) + " progress: {}%".format(str(round(float(100) / total_count * i)))) sys.stdout.flush() if 1 != 2: try: filename = infile path = os.path.normpath(filename) # Create a client and request an Upload URL. streetview_client = client.StreetViewPublishServiceClient( credentials=credentials) upload_ref = streetview_client.start_upload() # Upload the photo bytes to the Upload URL. with open(path, "rb") as f: raw_data = f.read() headers = { "Authorization": "Bearer " + token, "Content-Type": "image/jpeg", "X-Goog-Upload-Protocol": "raw", "X-Goog-Upload-Content-Length": str(len(raw_data)), } r = requests.post(upload_ref.upload_url, data=raw_data, headers=headers) if r.status_code != 200: print("Upload response: " + str(r)) # Upload the metadata of the photo. photo = resources_pb2.Photo() photo.upload_reference.upload_url = upload_ref.upload_url #from API refrence: #Currently, the only way to set heading, pitch, and roll in photo.create is through the Photo Sphere XMP metadata in the photo bytes. create_photo_response = streetview_client.create_photo(photo) #create dir if not exists uploaded_folder_path = os.path.join(os.path.dirname(infile), UPLOADED_FOLDER) if not os.path.exists(uploaded_folder_path): os.makedirs(uploaded_folder_path) os.rename( infile, os.path.join(uploaded_folder_path, os.path.basename(infile))) except IOError: print("IOError for", infile)
# After regenerating new client libraries and uploading a new version, run # this file to make sure that basic functionality works. You will need to # authenticate, which is a separate process (you will know what to do from # the authentication error messages, if that comes up). from google.streetview.publish.v1 import street_view_publish_service_client as client # Create a client and get an upload url. streetview_client = client.StreetViewPublishServiceClient() upload_ref = streetview_client.start_upload() print("Created upload url: " + str(upload_ref)) print("Success!")
options="NONE", update_mask=update_mask) pose = resources_pb2.Pose(level=resources_pb2.Level(name="lvl", number=0)) connection1 = resources_pb2.Connection(target=resources_pb2.PhotoId( id="PhotoId")) connection2 = resources_pb2.Connection(target=resources_pb2.PhotoId( id="PhotoId")) photo = resources_pb2.Photo(connections=[connection1, connection2]) update_mask = field_mask_pb2.FieldMask() response = streetview_client.batch_update_photos(photo) print("Update Response: " + str(response)) #End of UpdatePhoto #END OF FUNCTIONS token = get_access_token() credentials = google.oauth2.credentials.Credentials(token) # Create a client and request an Upload URL. streetview_client = client.StreetViewPublishServiceClient( credentials=credentials) #updatePhoto() uploadPic("sample") #batchDelete() #uploadPic("level_1") #getListPhoto() #uploadPic("output_2")