Seppukku commited on
Commit
c3a01c7
1 Parent(s): 7e8b084

try fix Summary page

Browse files
Files changed (2) hide show
  1. pages/Summary.py +30 -19
  2. requirements.txt +2 -1
pages/Summary.py CHANGED
@@ -6,6 +6,8 @@ from dotenv import load_dotenv
6
  import re
7
  import subprocess
8
  import json
 
 
9
 
10
  # Загрузка переменных окружения из .env файла
11
  load_dotenv()
@@ -45,27 +47,36 @@ def get_transcript(video_id):
45
 
46
  def get_transcript_via_ytdlp(video_id):
47
  try:
48
- # Команда для загрузки субтитров через yt-dlp
49
- command = [
50
- "yt-dlp",
51
- "--write-auto-sub", # Загружаем автоматические субтитры
52
- "--sub-lang", "en", # Используем английские автоматические субтитры
53
- "--skip-download", # Не загружаем само видео
54
- f"https://www.youtube.com/watch?v={video_id}",
55
- "--output", f"{video_id}.%(ext)s",
56
- "--write-sub", # Загружаем субтитры, если доступны
57
- "--sub-format", "json" # Загружаем субтитры в формате JSON
58
- ]
59
-
60
- subprocess.run(command, check=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
- # Открываем файл субтитров
63
- with open(f"{video_id}.en.vtt.json", 'r', encoding='utf-8') as file:
64
- data = json.load(file)
65
- transcript = ' '.join([item['text'] for item in data['events']])
66
- return transcript
67
  except Exception as e:
68
- raise RuntimeError(f"Не удалось получить автоматические субтитры через yt-dlp: {e}")
69
 
70
  def generate_summary_with_claude(transcript, prompt_text):
71
  try:
 
6
  import re
7
  import subprocess
8
  import json
9
+ import yt_dlp
10
+
11
 
12
  # Загрузка переменных окружения из .env файла
13
  load_dotenv()
 
47
 
48
  def get_transcript_via_ytdlp(video_id):
49
  try:
50
+ # Настройка параметров для загрузки субтитров
51
+ ydl_opts = {
52
+ 'writesubtitles': True,
53
+ 'writeautomaticsub': True, # Загружаем автоматические субтитры
54
+ 'subtitlesformat': 'json', # Формат субтитров
55
+ 'skip_download': True, # Не загружаем видео
56
+ 'subtitleslangs': ['en'], # Используем английские автоматические субтитры
57
+ 'outtmpl': f'{video_id}.%(ext)s'
58
+ }
59
+
60
+ # Использование yt-dlp API для загрузки субтитров
61
+ with yt_dlp.YoutubeDL(ydl_opts) as ydl:
62
+ info_dict = ydl.extract_info(f"https://www.youtube.com/watch?v={video_id}", download=False)
63
+ subtitles = info_dict.get('subtitles', {})
64
+ automatic_captions = info_dict.get('automatic_captions', {})
65
+
66
+ # Проверяем наличие автоматических субтитров
67
+ if 'en' in automatic_captions:
68
+ caption_url = automatic_captions['en'][0]['url']
69
+ ydl.download([caption_url])
70
+
71
+ with open(f"{video_id}.en.vtt.json", 'r', encoding='utf-8') as file:
72
+ data = json.load(file)
73
+ transcript = ' '.join([item['text'] for item in data['events']])
74
+ return transcript
75
+ else:
76
+ raise RuntimeError("Автоматические субтитры не найдены.")
77
 
 
 
 
 
 
78
  except Exception as e:
79
+ raise RuntimeError(f"Ошибка при загрузке субтитров через yt-dlp: {e}")
80
 
81
  def generate_summary_with_claude(transcript, prompt_text):
82
  try:
requirements.txt CHANGED
@@ -11,4 +11,5 @@ youtube-transcript-api
11
  streamlit
12
  google-api-python-client
13
  faiss-cpu
14
- Pillow
 
 
11
  streamlit
12
  google-api-python-client
13
  faiss-cpu
14
+ Pillow
15
+ yt-dlp