Reconvertir app/ a carpeta normal, no submódulo
This commit is contained in:
87
app/main.py.bak
Normal file
87
app/main.py.bak
Normal file
@@ -0,0 +1,87 @@
|
||||
from flask import Flask, render_template, request, send_file
|
||||
import subprocess
|
||||
import os
|
||||
import uuid
|
||||
import shutil
|
||||
|
||||
app = Flask(__name__)
|
||||
BASE_DOWNLOADS_DIR = "downloads"
|
||||
|
||||
os.makedirs(BASE_DOWNLOADS_DIR, exist_ok=True)
|
||||
|
||||
@app.route("/", methods=["GET", "POST"])
|
||||
def index():
|
||||
if request.method == "POST":
|
||||
url = request.form.get("url")
|
||||
mode = request.form.get("mode") # 'audio' o 'video'
|
||||
download_type = request.form.get("type") # 'single' o 'playlist'
|
||||
|
||||
if not url:
|
||||
return render_template("index.html", error="URL obligatoria")
|
||||
|
||||
# Modo single o playlist
|
||||
if download_type == "single":
|
||||
unique_id = str(uuid.uuid4())
|
||||
filename_template = f"{unique_id}.%(ext)s"
|
||||
output_path = os.path.join(BASE_DOWNLOADS_DIR, filename_template)
|
||||
|
||||
cmd = ["yt-dlp", "-o", output_path]
|
||||
|
||||
if mode == "audio":
|
||||
cmd += ["-x", "--audio-format", "mp3"]
|
||||
|
||||
cmd.append(url)
|
||||
|
||||
try:
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
# Encuentra el archivo resultante
|
||||
downloaded_file = None
|
||||
for file in os.listdir(BASE_DOWNLOADS_DIR):
|
||||
if file.startswith(unique_id):
|
||||
downloaded_file = os.path.join(BASE_DOWNLOADS_DIR, file)
|
||||
break
|
||||
|
||||
if not downloaded_file:
|
||||
return render_template("index.html", error="No se encontró el archivo descargado.")
|
||||
|
||||
# Enviar al navegador y luego borrar
|
||||
return send_file(downloaded_file, as_attachment=True, download_name=os.path.basename(downloaded_file), mimetype='application/octet-stream')
|
||||
|
||||
except subprocess.CalledProcessError:
|
||||
return render_template("index.html", error="Error al descargar el archivo.")
|
||||
|
||||
elif download_type == "playlist":
|
||||
folder_id = str(uuid.uuid4())
|
||||
folder_path = os.path.join(BASE_DOWNLOADS_DIR, folder_id)
|
||||
os.makedirs(folder_path, exist_ok=True)
|
||||
|
||||
output_path = os.path.join(folder_path, "%(title)s.%(ext)s")
|
||||
cmd = ["yt-dlp", "-o", output_path]
|
||||
|
||||
if mode == "audio":
|
||||
cmd += ["-x", "--audio-format", "mp3"]
|
||||
|
||||
cmd.append(url)
|
||||
|
||||
try:
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
# Comprimir en ZIP
|
||||
zip_path = shutil.make_archive(folder_path, 'zip', folder_path)
|
||||
|
||||
# Enviar al navegador
|
||||
# return send_file(zip_path, as_attachment=True, download_name="descarga_playlist.zip", mimetype='application/zip')
|
||||
return send_file(zip_path, as_attachment=True, download_name="%(playlist_title).zip", mimetype='application/zip')
|
||||
|
||||
except subprocess.CalledProcessError:
|
||||
return render_template("index.html", error="Error al descargar la lista.")
|
||||
|
||||
else:
|
||||
return render_template("index.html", error="Tipo de descarga no válido.")
|
||||
|
||||
return render_template("index.html")
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=5000)
|
||||
|
||||
Reference in New Issue
Block a user