import yfinance as yf # youtube-search-python 추가 임포트 from youtubesearchpython import VideosSearch product_catalog = { "807ZPKBL9V": "SuperWidget", "1234567890": "MegaGadget" } def get_product_name_by_PID(PID: str) -> str: """ Finds the name of a product by its Product ID """ return product_catalog.get(PID, "Unknown product") def get_stock_price(ticker: str) -> float: """ Retrieves the latest stock price for a given ticker using yfinance. """ stock = yf.Ticker(ticker) data = stock.history(period="1d") if not data.empty: return data['Close'].iloc[-1] return float('nan') def search_youtube(query: str) -> str: """ Searches YouTube for the given query and returns top 3 video titles & links. """ # youtube-search-python 이용 try: videosSearch = VideosSearch(query, limit=3) results = videosSearch.result()["result"] # 실제 검색 결과 if not results: return "No videos found for your query." # 결과에서 타이틀과 링크를 추출 formatted_list = [] for idx, item in enumerate(results, start=1): title = item.get("title", "No Title") link = item.get("link", "#") formatted_list.append(f"{idx}) [{title}]({link})") # 여러 줄로 묶어서 반환 return "\n".join(formatted_list) except Exception as e: # 어떤 에러든 발생 시 안전하게 메시지 반환 return f"Error searching YouTube: {str(e)}"