Spaces:
Sleeping
Sleeping
try fix Summary page
Browse files- pages/Summary.py +30 -19
- 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 |
-
#
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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"
|
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
|