arcanus commited on
Commit
f08c319
·
1 Parent(s): b42bbac

Aktualizace app.py a requirements.txt: přidány nové závislosti a úpravy aplikace

Browse files
Files changed (2) hide show
  1. app.py +76 -5
  2. requirements.txt +3 -1
app.py CHANGED
@@ -3,11 +3,13 @@ from functools import wraps
3
  from functools import update_wrapper
4
  import os
5
  from app_rvc2 import SoniTranslate, TTS_Info
6
- from madkoala.language_configuration import LANGUAGES_LIST, LANGUAGES, LANGUAGES_UNIDIRECTIONAL
7
  import yt_dlp
8
  from datetime import datetime
9
  import re
10
  import shutil
 
 
11
 
12
  app = Flask(__name__)
13
  app.secret_key = 'koala123' # Změňte na bezpečné heslo
@@ -15,6 +17,11 @@ app.secret_key = 'koala123' # Změňte na bezpečné heslo
15
  # Heslo pro přístup k aplikaci
16
  APP_PASSWORD = 'koala123' # Změňte na požadované heslo
17
 
 
 
 
 
 
18
  # Middleware pro kontrolu přihlášení
19
  def login_required(f):
20
  @wraps(f)
@@ -109,7 +116,7 @@ def translate():
109
  url = data['url'].strip()
110
  if 'youtube.com' in url or 'youtu.be' in url:
111
  try:
112
- media_file, thumbnail_url = download_youtube_video(url, project_path)
113
  # Copy downloaded file to video.mp4
114
  final_path = os.path.join(project_path, "video.mp4")
115
  shutil.copy(media_file, final_path)
@@ -207,7 +214,56 @@ def translate():
207
  os.remove(subtitle_file)
208
  return jsonify({'success': False, 'error': str(e)})
209
 
210
- def download_youtube_video(url, project_path):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  if not url:
212
  raise Exception("No URL provided")
213
 
@@ -220,6 +276,9 @@ def download_youtube_video(url, project_path):
220
  print(f"Starting download for URL: {url}")
221
  print(f"Output path: {output_path}")
222
 
 
 
 
223
  ydl_opts = {
224
  'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
225
  'outtmpl': output_path,
@@ -227,9 +286,20 @@ def download_youtube_video(url, project_path):
227
  'quiet': False,
228
  'no_warnings': False,
229
  'extract_flat': False,
230
- 'verbose': True
 
231
  }
232
 
 
 
 
 
 
 
 
 
 
 
233
  try:
234
  with yt_dlp.YoutubeDL(ydl_opts) as ydl:
235
  info = ydl.extract_info(url, download=False)
@@ -249,11 +319,12 @@ def download_yt():
249
  return jsonify({'success': False, 'error': 'URL není zadána'})
250
 
251
  print(f"Received download request for URL: {url}")
 
252
 
253
  if any(x in url.lower() for x in ['youtube.com', 'youtu.be']):
254
  os.makedirs('uploads', exist_ok=True)
255
  try:
256
- file_path, thumbnail_url = download_youtube_video(url, 'uploads')
257
  if os.path.exists(file_path):
