Tools / walmart /api.py
ZackBradshaw's picture
Upload folder using huggingface_hub
e67043b verified
raw
history blame
No virus
2.45 kB
import os
import re
import json
import requests
from ..tool import Tool
from typing import Optional
from bs4 import BeautifulSoup
from serpapi import GoogleSearch
from amadeus import Client, ResponseError
def build_tool(config) -> Tool:
tool = Tool(
"walmart Info",
"Query about information about retail commodity on Walmart Platform.",
name_for_model="walmart",
description_for_model="""This is a plugin for look up real walmart infomation. Results from this API are inaccessible for users. Please organize and re-present them.""",
logo_url="https://your-app-url.com/.well-known/logo.png",
contact_email="hello@contact.com",
legal_info_url="hello@legal.com",
)
SERPAPI_KEY = config["subscription_key"]
@tool.get("/ItemQuery")
def ItemQuery(
item: str,
option_num: Optional[int] = 3,
):
"""
This API gather retail information about queried items at walmart
:param item: product name presented as string.
:param option_num: the number of items presented for each queried item.
:return: a dict walmart retail information about queried items.
"""
try:
params = {
"engine": "walmart",
"query": item,
"api_key": SERPAPI_KEY,
}
search = GoogleSearch(params)
results = search.get_dict()
organic_results = results["organic_results"]
item_res = []
for idx in range(min(option_num, len(results["organic_results"]))):
item_res.append({})
item_res[idx]["name"] = organic_results[idx]["title"]
item_res[idx]["description"] = organic_results[idx]["description"]
item_res[idx]["price"] = organic_results[idx]["primary_offer"][
"offer_price"
]
item_res[idx]["price_unit"] = organic_results[idx]["price_per_unit"][
"unit"
]
item_res[idx]["url"] = organic_results[idx]["product_page_url"]
item_res[idx]["rating"] = organic_results[idx]["rating"]
item_res[idx]["seller_name"] = organic_results[idx]["seller_name"]
return json.dumps(item_res)
except Exception: # Handle response error exceptions
return {"error": "Response error."}
return tool