|
from flask import Flask, render_template, request, send_from_directory |
|
from spleeter.separator import Separator |
|
import os |
|
from werkzeug.utils import secure_filename |
|
|
|
app = Flask(__name__) |
|
UPLOAD_FOLDER = 'uploads' |
|
OUTPUT_FOLDER = 'output' |
|
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER |
|
app.config['OUTPUT_FOLDER'] = OUTPUT_FOLDER |
|
|
|
|
|
os.makedirs(UPLOAD_FOLDER, exist_ok=True) |
|
os.makedirs(OUTPUT_FOLDER, exist_ok=True) |
|
|
|
@app.route('/', methods=['GET', 'POST']) |
|
def index(): |
|
if request.method == 'POST': |
|
if 'audiofile' not in request.files: |
|
return render_template('index.html', error='Nenhum arquivo enviado.') |
|
file = request.files['audiofile'] |
|
if file.filename == '': |
|
return render_template('index.html', error='Nenhum arquivo selecionado.') |
|
if file: |
|
filename = secure_filename(file.filename) |
|
filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) |
|
file.save(filepath) |
|
|
|
|
|
output_path = os.path.join(app.config['OUTPUT_FOLDER'], os.path.splitext(filename)[0]) |
|
|
|
separator = Separator('spleeter:2stems') |
|
separator.separate_to_file(filepath, app.config['OUTPUT_FOLDER']) |
|
|
|
|
|
output_foldername = os.path.splitext(filename)[0] |
|
|
|
return render_template('index.html', |
|
vocals_path=f'{output_foldername}/vocals.wav', |
|
accompaniment_path=f'{output_foldername}/accompaniment.wav') |
|
return render_template('index.html') |
|
|
|
@app.route('/download/<path:filename>') |
|
def download_file(filename): |
|
return send_from_directory(app.config['OUTPUT_FOLDER'], filename, as_attachment=True) |
|
|
|
if __name__ == '__main__': |
|
app.run(debug=True) |