springwater commited on
Commit
465c02f
ยท
verified ยท
1 Parent(s): 4261a30

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -24
app.py CHANGED
@@ -1,9 +1,7 @@
1
- import gradio as gr
2
  from youtubesearchpython import VideosSearch
3
- import whisper
4
  import openai
5
- import os
6
- from pytube import YouTube
7
 
8
  # OpenAI API ํ‚ค ์„ค์ •
9
  openai.api_key = os.getenv('O_API_KEY')
@@ -14,41 +12,37 @@ def search_youtube_videos(keyword, limit=5, order='date'):
14
  video_urls = [video['link'] for video in results['result']]
15
  return video_urls
16
 
17
- def download_audio_from_youtube(url, output_path="downloaded_audio.mp4"):
18
- yt = YouTube(url)
19
- audio_stream = yt.streams.get_audio_only()
20
- audio_stream.download(output_filename=output_path)
21
- return output_path
22
-
23
- def convert_audio_to_text(audio_path):
24
- model = whisper.load_model("base")
25
- result = model.transcribe(audio_path)
26
- return result["text"]
27
 
28
  def summarize_text(text):
29
  response = openai.Completion.create(
30
  engine="text-davinci-003",
31
- prompt=f"์š”์•ฝํ•ด์ค˜: {text}",
32
  max_tokens=150
33
  )
34
  return response.choices[0].text.strip()
35
 
36
  def process_keyword(keyword):
37
- urls = search_youtube_videos(keyword)
38
  summaries = []
39
- for url in urls[:1]: # ๋ฐ๋ชจ๋ฅผ ์œ„ํ•ด ์ฒซ ๋ฒˆ์งธ URL๋งŒ ์ฒ˜๋ฆฌ
40
- audio_path = download_audio_from_youtube(url)
41
- text = convert_audio_to_text(audio_path)
42
- summary = summarize_text(text)
43
- summaries.append(summary)
44
- os.remove(audio_path) # ์ž„์‹œ ์˜ค๋””์˜ค ํŒŒ์ผ ์‚ญ์ œ
45
- return summaries
 
46
 
47
  # Gradio ์ธํ„ฐํŽ˜์ด์Šค
48
  interface = gr.Interface(
49
  fn=process_keyword,
50
  inputs=gr.Textbox(label="๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ"),
51
- outputs=gr.Textbox(label="์š”์•ฝ"),
52
  )
53
 
54
  interface.launch()
 
 
1
  from youtubesearchpython import VideosSearch
2
+ import gradio as gr
3
  import openai
4
+ from langchain_community.document_loaders import YoutubeLoader
 
5
 
6
  # OpenAI API ํ‚ค ์„ค์ •
7
  openai.api_key = os.getenv('O_API_KEY')
 
12
  video_urls = [video['link'] for video in results['result']]
13
  return video_urls
14
 
15
+ def get_transcript(url):
16
+ loader = YoutubeLoader()
17
+ transcript = loader.load(url)
18
+ text = " ".join([segment['text'] for segment in transcript['segments']])
19
+ return text
 
 
 
 
 
20
 
21
  def summarize_text(text):
22
  response = openai.Completion.create(
23
  engine="text-davinci-003",
24
+ prompt=f"์š”์•ฝ: {text}",
25
  max_tokens=150
26
  )
27
  return response.choices[0].text.strip()
28
 
29
  def process_keyword(keyword):
30
+ video_urls = search_youtube_videos(keyword)
31
  summaries = []
32
+ for url in video_urls:
33
+ try:
34
+ text = get_transcript(url)
35
+ summary = summarize_text(text)
36
+ summaries.append(f"URL: {url}\nSummary: {summary}\n")
37
+ except Exception as e:
38
+ summaries.append(f"URL: {url}\nError: {str(e)}\n")
39
+ return "\n".join(summaries)
40
 
41
  # Gradio ์ธํ„ฐํŽ˜์ด์Šค
42
  interface = gr.Interface(
43
  fn=process_keyword,
44
  inputs=gr.Textbox(label="๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ"),
45
+ outputs=gr.Textbox(label="๊ฒฐ๊ณผ"),
46
  )
47
 
48
  interface.launch()