Skip to content

Commit 71d9ea0

Browse files
committed
updating error message, VCAP_SERVICES parsing for Visual Recognition v3
1 parent d69791c commit 71d9ea0

File tree

3 files changed

+33
-22
lines changed

3 files changed

+33
-22
lines changed

examples/visual_recognition_v3.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,28 @@
33
from os import environ
44
from watson_developer_cloud import VisualRecognitionV3
55

6-
test_url = 'http://ia.media-imdb.com/images/M/MV5BMTMxMDIzMDEzNF5BMl5BanBnXkFtZTcwODcxMjE2Mg@@._V1_UY317_CR2,0,214,317_AL_.jpg'
6+
test_url = 'https://www.ibm.com/ibm/ginni/images/ginni_bio_780x981_v4_03162016.jpg'
77

8-
visual_recognition = VisualRecognitionV3('2016-05-20',api_key=environ['API_KEY'])
8+
visual_recognition = VisualRecognitionV3('2016-05-20', api_key='YOUR API KEY')
99

10-
#with open(join(dirname(__file__), '../resources/cars.zip'), 'rb') as cars, \
10+
# with open(join(dirname(__file__), '../resources/cars.zip'), 'rb') as cars, \
1111
# open(join(dirname(__file__), '../resources/trucks.zip'), 'rb') as trucks:
12-
# print(json.dumps(visual_recognition.create_classifier('Cars vs Trucks', cars_positive_examples=cars,
13-
# negative_examples=trucks), indent=2))
12+
# print(json.dumps(visual_recognition.create_classifier('Cars vs Trucks', cars_positive_examples=cars,
13+
# negative_examples=trucks), indent=2))
1414

15-
#with open(join(dirname(__file__), '../resources/car.jpg'), 'rb') as image_file:
15+
# with open(join(dirname(__file__), '../resources/car.jpg'), 'rb') as image_file:
1616
# visual_recognition.classify(images_file=image_file)
1717

1818
print(json.dumps(visual_recognition.classify(images_url=test_url), indent=2))
1919

20+
print(json.dumps(visual_recognition.detect_faces(images_url=test_url), indent=2))
2021

21-
#The service currently has a bug where even successful deletions return a 404
22-
#print(json.dumps(visual_recognition.delete_classifier(classifier_id='YOUR CLASSIFIER ID'), indent=2))
22+
# print(json.dumps(visual_recognition.delete_classifier(classifier_id='YOUR CLASSIFIER ID'), indent=2))
2323

24-
#print(json.dumps(visual_recognition.list_classifiers(), indent=2))
24+
print(json.dumps(visual_recognition.list_classifiers(), indent=2))
2525

2626
# with open(join(dirname(__file__), '../resources/test.jpg'), 'rb') as image_file:
27-
# print(json.dumps(visual_recognition.classify(image_file, classifier_ids=['Tiger', 'Cat']), indent=2))
27+
# print(json.dumps(visual_recognition.classify(images_file=image_file), indent=2))
28+
29+
# with open(join(dirname(__file__), '../resources/test.jpg'), 'rb') as image_file:
30+
# print(json.dumps(visual_recognition.detect_faces(images_file=image_file), indent=2))