258
  return jsonify({
259
  'success': True,
 
3
  from functools import update_wrapper
4
  import os
5
  from app_rvc2 import SoniTranslate, TTS_Info
6
+ from soni_translate.language_configuration import LANGUAGES_LIST, LANGUAGES, LANGUAGES_UNIDIRECTIONAL
7
  import yt_dlp
8
  from datetime import datetime
9
  import re
10
  import shutil
11
+ import browser_cookie3
12
+ import tempfile
13
 
14
  app = Flask(__name__)
15
  app.secret_key = 'koala123' # Změňte na bezpečné heslo
 
17
  # Heslo pro přístup k aplikaci
18
  APP_PASSWORD = 'koala123' # Změňte na požadované heslo
19
 
20
+ # Konstanty pro proxy nastavení
21
+ PROXY_URL = "isp2.hydraproxy.com:9989" # Změňte na vaši proxy
22
+ PROXY_USER = "rede22760tmed213931" # Změňte na vaše uživatelské jméno
23
+ PROXY_PASS = "ZICG4FsdoVXtZIsz_country-Czechia" # Změňte na vaše heslo
24
+
25
  # Middleware pro kontrolu přihlášení
26
  def login_required(f):
27
  @wraps(f)
 
116
  url = data['url'].strip()
117
  if 'youtube.com' in url or 'youtu.be' in url:
118
  try:
119
+ media_file, thumbnail_url = download_youtube_video(url, project_path ) #PROXY_URL, PROXY_USER, PROXY_PASS
120
  # Copy downloaded file to video.mp4
121
  final_path = os.path.join(project_path, "video.mp4")
122
  shutil.copy(media_file, final_path)
 
214
  os.remove(subtitle_file)
215
  return jsonify({'success': False, 'error': str(e)})
216
 
217
+ def get_youtube_cookies():
218
+ try:
219
+ # Vytvoříme dočasný soubor pro cookies
220
+ cookie_file = tempfile.mktemp()
221
+
222
+ # Získáme cookies z prohlížečů
223
+ cookies = []
224
+ try:
225
+ cookies.extend(list(browser_cookie3.chrome(domain_name='.youtube.com')))
226
+ except:
227
+ print("Nepodařilo se získat cookies z Chrome")
228
+
229
+ try:
230
+ cookies.extend(list(browser_cookie3.firefox(domain_name='.youtube.com')))
231
+ except:
232
+ print("Nepodařilo se získat cookies z Firefox")
233
+
234
+ try:
235
+ cookies.extend(list(browser_cookie3.edge(domain_name='.youtube.com')))
236
+ except:
237
+ print("Nepodařilo se získat cookies z Edge")
238
+
239
+ if not cookies:
240
+ print("Nebyly nalezeny žádné cookies")
241
+ return None
242
+
243
+ # Zapíšeme cookies do souboru ve formátu Netscape
244
+ with open(cookie_file, 'w', encoding='utf-8') as f:
245
+ f.write("# Netscape HTTP Cookie File\n")
246
+ f.write("# https://curl.haxx.se/rfc/cookie_spec.html\n")
247
+ f.write("# This is a generated file! Do not edit.\n\n")
248
+
249
+ for cookie in cookies:
250
+ secure = "TRUE" if cookie.secure else "FALSE"
251
+ domain = cookie.domain if cookie.domain.startswith('.') else '.' + cookie.domain
252
+ path = cookie.path or "/"
253
+ expires = int(cookie.expires) if cookie.expires else 0
254
+ name = cookie.name
255
+ value = cookie.value
256
+
257
+ # Formát: domain\tdomain_specified\tpath\tsecure\texpiry\tname\tvalue
258
+ f.write(f"{domain}\tTRUE\t{path}\t{secure}\t{expires}\t{name}\t{value}\n")
259
+
260
+ print(f"Cookies byly úspěšně uloženy do: {cookie_file}")
261
+ return cookie_file
262
+ except Exception as e:
263
+ print(f"Chyba při získávání cookies: {str(e)}")
264
+ return None
265
+
266
+ def download_youtube_video(url, project_path, proxy=None, proxy_user=None, proxy_pass=None):
267
  if not url:
268
  raise Exception("No URL provided")
269
 
 
276
  print(f"Starting download for URL: {url}")
277
  print(f"Output path: {output_path}")
278
 
279
+ # Získáme cookies z prohlížeče
280
+ cookie_file = get_youtube_cookies()
281
+
282
  ydl_opts = {
283
  'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
284
  'outtmpl': output_path,
 
286
  'quiet': False,
287
  'no_warnings': False,
288
  'extract_flat': False,
289
+ 'verbose': True,
290
+ 'cookiefile': cookie_file
291
  }
292
 
293
+ #if proxy:
294
+ # Pokud jsou zadány přihlašovací údaje, přidáme je do URL proxy
295
+ # if proxy_user and proxy_pass:
296
+ # proxy_with_auth = proxy.replace('://', f'://{proxy_user}:{proxy_pass}@')
297
+ # ydl_opts['proxy'] = proxy_with_auth
298
+ # print(f"Using proxy with authentication: {proxy}")
299
+ # else:
300
+ # ydl_opts['proxy'] = proxy
301
+ # print(f"Using proxy: {proxy}")
302
+
303
  try:
304
  with yt_dlp.YoutubeDL(ydl_opts) as ydl:
305
  info = ydl.extract_info(url, download=False)
 
319
  return jsonify({'success': False, 'error': 'URL není zadána'})
320
 
321
  print(f"Received download request for URL: {url}")
322
+ #print(f"Using proxy: {PROXY_URL}")
323
 
324
  if any(x in url.lower() for x in ['youtube.com', 'youtu.be']):
325
  os.makedirs('uploads', exist_ok=True)
326
  try:
327
+ file_path, thumbnail_url = download_youtube_video(url, 'uploads') #, PROXY_URL, PROXY_USER, PROXY_PASS
328
  if os.path.exists(file_path):
329
  return jsonify({
330
  'success': True,
requirements.txt CHANGED
@@ -18,4 +18,6 @@ openai==1.14.3
18
  tiktoken==0.6.0
19
  # Documents
20
  pypdf==4.2.0
21
- python-docx
 
 
 
18
  tiktoken==0.6.0
19
  # Documents
20
  pypdf==4.2.0
21
+ python-docx
22
+ coqui-tts
23
+ browser-cookie3