コード例 #1
0
ファイル: amazon_api.py プロジェクト: fcpauldiaz/Keydex
def amazon_api(asin, url, marketplace = 'US', retries=0):
  try:
    if (retries < 2):
      amazon = AmazonAPI(settings.AWS_KEY_1, settings.AWS_SECRET_1, settings.AWS_API_1, region=marketplace)
    if (retries >= 2 and retries < 4):
      amazon = AmazonAPI(settings.AWS_KEY_2, settings.AWS_SECRET_2, settings.AWS_API_2, region=marketplace)
    if (retries >= 4 and retries < 6):
      amazon = AmazonAPI(settings.AWS_KEY_3, settings.AWS_SECRET_3, settings.AWS_API_3, region=marketplace)
    if (retries >= 6 and retries < 8):
      amazon = AmazonAPI(settings.AWS_KEY_3, settings.AWS_SECRET_3, settings.AWS_API_4, region=marketplace)
    if (retries >= 8 and retries < 10):
      amazon = AmazonAPI(settings.AWS_KEY_3, settings.AWS_SECRET_3, settings.AWS_API_5, region=marketplace)
    product = amazon.lookup(ItemId=asin)
    model_product = ProductRecord(
      title=product.title,
      product_url='<missing product url>',
      listing_url=url,
      price=str(product.price_and_currency[1])+str(product.price_and_currency[0]),
      primary_img=product.large_image_url,
      product_indexing=None,
      crawl_time=datetime.now(),
      asin=asin.upper()
    )
    if (product.asin != asin):
      return None
    return model_product
  except Exception as e:
    if (retries <= 10):
      return amazon_api(asin, url, marketplace, retries+1)
    return None
コード例 #2
0
    def test_region(self):
        amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY,
            AMAZON_ASSOC_TAG)
        assert_equals(amazon.region, 'US')

        # old 'region' parameter
        amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, region='UK')
        assert_equals(amazon.region, 'UK')

        # kwargs method
        amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, Region='UK')
        assert_equals(amazon.region, 'UK')
コード例 #3
0
 def get_queryset(self):  # pragma: no cover
     # Not covering this as we have no good way to mock a request to
     # the amazon api as they use request signatures. - Devon Bleibtrey
     amazon = AmazonAPI(settings.AMAZON_PROMOTION_API_KEY,
                        settings.AMAZON_PROMOTION_API_SECRET_KEY,
                        settings.AMAZON_ASSOCIATE_TAG)
     queryset = []
     query_param = self.request.query_params.get("query", "")
     if query_param:
         try:
             products = amazon.search_n(n=15,
                                        Keywords=query_param,
                                        SearchIndex="All")
         except SearchException:
             raise ValidationError("Sorry, we found no products "
                                   "matching your query.")
         for product in products:
             price, currency = product.price_and_currency
             has_reviews, iframe = product.reviews
             queryset.append({
                 "title": product.title,
                 "image": product.large_image_url,
                 "price": price,
                 "currency": currency,
                 "asin": product.asin,
                 "url": product.offer_url,
                 "has_reviews": has_reviews,
                 "iframe": iframe
             })
     return queryset
コード例 #4
0
    def ProcessQueryAmazon(keys, query):
        try:
            amazon = AmazonAPI(keys[0][0], keys[0][1], keys[0][2])
            products = amazon.search_n(100, Keywords=query, SearchIndex='All')

            tempList = []
            if products is not None:
                for item in products:
                    tempDict = {}
                    tempDict[CStaticConsts.siteName] = CStaticConsts.Amazon
                    tempDict[CStaticConsts.title] = item.title

                    # Some of the amazon price/currency are null
                    # so just populate the field with NA
                    if not item.price_and_currency[1]:
                        tempDict[CStaticConsts.currencyType] = 'NA'
                    else:
                        tempDict[CStaticConsts.
                                 currencyType] = item.price_and_currency[1]
                    if not item.price_and_currency[0]:
                        tempDict[CStaticConsts.itemPrice] = 'NA'
                    else:
                        tempDict[CStaticConsts.
                                 itemPrice] = item.price_and_currency[0]
                    tempDict[CStaticConsts.productUrl] = item.offer_url

                    tempList.append(tempDict)

            return tempList

        except urllib.error.HTTPError as e:
            print('Error getamazonlistings: ', e)
        except Exception as e:
            print('Error: getamazonlistings threw exception. Message: ', e)
