from youtubesearchpython import VideosSearch, Transcript # Changed import statement import gradio as gr # Added import statement for Gradio import openai import os # openai.api_key = os.getenv('O_API_KEY') def search_youtube_videos(keyword): videos_search = VideosSearch(keyword, limit=5) results = videos_search.result() video_urls = [video['link'] for video in results['result']] return video_urls # Function to get the transcript for a given list of video URLs def get_transcript(urls): contents = '' for url in urls: data = Transcript.get(url) text = "" for segment in data['segments']: text += segment['text'] contents += text return contents # Function to summarize text using OpenAI's API def summarize_text(contents, OPENAI_API_KEY): response = openai.ChatCompletion.create( model="gpt-4-turbo-preview", # Corrected engine identifier messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": f"Summarize this: {contents}"} ], headers={ "Content-Type": "application/json", "Authorization": f"Bearer {OPENAI_API_KEY}" } ) return response.choices[0].message['content'].strip() # def summarize_text(contents): # response = openai.ChatCompletion.create( # engine="gpt-3.5-turbo", # prompt=f"요약: {contents}", # max_tokens=150 # ) # return response.choices[0].text.strip() # Function to integrate all the functionalities def summarize_youtube_videos(keyword): urls = search_youtube_videos(keyword) contents = get_transcript(urls) summary = summarize_text(contents) return summary # # Define Gradio interface # iface = gr.Interface( # input = gr.Textbox(label="keyword", placeholder='키워드를 입력하세요. (예.비트코인)'), # OPENAI_API_KEY = gr.Textbox(label="OpenAI API 키", placeholder="여기에 OpenAI API 키를 입력하세요"), # output =gr.JSON(label='유튜브 5개 요약 결과'), # result = gr.Button('submit'), # result.click( # fn = summarize_youtube_videos, # inputs = [input, OPEN_API_KEY], # outputs = [output] # ), # title="Summarize YouTube Videos", # description="Enter a keyword to summarize related YouTube videos.") # # Launch Gradio interface # iface.launch() iface = gr.Interface( inputs=[ gr.Textbox(label="keyword", placeholder='키워드를 입력하세요. (예.비트코인)'), gr.Textbox(label="OpenAI API 키", placeholder="여기에 OpenAI API 키를 입력하세요") ], outputs=gr.JSON(label='유튜브 5개 요약 결과'), title="Summarize YouTube Videos", description="Enter a keyword to summarize related YouTube videos." ) def summarize_button_click(keyword, OPENAI_API_KEY): summary = summarize_youtube_videos(keyword, OPENAI_API_KEY) return summary iface.button("submit", summarize_button_click) # Launch Gradio interface iface.launch()