import subprocess import sys import os import random import gradio as gr from pydub import AudioSegment import google.generativeai as genai from google.colab import userdata from youtube_transcript_api import YouTubeTranscriptApi try: import openai except ImportError: subprocess.check_call([sys.executable, "-m", "pip", "install", "openai"]) import openai # Import the library after installing it def DownloadScript(youtube_url, key): video_id = youtube_url.split("v=")[-1] transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=['en']) full_text = " ".join([entry['text'] for entry in transcript]) return full_text def GenQuiz(text, key): prompt = "請依附內容,為我出五題選擇題"+text openai.api_key = key completion = openai.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": prompt}] ) return completion.choices[0].message.content def setup_gradio_interface(): with gr.Blocks() as demo: gr.Markdown( """

YouTube 字幕考題生成器

""" ) with gr.Tab("字幕考題生成"): api_key_input = gr.Textbox(label="第一步:請輸入OpenAI API金鑰", placeholder="OpenAI API Key") youtube_input = gr.Textbox( label="第二步:請輸入 YouTube 影片連結", placeholder="https://www.youtube.com/watch?v=example" ) submit_button = gr.Button("載入字幕") txt_cc_output = gr.Textbox( label="第三步:下載字幕", placeholder="字幕將顯示在此處", interactive=False ) submit2_button = gr.Button("考題生成") txt_quiz_output = gr.Textbox( label="第四步:考題生成", placeholder="考題將顯示在此處", interactive=False ) # 連接按鈕到功能 submit_button.click( DownloadScript, inputs=[youtube_input, api_key_input], outputs=[txt_cc_output] ) submit2_button.click( GenQuiz, inputs=[txt_cc_output, api_key_input], outputs=[txt_quiz_output] ) return demo # 執行界面 if __name__ == "__main__": demo = setup_gradio_interface() demo.launch()