Intro_sound_trimmer/web/app.py
2024-08-03 20:29:08 +09:00

46 lines
1.4 KiB
Python

from flask import Flask, request, send_file, render_template
import os
from process_audio import process_mp3
from zipfile import ZipFile
import io
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'static/uploads'
if not os.path.exists(app.config['UPLOAD_FOLDER']):
os.makedirs(app.config['UPLOAD_FOLDER'])
@app.route('/')
def index():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def upload_file():
if 'files' not in request.files:
return "No file part"
files = request.files.getlist('files')
if not files:
return "No selected file"
processed_files = []
for file in files:
if file and file.filename.endswith('.mp3'):
filepath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
file.save(filepath)
processed_filepath = process_mp3(filepath)
processed_files.append(processed_filepath)
else:
return "Invalid file type"
# ZIPファイルの作成
zip_buffer = io.BytesIO()
with ZipFile(zip_buffer, 'w') as zip_file:
for processed_file in processed_files:
zip_file.write(processed_file, os.path.basename(processed_file))
zip_buffer.seek(0)
return send_file(zip_buffer, as_attachment=True, download_name='intro_files.zip', mimetype='application/zip')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')