File size: 2,392 Bytes
2819be2 465c02f 2819be2 465c02f 8626295 2819be2 4261a30 8626295 2819be2 8626295 465c02f 2819be2 465c02f 2819be2 465c02f 2819be2 465c02f 8626295 2819be2 8626295 2819be2 465c02f 8626295 2819be2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
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() |