sneakpic / api /searchImages.py
efraimdahl
more error handling
067d449
import requests
from dotenv import load_dotenv
import os
import random
load_dotenv() # Load the environment variables from the .env file
def performSearch(api_url, api_key, query, itemsPerPage,page):
headers = {
'Authorization': api_key,
# Add any other headers required by the API
}
try:
api_url += f"?query={query}&per_page={itemsPerPage}&page={page}"
response = requests.get(api_url, headers=headers)
response.raise_for_status()
data = response.json()
return data
except requests.exceptions.RequestException as e:
print(f"Error occurred: {e}")
def performQueries(req):
api_url = os.environ.get('PEXELENDPOINT')
api_key = os.environ.get('PEXELSAPI')
results = []
for i in range(0,len(req['queries'])):
query = " ".join(req['queries'][i]['keywords'])
per_page = req['queries'][i]['num_images']
if('curPage' in req['queries'][i]):
page = int(req['queries'][i]['curPage']+1)
else:
page = int(req['queries'][i]['page'])+1
res = performSearch(api_url, api_key, query, per_page, page)
results+=res['photos']
return results
#except:
# return {"error":"unable to execute query for images"}
#Example usage:
def incrementPages(obj, initialPage):
freqs = {}
for entry in obj['queries']['queries']:
val = freqs.get(entry['id'],0)
freqs.update({entry['id']:val+1})
for entry in obj['queries']['queries']:
val = freqs.get(entry['id'],False)
if(val):
entry['curPage']=entry['page']+val*initialPage
else:
return {"error":"Error while incrementing query pages"}
return obj