logging.warning(f"Rate limit hit for {img_url}. Falling back to Pixabay.")
logging.warning(f"Rate limit hit for {img_url} after retries. Falling back to Pixabay.")
returnNone
returnNone
else:
else:
logging.warning(f"Download failed for {img_url}: {e}")
logging.warning(f"Download failed for {img_url}: {e}")
@ -341,6 +352,7 @@ def get_image(search_query):
photo_id=match.group(1)
photo_id=match.group(1)
photo_ids.add(photo_id)
photo_ids.add(photo_id)
photo_ids=list(photo_ids)[:5]# Limit to 5 IDs
logging.info(f"Found {len(photo_ids)} Flickr photo IDs via DDG: {photo_ids}")
logging.info(f"Found {len(photo_ids)} Flickr photo IDs via DDG: {photo_ids}")
returnphoto_ids
returnphoto_ids
exceptExceptionase:
exceptExceptionase:
@ -349,14 +361,14 @@ def get_image(search_query):
defclassify_keywords(keywords):
defclassify_keywords(keywords):
prompt=(
prompt=(
"Given the following keywords from an image search query, classify each as 'specific' (e.g., brand names, unique entities) or 'generic' (e.g., common or abstract terms). "
"Given the following keywords from an image search query, classify each as 'specific' (e.g., brand names, unique entities like 'Taco Bell' or 'Paris') or 'generic' (e.g., common or abstract terms like 'dining' or 'trends'). "
"Return a JSON object mapping each keyword to its classification.\n\n"
"Return a JSON object mapping each keyword to its classification.\n\n"
"Keywords: "+", ".join(keywords)+"\n\n"
"Keywords: "+", ".join(keywords)+"\n\n"
"Example output:\n"
"Example output format (do not use these exact keywords in your response):\n"
# Helper function to classify keywords as specific or generic
# Helper function to classify keywords as specific or generic
defclassify_keywords(keywords):
defclassify_keywords(keywords):
prompt=(
prompt=(
"Given the following keywords from an image search query, classify each as 'specific' (e.g., brand names, unique entities) or 'generic' (e.g., common or abstract terms). "
"Given the following keywords from an image search query, classify each as 'specific' (e.g., brand names, unique entities like 'Taco Bell' or 'Paris') or 'generic' (e.g., common or abstract terms like 'dining' or 'trends'). "
"Return a JSON object mapping each keyword to its classification.\n\n"
"Return a JSON object mapping each keyword to its classification.\n\n"
"Keywords: "+", ".join(keywords)+"\n\n"
"Keywords: "+", ".join(keywords)+"\n\n"
"Example output:\n"
"Example output format (do not use these exact keywords in your response):\n"