Fix import issue
Browse files- video_accent_analyzer.py +41 -11
video_accent_analyzer.py
CHANGED
@@ -87,6 +87,10 @@ class VideoAccentAnalyzer:
|
|
87 |
self.model_loaded = False
|
88 |
self._load_model()
|
89 |
|
|
|
|
|
|
|
|
|
90 |
def _load_model(self):
|
91 |
"""Load the accent classification model with error handling"""
|
92 |
print("π€ Loading accent classification model...")
|
@@ -128,8 +132,29 @@ class VideoAccentAnalyzer:
|
|
128 |
print(f"β Trimming exception: {e}")
|
129 |
return input_path
|
130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
def download_video(self, url, max_duration=None):
|
132 |
-
"""Download video using yt-dlp with
|
133 |
is_valid, result = self._validate_url(url)
|
134 |
if not is_valid:
|
135 |
print(f"β {result}")
|
@@ -138,23 +163,28 @@ class VideoAccentAnalyzer:
|
|
138 |
url = result
|
139 |
output_path = os.path.join(self.temp_dir, "video.%(ext)s")
|
140 |
|
141 |
-
# Enhanced yt-dlp options
|
142 |
ydl_opts = {
|
143 |
'outtmpl': output_path,
|
144 |
-
'format': 'worst[ext=mp4]/worst',
|
145 |
-
'quiet': False,
|
146 |
'no_warnings': False,
|
147 |
'socket_timeout': 60,
|
148 |
-
'retries': 5
|
149 |
-
'fragment_retries': 5,
|
150 |
-
'extract_flat': False,
|
151 |
-
'writeinfojson': False,
|
152 |
-
'writethumbnail': False,
|
153 |
-
'writesubtitles': False,
|
154 |
}
|
155 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
if max_duration:
|
157 |
-
# More generous time limit for download
|
158 |
ydl_opts['match_filter'] = lambda info: None if info.get('duration', 0) <= 200000 else "Video too long"
|
159 |
|
160 |
try:
|
|
|
87 |
self.model_loaded = False
|
88 |
self._load_model()
|
89 |
|
90 |
+
|
91 |
+
|
92 |
+
|
93 |
+
|
94 |
def _load_model(self):
|
95 |
"""Load the accent classification model with error handling"""
|
96 |
print("π€ Loading accent classification model...")
|
|
|
132 |
print(f"β Trimming exception: {e}")
|
133 |
return input_path
|
134 |
|
135 |
+
def _get_youtube_cookies(self):
|
136 |
+
"""Get YouTube cookies from browser"""
|
137 |
+
import browser_cookie3
|
138 |
+
|
139 |
+
try:
|
140 |
+
# Try Firefox first
|
141 |
+
cookies = browser_cookie3.firefox(domain_name='.youtube.com')
|
142 |
+
except:
|
143 |
+
try:
|
144 |
+
# Try Chrome as fallback
|
145 |
+
cookies = browser_cookie3.chrome(domain_name='.youtube.com')
|
146 |
+
except:
|
147 |
+
print("β οΈ Could not get cookies from browser")
|
148 |
+
return None
|
149 |
+
|
150 |
+
return cookies
|
151 |
+
|
152 |
+
|
153 |
+
|
154 |
+
|
155 |
+
|
156 |
def download_video(self, url, max_duration=None):
|
157 |
+
"""Download video using yt-dlp with cookie support"""
|
158 |
is_valid, result = self._validate_url(url)
|
159 |
if not is_valid:
|
160 |
print(f"β {result}")
|
|
|
163 |
url = result
|
164 |
output_path = os.path.join(self.temp_dir, "video.%(ext)s")
|
165 |
|
166 |
+
# Enhanced yt-dlp options
|
167 |
ydl_opts = {
|
168 |
'outtmpl': output_path,
|
169 |
+
'format': 'worst[ext=mp4]/worst',
|
170 |
+
'quiet': False,
|
171 |
'no_warnings': False,
|
172 |
'socket_timeout': 60,
|
173 |
+
'retries': 5
|
|
|
|
|
|
|
|
|
|
|
174 |
}
|
175 |
|
176 |
+
# Add cookies for YouTube URLs
|
177 |
+
if 'youtube.com' in url or 'youtu.be' in url:
|
178 |
+
cookies = self._get_youtube_cookies()
|
179 |
+
if cookies:
|
180 |
+
cookie_file = os.path.join(self.temp_dir, 'cookies.txt')
|
181 |
+
with open(cookie_file, 'w') as f:
|
182 |
+
f.write('# Netscape HTTP Cookie File\n')
|
183 |
+
for cookie in cookies:
|
184 |
+
f.write(f'.youtube.com\tTRUE\t/\tFALSE\t{cookie.expires}\t{cookie.name}\t{cookie.value}\n')
|
185 |
+
ydl_opts['cookiefile'] = cookie_file
|
186 |
+
|
187 |
if max_duration:
|
|
|
188 |
ydl_opts['match_filter'] = lambda info: None if info.get('duration', 0) <= 200000 else "Video too long"
|
189 |
|
190 |
try:
|