from youtubesearchpython import VideosSearch import gradio as gr import openai from langchain_community.document_loaders import YoutubeLoader import os # 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 # Gradio 인터페이스 설정 interface = gr.Interface( fn=search_youtube_videos, inputs=[ gr.Textbox(label="검색 키워드", placeholder="YouTube에서 검색할 키워드를 입력하세요."), gr.Slider(minimum=1, maximum=10, default=5, label="검색 결과 개수"), gr.Radio(choices=['date', 'relevance', 'rating', 'title', 'viewCount'], label="정렬 순서", default='date') ], outputs=gr.Textbox(label="검색 결과"), title="YouTube 비디오 검색", description="YouTube에서 비디오를 검색하고 결과의 링크를 받아보세요." ) # Gradio 앱 실행 if __name__ == "__main__": interface.launch() # 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()