コード例 #5
0
 def setUp(self):
     self.amazon = AmazonAPI(AMAZON_ACCESS_KEY,
                             AMAZON_SECRET_KEY,
                             AMAZON_ASSOC_TAG,
                             CacheReader=cache_reader,
                             CacheWriter=cache_writer,
                             MaxQPS=0.5)
コード例 #6
0
 def __init__(self, product_name):
     self.product_name = product_name
     keys = pandas.read_csv('accessKeys.csv').iloc[0]
     self.amazon = AmazonAPI(keys['access_key'],
                             keys['access_secret'],
                             837361066829,
                             region=REGION)
コード例 #7
0
def update_product(product):
    url = product.product_url

    AMAZON_ACCESS_KEY = 'AKIAIZPHCO56EZACZHBA'
    AMAZON_SECRET_KEY = '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'
    AMAZON_ASSOC_TAG = '1015f-21'

    region = url.split("amazon.")[1].split("/")[0]

    if "/dp/" in url:
        ASIN = url.split("/dp/")[1].strip("/").split("/")[0]
    elif "/gp/" in url:
        ASIN = url.split("/gp/product/")[1].strip("/").split("/")[0]
    print(ASIN)

    amazon = AmazonAPI(AMAZON_ACCESS_KEY,
                       AMAZON_SECRET_KEY,
                       AMAZON_ASSOC_TAG,
                       region=region.upper())
    products = amazon.lookup(ItemId=ASIN)
    price, currency = products.price_and_currency

    graph = Graph(product_id=product,
                  updated_at=datetime.now(),
                  current_price=price)
    graph.save()
    return
コード例 #8
0
ファイル: snippet.py プロジェクト: szabo92/gistable
 def __enter__(self):
     self.API = AmazonAPI(
         self.account["ACCESS_KEY"],
         self.account["SECRET_KEY"],
         self.account["ASSOC_TAG"],
         region = self.account["REGION"] if "REGION" in self.account else "US")
     return self
コード例 #9
0
def amazon_api_test(country, second=0):
    if not second:
        return AmazonAPI(amazon_id_1['asso_id'],
                         amazon_id_1['asso_key'],
                         amazon_id_1[country],
                         region=country.upper())
    elif second == 1:
        return AmazonAPI(amazon_id_2['asso_id'],
                         amazon_id_2['asso_key'],
                         amazon_id_2[country],
                         region=country.upper())
    else:
        return AmazonAPI(amazon_id_3['asso_id'],
                         amazon_id_3['asso_key'],
                         amazon_id_3[country],
                         region=country.upper())
コード例 #10
0
def process_list():
    file = open('azsearch/listtosearch.txt', 'r')
    amazon = AmazonAPI(ACCESS_KEY, SECRET_KEY, ASSOC_ID)
    for line in file:
        print("Processing: " + line)
        process_file(line, amazon)
        time.sleep(60)
コード例 #11
0
def setup(config):
    """Initializes this module from openlibrary config.
    """
    global config_loanstatus_url, \
        config_ia_access_secret, config_bookreader_host, \
        config_ia_ol_shared_key, config_ia_ol_xauth_s3, \
        config_internal_tests_api_key, config_ia_loan_api_url, \
        config_http_request_timeout, config_amz_api, amazon_api, \
        config_ia_availability_api_v1_url, config_ia_availability_api_v2_url, \
        config_ia_ol_metadata_write_s3, config_ia_xauth_api_url, \
        config_http_request_timeout, config_ia_s3_auth_url

    config_loanstatus_url = config.get('loanstatus_url')
    config_bookreader_host = config.get('bookreader_host', 'archive.org')
    config_ia_loan_api_url = config.get('ia_loan_api_url')
    config_ia_availability_api_v1_url = config.get(
        'ia_availability_api_v1_url')
    config_ia_availability_api_v2_url = config.get(
        'ia_availability_api_v2_url')
    config_ia_xauth_api_url = config.get('ia_xauth_api_url')
    config_ia_access_secret = config.get('ia_access_secret')
    config_ia_ol_shared_key = config.get('ia_ol_shared_key')
    config_ia_ol_auth_key = config.get('ia_ol_auth_key')
    config_ia_ol_xauth_s3 = config.get('ia_ol_xauth_s3')
    config_ia_s3_auth_url = config.get('ia_s3_auth_url')
    config_ia_ol_metadata_write_s3 = config.get('ia_ol_metadata_write_s3')
    config_internal_tests_api_key = config.get('internal_tests_api_key')
    config_http_request_timeout = config.get('http_request_timeout')
    config_amz_api = config.get('amazon_api')

    try:
        amazon_api = AmazonAPI(config_amz_api.key, config_amz_api.secret,
                               config_amz_api.id)
    except AttributeError:
        amazon_api = None
