import gradio as gr from youtubesearchpython import VideosSearch import whisper import openai import os from pytube import YouTube # OpenAI API 키 설정 openai.api_key = '여기에 OpenAI API 키 입력' 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 download_audio_from_youtube(url, output_path="downloaded_audio.mp4"): yt = YouTube(url) audio_stream = yt.streams.get_audio_only() audio_stream.download(output_filename=output_path) return output_path def convert_audio_to_text(audio_path): model = whisper.load_model("base") result = model.transcribe(audio_path) return result["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): urls = search_youtube_videos(keyword) summaries = [] for url in urls[:1]: # 데모를 위해 첫 번째 URL만 처리 audio_path = download_audio_from_youtube(url) text = convert_audio_to_text(audio_path) summary = summarize_text(text) summaries.append(summary) os.remove(audio_path) # 임시 오디오 파일 삭제 return 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()