예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
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)
예제 #12
0
# 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!")
예제 #13
0
                                              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")