57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
|
|
from flask import Blueprint, request, jsonify
|
|
from audio_io import AudioIO
|
|
import os
|
|
|
|
recording_bp = Blueprint('recording', __name__)
|
|
|
|
@recording_bp.route('/record/start', methods=['POST'])
|
|
def start_recording():
|
|
recorder = AudioIO()
|
|
print('HTTP: Starting audio recording')
|
|
recorder.start_recording()
|
|
return jsonify({'status': 'recording started'})
|
|
|
|
@recording_bp.route('/record/stop', methods=['POST'])
|
|
def stop_recording():
|
|
recorder = AudioIO()
|
|
# print('HTTP: Stopping audio recording')
|
|
recorder.stop_recording()
|
|
return jsonify({'status': 'recording stopped'})
|
|
|
|
@recording_bp.route('/record/save', methods=['POST'])
|
|
def save_recording():
|
|
recorder = AudioIO()
|
|
# print('HTTP: Saving audio recording')
|
|
saved_file = recorder.save_last_n_seconds()
|
|
return jsonify({'status': 'recording saved', 'file': saved_file})
|
|
|
|
|
|
@recording_bp.route('/record/status', methods=['GET'])
|
|
def recording_status():
|
|
recorder = AudioIO()
|
|
# print('HTTP: Checking recording status')
|
|
status = 'recording' if recorder.is_recording() else 'stopped'
|
|
return jsonify({'status': status})
|
|
|
|
@recording_bp.route('/record/delete', methods=['POST'])
|
|
def recording_delete():
|
|
filename = request.json.get('filename')
|
|
try:
|
|
os.remove(filename)
|
|
return jsonify({'status': 'success'})
|
|
except Exception as e:
|
|
return jsonify({'status': 'error', 'message': str(e)}), 400
|
|
|
|
@recording_bp.route('/playback/start', methods=['POST'])
|
|
def playback_start():
|
|
print(f"Playing clip")
|
|
# print('HTTP: Starting audio playback')
|
|
clip = request.json
|
|
try:
|
|
io = AudioIO()
|
|
io.play_clip(clip)
|
|
# os.remove(filename)
|
|
return jsonify({'status': 'success'})
|
|
except Exception as e:
|
|
return jsonify({'status': 'error', 'message': str(e)}), 400 |