Spaces:
Paused
Paused
import os | |
import requests | |
import logging | |
from dotenv import load_dotenv | |
import time | |
# Load environment variables from a .env file | |
load_dotenv() | |
# Configure logging | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
# Define constants | |
API_ENDPOINT = os.getenv("API_ENDPOINT", "https://chandimaprabath-florence-2-sd3-captioner-cpu.hf.space/generate") | |
def get_image_caption(image_path): | |
""" | |
Send a POST request to the API endpoint with the image and return the caption. | |
Args: | |
image_path (str): Path to the image file. | |
api_endpoint (str): URL of the API endpoint. | |
Returns: | |
str: The caption generated by the API. | |
""" | |
try: | |
with open(image_path, "rb") as image_file: | |
files = {"image": image_file} | |
# Start timer | |
start_time = time.time() | |
response = requests.post(API_ENDPOINT, files=files) | |
response.raise_for_status() # Raise HTTPError for bad responses | |
# End timer | |
end_time = time.time() | |
elapsed_time = end_time - start_time | |
data = response.json() | |
caption = data.get('caption', 'No caption found') | |
return caption, elapsed_time | |
except requests.exceptions.RequestException as e: | |
logger.error(f"Request failed: {e}") | |
return None, None | |
except Exception as e: | |
logger.error(f"An error occurred: {e}") | |
return None, None | |
if __name__ == "__main__": | |
IMAGE_PATH = "alchemy_refiner_alchemy_magic_0_3ed4af60-070e-47ed-b3de-a158103efa7b_0.jpg" | |
# Get caption for the specified image | |
caption, elapsed_time = get_image_caption(IMAGE_PATH) | |
if caption: | |
logger.info(f"Caption: {caption}") | |
logger.info(f"Time taken: {elapsed_time:.2f} seconds") | |
else: | |
logger.error("Failed to get caption.") | |