コード例 #12
0
 def test_amazon_api_defaults_to_US(self):
     """Test Amazon API defaults to the US store."""
     amazon = AmazonAPI(
         _AMAZON_ACCESS_KEY,
         _AMAZON_SECRET_KEY,
         _AMAZON_ASSOC_TAG
     )
     assert_equals(amazon.api.Region, "US")
コード例 #13
0
 def __init__(self, aws_access_key, aws_secret_key, associate_tag, region):
     self.aws_access_key = aws_access_key
     self.aws_secret_key = aws_secret_key
     self.associate_tag = associate_tag
     self.amazon = AmazonAPI(self.aws_access_key,
                             self.aws_secret_key,
                             self.associate_tag,
                             region=region)
コード例 #14
0
ファイル: app.py プロジェクト: aiweithesushigirl/Price-comp
 def __init__(self, search_word):
     self.search_word = search_word
     self.AMAZON_ACCESS_KEY = "AKIAJBVSXYPBD6LUXTSQ"
     self.AMAZON_SECRET_KEY = "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"
     self.AMAZON_ASSOC_TAG = "wawwawwaw1204-20"
     self.amazon = AmazonAPI(self.AMAZON_ACCESS_KEY, self.AMAZON_SECRET_KEY,
                             self.AMAZON_ASSOC_TAG)
     self.AsinList = []
     self.extracted_data = []
コード例 #15
0
def crawl_movie(id):
    amazon = AmazonAPI("AKIAILGCGSOAJBIYFIQA",
                       "xz53Hn0stSpZ2LpqRejomhnZflsqNt/Yhq58VOAK",
                       "ericpan2018-20")
    movie = amazon.lookup(ItemId=id)
    with open('/home/eric/Data/poster/' + id + '.jpg', 'wb') as f:
        f.write(requests.get(movie.large_image_url).content)
    print(movie.title)
    return movie.title
