springwater's picture
Update app.py
465c02f verified
raw
history blame
2.39 kB
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()