watson_developer_cloud/visual_recognition_v3.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def __init__(self, version, url=default_url, use_vcap_services=True, api_key=Non
3434
"""
3535

3636
WatsonDeveloperCloudService.__init__(
37-
self, 'visual_recognition', url, None, None, use_vcap_services, api_key)
37+
self, 'watson_vision_combined', url, None, None, use_vcap_services, api_key)
3838
self.version = version
3939

4040
def get_classifier(self, classifier_id):
@@ -78,10 +78,10 @@ def create_classifier(self, name, **kwargs):
7878
params = {'version': self.version}
7979
data = {'name': name}
8080
# Params sent as url parameters here
81-
return self.request(method='POST', url='/v3/classifiers', files=kwargs,
82-
data=data, params=params, accept_json=True)
81+
return self.request(method='POST', url='/v3/classifiers', files=kwargs, data=data, params=params,
82+
accept_json=True)
8383

84-
def classify(self, images_file=None, images_url=None, classifier_ids=None):
84+
def classify(self, images_file=None, images_url=None, classifier_ids=None, owners=None, threshold=None):
8585
"""
8686
Returns a list of classification scores for one or more input images.
8787
:param images_file: An image file or zip file of image files to analyze.
@@ -97,14 +97,14 @@ def classify(self, images_file=None, images_url=None, classifier_ids=None):
9797
if images_file is None and images_url is None:
9898
raise AssertionError('You must specify either a file or a url')
9999

100-
params = {'version': self.version}
101-
data = {'classifier_ids': classifier_ids}
100+
params = {'version': self.version, 'classifier_ids': classifier_ids, 'owners': owners, 'threshold': threshold}
102101
# Params sent as url parameters here
103102
if images_url:
104103
params['url'] = images_url
105-
return self.request(method='POST', url='/v3/classify', data=data, params=params, accept_json=True)
104+
return self.request(method='GET', url='/v3/classify', params=params, accept_json=True)
106105
else:
107-
return self.request(method='POST', url='/v3/classify', files={'images_file': images_file}, data=data, params=params, accept_json=True)
106+
return self.request(method='POST', url='/v3/classify', files={'images_file': images_file}, params=params,
107+
accept_json=True)
108108

109109
def detect_faces(self, images_file=None, images_url=None):
110110
"""
@@ -117,7 +117,7 @@ def detect_faces(self, images_file=None, images_url=None):
117117
# Params sent as url parameters here
118118
if images_url:
119119
params['url'] = images_url
120-
return self.request(method='POST', url='/v3/detect_faces', params=params, accept_json=True)
120+
return self.request(method='GET', url='/v3/detect_faces', params=params, accept_json=True)
121121
else:
122122
return self.request(method='POST', url='/v3/detect_faces', files={'images_file': images_file},
123123
params=params, accept_json=True)
@@ -133,7 +133,7 @@ def recognize_text(self, images_file=None, images_url=None):
133133
# Params sent as url parameters here
134134
if images_url:
135135
params['url'] = images_url
136-
return self.request(method='POST', url='/v3/recognize_text', params=params, accept_json=True)
136+
return self.request(method='GET', url='/v3/recognize_text', params=params, accept_json=True)
137137
else:
138138
return self.request(method='POST', url='/v3/recognize_text',
139139
files={'images_file': images_file}, params=params, accept_json=True)

watson_developer_cloud/watson_developer_cloud_service.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ def __init__(self, vcap_services_name, url, username=None, password=None, use_vc
9595
self.username = self.vcap_service_credentials['username']
9696
if 'password' in self.vcap_service_credentials:
9797
self.password = self.vcap_service_credentials['password']
98+
if 'api_key' in self.vcap_service_credentials:
99+
self.api_key = self.vcap_service_credentials['api_key']
98100
if 'apikey' in self.vcap_service_credentials:
99101
self.api_key = self.vcap_service_credentials['apikey']
100102

@@ -143,7 +145,10 @@ def _get_error_message(response):
143145
try:
144146
error_json = response.json()
145147
if 'error' in error_json:
146-
error_message = 'Error: ' + error_json['error']
148+
if isinstance(error_json['error'], dict) and 'description' in error_json['error']:
149+
error_message = 'Error: ' + error_json['error']['description']
150+
else:
151+
error_message = 'Error: ' + error_json['error']
147152
if 'error_message' in error_json:
148153
error_message = 'Error: ' + error_json['error_message']
149154
if 'description' in error_json:
@@ -227,7 +232,10 @@ def request(self, method, url, accept_json=False, headers=None, params=None, jso
227232
if self.api_key is not None:
228233
if params is None:
229234
params = {}
230-
params['apikey'] = self.api_key
235+
if url.startswith('https://gateway-a.watsonplatform.net/calls'):
236+
params['apikey'] = self.api_key
237+
else:
238+
params['api_key'] = self.api_key
231239

232240
response = requests.request(method=method, url=full_url, cookies=self.jar, auth=auth, headers=headers,
233241
params=params, data=data, files=files, **kwargs)

0 commit comments

Comments
 (0)