コード例 #16
0
 def __init__(self):
     super(AmazonApi, self).__init__()
     self.responsegroup = "Images,ItemAttributes,Offers"
     self.amazon = AmazonAPI(AMAZON_ACCESS_KEY,
                             AMAZON_SECRET_KEY,
                             AMAZON_ASSOC_TAG,
                             region="CN",
                             ErrorHandler=self.error_handler)
     self.sql = """
コード例 #17
0
ファイル: borrow.py プロジェクト: tatertot/lendinglibrary
def app_results(query):
    amazon = AmazonAPI(AWS_KEY, SECRET_KEY, ASSOC_TAG)
    products = amazon.search(Keywords=query, SearchIndex='All')
    if referrer == 'dashboard':
        return render_template("amazon_bottlenose2.html", products=products)
    else:
        form = AddProductForm()
        return render_template("amazon_bottlenose_add.html",
                               products=products,
                               form=form)
コード例 #18
0
def amazon_api(country):
    if country in ['us', 'fr', 'it', 'jp']:
        number = int(time.time() * 10) % 3
        amazon_id = (amazon_id_1, amazon_id_2, amazon_id_3)[number]
        return AmazonAPI(amazon_id['asso_id'],
                         amazon_id['asso_key'],
                         amazon_id[country],
                         region=country.upper())
    elif country in ['ca', 'es']:
        number = int(time.time() * 10) % 2
        amazon_id = (amazon_id_2, amazon_id_3)[number]
        return AmazonAPI(amazon_id['asso_id'],
                         amazon_id['asso_key'],
                         amazon_id[country],
                         region=country.upper())
    else:
        return AmazonAPI(amazon_id_1['asso_id'],
                         amazon_id_1['asso_key'],
                         amazon_id_1[country],
                         region=country.upper())
コード例 #19
0
ファイル: getItem.py プロジェクト: angerhang/junctionHack
def obtain_products(name, num):
    AMAZON_ACCESS_KEY = 'AKIAIGKWJJGRKVVHTNFA'
    AMAZON_SECRET_KEY = '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'
    AMAZON_ASSOC_TAG = '5566399-20'

    amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG)

    # get the images from top 10 from this categor
    products = amazon.search_n(num, Keywords=name, SearchIndex='All')

    return products
コード例 #20
0
def retrieve_amazon_data(id='00000000000', type=TYPE):
    amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG)
    try:
        product = amazon.lookup(ItemId=id, IdType=type, SearchIndex='Books')
    except:
        return None

    try:
        return product.isbn
    except AttributeError:  # So probably not a book then?
        return None
コード例 #21
0
def get_products(keyword):
    amazon = AmazonAPI(config['access_key'], config['secret_key'],
                       config['associate_tag'])
    products = amazon.search(Keywords=keyword, SearchIndex='Books')
    html_list = []
    for book in products:  # probably limits itself to 50 books
        html = '''<div class='product-box'><a target="_blank" href="{}"><img src="{}" width="120" height="160" alt="No Img Available"></a><div class="product-title"><h3>{}</h3><p class="product-price">{} {}<br></p></div></div>'''.format(
            book.detail_page_url, book.large_image_url, book.title,
            book.price_and_currency[1], book.price_and_currency[0])
        html_list.append(html)
    return ''.join(html_list[:10])
コード例 #22
0
 def lookup_item_by_keyword(self):
     """
     Returns all results of items given by amazon's search for the supplied keyword
     :param keyword: the keyword to search by
     :return:
     """
     amazon = AmazonAPI(secrets.AMAZON_ACCESS_KEY,
                        secrets.AMAZON_SECRET_KEY, secrets.AMAZON_ASSOC_TAG)
     products = amazon.search(
         Keywords=self.keyword, SearchIndex='Apparel', MaxQPS=0.9
     )  # might have to remove Sort='salesrank' sort since it grabs tons of different products
     return products
コード例 #23
0
ファイル: amazon_strips.py プロジェクト: bharris62/IF_Tools
def amazon_strips():
    amazon = AmazonAPI('AKIAJLW4JVOUA6L62PKQ', 'z0+px3hgEbAR5zqTjSJL70k+JyiS87ps4qEbgA7g', 'insulinfirst-20')

    prod = amazon.search(Keywords='diabetes blood test strips', SearchIndex='All')
    rows_logged = 0
    for i in prod:
        product = Product()
        # product manufacturer
        prod_manufacturerer = i.publisher
        product.product_manufacturer = prod_manufacturerer

        # description of product / Product Name
        prod_name = i.title
        product.product_name = prod_name

        # Price of Product
        prod_price = i.price_and_currency[0]
        product.product_price = prod_price

        # Image of product
        image = i.medium_image_url
        product.product_image = image

        # offer url
        url = i.offer_url
        product.product_url = url

        website = 'Amazon'
        product.product_dealer = website

        prod_type = 'Test Strips'
        product.product_type = prod_type

        prod_description = ''
        product.product_description = prod_description

        try:
            quantity = re.findall(r"[-+]?\d*\.\d+|\d+", prod_name)[-1]

            pps = format(float(prod_price) / float(quantity), '.2f')
            if float(pps) > 2:
                pps = 1000
            product.product_price_per_strip = pps

        except IndexError:
            pass


        rows_logged += 1
        db.session.add(product)
        db.session.commit()

    print("logged {} rows".format(rows_logged))
コード例 #24
0
ファイル: utils.py プロジェクト: tishmen/amazon_ebay
 def __init__(self):
     try:
         self.connection = AmazonAPI(
             settings.AMAZON_ACCESS_KEY, settings.AMAZON_SECRET_KEY,
             settings.AMAZON_ASSOCIATE_TAG
         )
         logger.info(u'Established Amazon API connection')
     except:
         self.connection = None
         logger.error(traceback.format_exc())
         logger.error(u'Failed to establish Amazon API connection')
     self.total_count = 0
コード例 #25
0
 def __init__(self, amazon_config, bot_db_configs, app_db_configs):
     self.logger = logging.getLogger('gearstack_rbt.{0}'.format(
         GearTypeRetriever.__name__))
     self.amazon_config = amazon_config
     self.geartype_retrieved_dao = GearTypeRetrievedDAO(
         bot_db_configs=bot_db_configs)
     self.geartype_dao = GearTypeDAO(app_db_configs=app_db_configs)
     self.amazon = AmazonAPI(
         aws_key=amazon_config['api_access_key'],
         aws_secret=amazon_config['api_secret_key'],
         aws_associate_tag=amazon_config['associate_tag'])
     self.cats_to_ignore = config_utils.fetch_data_config('ignore_cats')
コード例 #26
0
ファイル: amascan_lib.py プロジェクト: Nanaanim27/ctTextbooks
 def __init__(self, credentials_filename):
     creds = []
     with open(credentials_filename, 'rb') as fi:
         reader = csv.reader(fi)
         for row in reader:
             creds.append(row)
     self.tasks = Queue.Queue(len(creds))
     for cred in creds:
         amazon = AmazonAPI(cred[0],
                            cred[1],
                            self.affiliate_id,
                            MaxQPS=0.95)
         AmazonWorker(self.tasks, amazon)
コード例 #27
0
def amazon_product(asin, keyword, marketplace='US'):
    try:
        amazon = AmazonAPI(settings.AWS_KEY,
                           settings.AWS_SECRET,
                           settings.AWS_API,
                           region=marketplace)
        search_item = asin + ' ' + keyword
        products = amazon.search_n(1, Keywords=search_item, SearchIndex='All')
        if len(products) != 0:
            return True
        return False
    except:
        return False
コード例 #28
0
    def setUp(self):
        """Set Up.

        Initialize the Amazon API wrapper. The following values:

        * AMAZON_ACCESS_KEY
        * AMAZON_SECRET_KEY
        * AMAZON_ASSOC_TAG

        Are imported from a custom file named: 'test_settings.py'
        """
        self.amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY,
                                AMAZON_ASSOC_TAG)
コード例 #29
0
    def run(self):
        if self.repeat:
            self._schedule_next_run()

        self.amazon = AmazonAPI(app.config['AMAZON_ACCESS_KEY'],
                                app.config['AMAZON_SECRET_KEY'],
                                app.config['AMAZON_ASSOC_TAG'],
                                region='US')
        for book in Book.query.all():
            try:
                self._sync_book_with_amazon(book)
            except:
                pass
コード例 #30
0
def amazon_api_request():
    item_id = request.json.get('item_id')
    brand = request.json.get('brand')
    model = request.json.get('model')

    item = Item.query.filter_by(id=item_id).first()

    amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG)

    browse_modes = [
        "679270011", "679350011", "679307011", "679380011", "679380011",
        "679280011", "679357011"
    ]

    if item:
        # loop through browseNodes
        for node in browse_modes:
            try:
                products = amazon.search_n(
                    1,
                    Brand=brand,
                    Title=model,
                    SearchIndex='SportingGoods',
                    ResponseGroup='VariationSummary, Large',
                    BrowseNode=node)

                product_info = {
                    'title': products[0].title,
                    'small_image_url': products[0].small_image_url,
                    'medium_image_url': products[0].medium_image_url,
                    'asin': products[0].asin,
                }

                item.small_image_url = products[0].small_image_url
                item.medium_image_url = products[0].medium_image_url
                item.offer_url = products[0].offer_url

                if item.asin and products[0].asin not in item.asin:
                    item.asin = item.asin + ',' + products[0].asin
                else:
                    item.asin = products[0].asin
                item.thumbnail_cache = datetime.utcnow()
                db.session.commit()

                return json.dumps(product_info)
            except:
                pass
        else:
            # error
            error = {'error': 'amazon api exception'}
            return json.dumps(error)