from youtubesearchpython import VideosSearch import gradio as gr import openai from langchain_community.document_loaders import YoutubeLoader # OpenAI API 키 설정 openai.api_key = os.getenv('O_API_KEY') def search_youtube_videos(keyword, limit=5, order='date'): videos_search = VideosSearch(keyword, limit=limit, order=order) results = videos_search.result() video_urls = [video['link'] for video in results['result']] return video_urls def get_transcript(url): loader = YoutubeLoader() transcript = loader.load(url) text = " ".join([segment['text'] for segment in transcript['segments']]) return text def summarize_text(text): response = openai.Completion.create( engine="text-davinci-003", prompt=f"요약: {text}", max_tokens=150 ) return response.choices[0].text.strip() def process_keyword(keyword): video_urls = search_youtube_videos(keyword) summaries = [] for url in video_urls: try: text = get_transcript(url) summary = summarize_text(text) summaries.append(f"URL: {url}\nSummary: {summary}\n") except Exception as e: summaries.append(f"URL: {url}\nError: {str(e)}\n") return "\n".join(summaries) # Gradio 인터페이스 interface = gr.Interface( fn=process_keyword, inputs=gr.Textbox(label="검색 키워드"), outputs=gr.Textbox(label="결과"), ) interface.launch() # from youtubesearchpython import VideosSearch # from langchain_community.document_loaders import YoutubeLoader # import gradio as gr # def search_youtube_videos(keyword, limit=5, order='date'): # videos_search = VideosSearch(keyword, limit=limit, order='date') # results = videos_search.result() # video_urls = [video['link'] for video in results['result']] # return video_urls # def gradio_interface(keyword): # video_urls = search_youtube_videos(keyword) # return "\n".join(video_urls) # interface = gr.Interface( # fn=gradio_interface, # inputs=gr.Textbox(label="검색 키워드를 입력하세요"), # outputs=gr.Textbox(label="검색된 유튜브 동영상 URL"), # title="유튜브 검색 도우미", # description="키워드를 입력하면 유튜브에서 해당 키워드로 검색한 후 동영상 URL을 보여줍니다." # ) # if __name__ == "__main__": # interface.launch()