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() |