newer_project / modules /search_web.py
YaTharThShaRma999's picture
Create search_web.py
2f37638 verified
raw
history blame
No virus
4.05 kB
import random
from duckduckgo_search import DDGS
class search:
def __init__(self):
self.ddgs = DDGS()
def search_videos(self, keywords, max_results, region="us-en", safesearch="off", timelimit=None, resolution=None, duration=None):
if max_results == None:
max_results = 1
num = random.randint(1, 100)
results = self.ddgs.videos(
keywords=keywords,
region=region,
safesearch=safesearch,
timelimit=timelimit,
resolution=resolution,
duration=duration,
max_results=max_results,
)
urls = []
video_embeds = []
for result in results:
if result['embed_url'] != '':
video_embeds.append(f"<embed src='{result['embed_url']}' width='560' height='315'>")
urls.append(result['embed_url'])
output_dict = {}
output_dict["llm_output"] = "Done. Video's have been searched for and displayed."
output_dict["real_output"] = {"display": video_embeds, "name": num, "metadata": urls}
output_dict["type"] = "html_video"
return output_dict
def search_text(self, query, max_results=5, top=5):
results = self.ddgs.text(query, max_results=max_results, region="us-en")
num = random.randint(1, 100)
full_list = []
final_text = ""
texts = ""
urls = []
for result in results:
url = result['href']
urls.append(url)
full_list.append(result['body'])
for i, txt in enumerate(full_list):
final_text += f"This text is from this url {urls[i]}"
final_text += "\n"
final_text += txt
final_text += "\n"
final_text += f"\nThe text above is stored as the variable {num}"
output_dict = {}
output_dict["llm_output"] = str(final_text)
output_dict["real_output"] = {"display": None, "name": num, "metadata": None}
output_dict["type"] = "text"
return output_dict
def search_images(self, keywords, max_results, region="us-en", safesearch="off", size=None, color=None, type_image=None, layout=None, license_image=None):
if max_results == None:
max_results = 4
num = random.randint(1, 100)
images = []
results = self.ddgs.images(
keywords=keywords,
region=region,
safesearch=safesearch,
size=size,
color=color,
type_image=type_image,
layout=layout,
license_image=license_image,
max_results=max_results
)
urls = []
for img in results:
images.append((f'<img src="{img["image"]}">'))
urls.append(img['image'])
output_dict = {}
output_dict["llm_output"] = f"Done. Images's have been searched for and displayed. Stored as variable {num}"
output_dict["real_output"] = {"display": images, "name": num, "metadata": urls}
output_dict["type"] = "html_image"
return output_dict
def search_news(self, keywords, region="us-en", safesearch="off", timelimit="m", max_results=5):
results = self.ddgs.news(keywords=keywords, region=region, safesearch=safesearch, timelimit=timelimit, max_results=max_results)
titles = []
bodies = []
images = []
num = random.randint(1, 100)
news_list = ""
for result in results:
titles.append(result['title'])
bodies.append(result['body'])
images.append(result['image'])
for i in range(max_results):
news = f"""Title: {titles[i]}\n\nContent:{bodies[i]}"""
news_list += news
news_list += f"\nAll the text above is stored as a variable {num}."
output_dict["llm_output"] = str(news_list)
output_dict["real_output"] = {"display": images, "name": num, "metadata": None}
output_dict["type"] = "news"
return output_dict