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