Spaces:
Sleeping
Sleeping
| from googleapiclient.discovery import build | |
| import streamlit as st | |
| import requests | |
| from openai import OpenAI | |
| import os | |
| import bentoml | |
| from pathlib import Path | |
| client = OpenAI() | |
| client.key = os.getenv("OPENAI_API_KEY") | |
| GOOGLE_API_DEV_KEY = os.getenv("GOOGLE_API_DEV_KEY") | |
| def search_amazon(query: str, num: int = 10) -> str: | |
| service = build( | |
| "customsearch", "v1", developerKey=GOOGLE_API_DEV_KEY | |
| ) | |
| res = ( | |
| service.cse() | |
| .list( | |
| q=query, | |
| cx="103114c8487ce4aa1", | |
| num=num, | |
| ) | |
| .execute() | |
| ) | |
| links = "" | |
| if res['items'] is None or res['items'] == []: | |
| return "No items found" | |
| for item in res['items']: | |
| links += f"- [{item['title']}]({item['link']})\n" | |
| return links | |
| def remove_quotes(input_string): | |
| return input_string.replace('"', '') | |
| import re | |
| def append_tag_to_amazon_url(input_string): | |
| pattern = r'(https?://www\.amazon\.com[^)]*)' | |
| def append_tag(match): | |
| url = match.group(0) | |
| if '?' in url: | |
| return url + '&tag=dpang-20' | |
| else: | |
| return url + '?tag=dpang-20' | |
| return re.sub(pattern, append_tag, input_string) | |
| import requests | |
| import os | |
| def downloadImage(image_url): | |
| # Extract the file name and extension from the URL | |
| file_name = os.path.basename(image_url) | |
| # Local file path where you want to save the image | |
| local_file_path = os.path.join('./', file_name) | |
| # Send a GET request to the URL | |
| response = requests.get(image_url) | |
| # Check if the request was successful (status code 200) | |
| if response.status_code == 200: | |
| # Open a local file in write-binary ('wb') mode | |
| with open(local_file_path, 'wb') as file: | |
| # Write the content of the response to the file | |
| file.write(response.content) | |
| print(f"Image downloaded and saved as {local_file_path}") | |
| else: | |
| print(f"Failed to download the image. Status code: {response.status_code}") | |
| return file_name | |
| # Streamlit interface | |
| st.title('Vision SHop') | |
| url = st.text_input('Enter the url link to an image ( Example: https://images.ctfassets.net/7rldri896b2a/4augh14at0OZJuEhbWF0av/09dd54fe6543a36f2832f79cc51adad1/spc-bathdecor.jpg )', '') | |
| #url = st.text_input('Enter the url link to the image', 'Image URL') | |
| if st.button('Shop'): | |
| # Make a POST request | |
| try: | |
| basename=downloadImage(url) | |
| result="" | |
| with bentoml.SyncHTTPClient("https://blip-image-captioning-r2hq-org-rag-hackathon--gcp-us-central-1.mt-guc1.bentoml.ai") as client: | |
| result = client.generate( | |
| # img=Path("https://assets.wfcdn.com/im/59302811/resize-h1500-w1500%5Ecompr-r85/1882/188248294/Window+Scenery+Green+Peaceful+Lake+Natural+Landscape+Photography+Pictures+Canvas+Print+Wall+Art.jpg"), | |
| img=Path(basename), | |
| txt="", | |
| ) | |
| search_str = result | |
| print(search_str) | |
| st.write(search_str) | |
| search_str = remove_quotes(search_str) | |
| amazon_output = search_amazon(search_str) | |
| processed_lines = [append_tag_to_amazon_url(line) for line in amazon_output.split('\n')] | |
| output_str = '\n'.join(processed_lines) | |
| print(output_str) | |
| st.write(output_str) | |
| except Exception as e: | |
| st.error(f'An error occurred: {e}') | |