Spaces:
Build error
Build error
import json | |
import requests | |
import re | |
import urllib.parse | |
def _extractBingImages(html): | |
pattern = r'mediaurl=(.*?)&.*?expw=(\d+).*?exph=(\d+)' | |
matches = re.findall(pattern, html) | |
result = [] | |
for match in matches: | |
url, width, height = match | |
if url.endswith('.jpg') or url.endswith('.png') or url.endswith('.jpeg'): | |
result.append({'url': urllib.parse.unquote(url), 'width': int(width), 'height': int(height)}) | |
return result | |
def _extractGoogleImages(html): | |
images = [] | |
regex = re.compile(r"AF_initDataCallback\({key: 'ds:1', hash: '2', data:(.*?), sideChannel: {}}\);") | |
match = regex.search(html) | |
if match: | |
dz = json.loads(match.group(1)) | |
for c in dz[56][1][0][0][1][0]: | |
try: | |
thing = list(c[0][0].values())[0] | |
images.append(thing[1][3]) | |
except: | |
pass | |
return images | |
def getBingImages(query, retries=5): | |
query = query.replace(" ", "+") | |
images = [] | |
tries = 0 | |
while(len(images) == 0 and tries < retries): | |
response = requests.get(f"https://www.bing.com/images/search?q={query}&first=1") | |
if(response.status_code == 200): | |
images = _extractBingImages(response.text) | |
else: | |
print("Error While making bing image searches", response.text) | |
raise Exception("Error While making bing image searches") | |
if(images): | |
return images | |
raise Exception("Error While making bing image searches") | |