import random from duckduckgo_search import DDGS class search: def __init__(self): self.ddgs = DDGS() def search_videos(self, keywords, max_results=None, region="us-en", safesearch="off", timelimit=None, resolution=None, duration=None): if max_results == None: max_results = 1 if isinstance(max_results, str): max_results = max_results.replace('"', '').replace("'", '') max_results = int(max_results) 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"") urls.append(result['embed_url']) output_dict = {} output_dict["llm_output"] = "Done. Video's have been searched for and displayed." output_dict["display"] = {"files": urls, "metadata": None} output_dict["type"] = "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["display"] = None output_dict["type"] = "text" return output_dict def search_images(self, keywords, max_results=None, region="us-en", safesearch="off", size=None, color=None, type_image=None, layout=None, license_image=None): if max_results == None: max_results = 4 if isinstance(max_results, str): max_results = max_results.replace('"', '').replace("'", '') max_results = int(max_results) 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'')) 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["display"] = {"html": urls} output_dict["type"] = "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["display"] = {"display": images} output_dict["type"] = "news" return output_dict