60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright 2014 Google Inc. All Rights Reserved.
|
|
|
|
"""Query with ranked results against the shopping search API"""
|
|
from __future__ import print_function
|
|
|
|
from googleapiclient.discovery import build
|
|
|
|
|
|
SHOPPING_API_VERSION = 'v1'
|
|
DEVELOPER_KEY = 'AIzaSyACZJW4JwcWwz5taR2gjIMNQrtgDLfILPc'
|
|
|
|
|
|
def main():
|
|
"""Get and print a histogram of the top 15 brand distribution for a search
|
|
query.
|
|
|
|
Histograms are created by using the "Facets" functionality of the API. A
|
|
Facet is a view of a certain property of products, containing a number of
|
|
buckets, one for each value of that property. Or concretely, for a parameter
|
|
such as "brand" of a product, the facets would include a facet for brand,
|
|
which would contain a number of buckets, one for each brand returned in the
|
|
result.
|
|
|
|
A bucket contains either a value and a count, or a value and a range. In the
|
|
simple case of a value and a count for our example of the "brand" property,
|
|
the value would be the brand name, eg "sony" and the count would be the
|
|
number of results in the search.
|
|
"""
|
|
client = build('shopping', SHOPPING_API_VERSION, developerKey=DEVELOPER_KEY)
|
|
resource = client.products()
|
|
request = resource.list(source='public', country='US', q=u'digital camera',
|
|
facets_include='brand:15', facets_enabled=True)
|
|
response = request.execute()
|
|
|
|
# Pick the first and only facet for this query
|
|
facet = response['facets'][0]
|
|
|
|
print('\n\tHistogram for "%s":\n' % facet['property'])
|
|
|
|
labels = []
|
|
values = []
|
|
|
|
for bucket in facet['buckets']:
|
|
labels.append(bucket['value'].rjust(20))
|
|
values.append(bucket['count'])
|
|
|
|
weighting = 50.0 / max(values)
|
|
|
|
for label, value in zip(labels, values):
|
|
print(label, '#' * int(weighting * value), '(%s)' % value)
|
|
|
|
print()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|