diff --git a/server.py b/server.py index db3a856..0bf558b 100644 --- a/server.py +++ b/server.py @@ -6,46 +6,36 @@ import librosa from Utils import ProceesAudio import soundfile as sf import datetime +import boto3 from flask_jwt_extended import JWTManager, jwt_required, create_access_token, get_jwt_identity app = Flask(__name__) app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024 # 16 MB limit - -# Firebase configuration -# firebase_config = { -# "apiKey": "AIzaSyBqDZlqD7UOBvt2zsk9OLWKH1Lc3_f_VJM", -# "authDomain": "modifier-4088b.firebaseapp.com", -# "projectId": "modifier-4088b", -# "storageBucket": "modifier-4088b.appspot.com", -# "messagingSenderId": "237119475630", -# "appId": "1:237119475630:web:6c96c38c61285f5fcb823f", -# "measurementId": "G-6CWLQMT2Q3", -# "databaseURL": "https://modifier-4088b.firebaseio.com", -# } - -# firebase = pyrebase.initialize_app(firebase_config) -# storage = firebase.storage() +# AWS S3 Configuration +s3 = boto3.client('s3') +BUCKET_NAME = 'songsbucketparth' @app.route('/process_and_upload', methods=['POST']) +def upload_to_s3(processed_data, userId): + # Create an in-memory bytes buffer + buffer = io.BytesIO() -# def upload_to_firebase(processed_data, userId): -# # Create an in-memory bytes buffer -# buffer = io.BytesIO() + # Write processed data to the buffer as a WAV file + sf.write(buffer, processed_data, 44100, format='WAV') + buffer.seek(0) # Rewind the buffer -# # Write processed data to the buffer as a WAV file -# sf.write(buffer, processed_data, 44100, format='WAV') -# buffer.seek(0) # Rewind the buffer + # Generate a unique file name + timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S") + s3_key = f'uploads/processed_audio_{userId}_{timestamp}.wav' -# # Upload the buffer to Firebase Storage -# storage_path = f'uploads/processed_audio_{userId}.wav' -# storage.child(storage_path).put(buffer, f'processed_audio_{userId}.wav') + # Upload the buffer to AWS S3 + s3.upload_fileobj(buffer, BUCKET_NAME, s3_key, ExtraArgs={'ContentType': 'audio/wav'}) -# # Get the URL of the uploaded file -# file_url = storage.child(storage_path).get_url(None) - -# return file_url + # Generate the URL of the uploaded file + file_url = f'https://{BUCKET_NAME}.s3.amazonaws.com/{s3_key}' + return file_url def int16_to_float32(samples): return samples.astype(np.float32) / 32768.0 @@ -64,7 +54,7 @@ def process_audio_bytes(audio_bytes): pa = ProceesAudio() processed_data = pa.perform_modulation(data=data, sr=sample_rate, index=0) - # file_url = upload_to_firebase(processed_data=processed_data, userId="parth") + file_url = upload_to_s3(processed_data=processed_data, userId="parth") arr_to_show = [] acc_factor = int(len(processed_data)/150) @@ -75,7 +65,7 @@ def process_audio_bytes(audio_bytes): for i in range(len(arr_to_show)): arr_to_show[i] = float(arr_to_show[i]) - return jsonify({"file_url": "", "array": arr_to_show}) + return jsonify({"file_url": file_url, "array": arr_to_show}) @app.route('/modify', methods=['POST']) def modify():