python service http refactor start

This commit is contained in:
michalcourson
2026-02-14 11:24:09 -05:00
parent 5516ce9212
commit f3b883602e
27 changed files with 415 additions and 205 deletions

View File

@ -0,0 +1,37 @@
from flask import Blueprint, request, jsonify
from windows_audio import WindowsAudioManager
from audio_recorder import AudioRecorder
device_bp = Blueprint('device', __name__)
audio_manager = WindowsAudioManager()
recorder = AudioRecorder()
# @device_bp.route('/device/set', methods=['POST'])
# def set_audio_device():
# device_index = request.json.get('device_index')
# try:
# device_index = int(device_index)
# print(f'HTTP: Setting audio device to index {device_index}')
# sample_rate = audio_manager.set_default_input_device(device_index)
# recorder.sample_rate = sample_rate
# return jsonify({'status': 'device set', 'device_index': device_index, 'sample_rate': sample_rate})
# except Exception as e:
# return jsonify({'status': 'error', 'message': str(e)}), 400
@device_bp.route('/device/get', methods=['GET'])
def get_audio_device():
try:
device_info = audio_manager.get_default_device('input')
return jsonify({'status': 'success', 'device_info': device_info})
except Exception as e:
return jsonify({'status': 'error', 'message': str(e)}), 400
@device_bp.route('/device/list', methods=['GET'])
def list_audio_devices():
device_type = request.args.get('device_type', 'input')
try:
devices = audio_manager.list_audio_devices(device_type)
return jsonify({'status': 'success', 'devices': devices})
except Exception as e:
return jsonify({'status': 'error', 'message': str(e)}), 400

View File

@ -0,0 +1,43 @@
from flask import Blueprint, request, jsonify
from metadata_manager import MetaDataManager
metadata_bp = Blueprint('metadata', __name__)
@metadata_bp.route('/meta/collections', methods=['GET'])
def get_collections():
meta_manager = MetaDataManager()
collections = meta_manager.get_collections()
return jsonify({'status': 'success', 'collections': collections})
@metadata_bp.route('/meta/collections/add', methods=['POST'])
def add_collection():
meta_manager = MetaDataManager()
collection_name = request.json.get('name')
try:
meta_manager.create_collection(collection_name)
return jsonify({'status': 'success', 'collection': collection_name})
except ValueError as e:
return jsonify({'status': 'error', 'message': str(e)}), 400
@metadata_bp.route('/meta/collection/clips', methods=['GET'])
def get_clips_in_collection():
meta_manager = MetaDataManager()
collection_name = request.args.get('name')
try:
clips = meta_manager.get_clips_in_collection(collection_name)
return jsonify({'status': 'success', 'clips': clips})
except ValueError as e:
return jsonify({'status': 'error', 'message': str(e)}), 400
@metadata_bp.route('/meta/collection/clips/add', methods=['POST'])
def add_clip_to_collection():
meta_manager = MetaDataManager()
collection_name = request.json.get('name')
clip_metadata = request.json.get('clip')
try:
meta_manager.add_clip_to_collection(collection_name, clip_metadata)
clips = meta_manager.get_clips_in_collection(collection_name)
return jsonify({'status': 'success', 'clips': clips})
except ValueError as e:
return jsonify({'status': 'error', 'message': str(e)}), 400

View File

@ -0,0 +1,34 @@
from flask import Blueprint, request, jsonify
from audio_recorder import AudioRecorder
recording_bp = Blueprint('recording', __name__)
@recording_bp.route('/record/start', methods=['POST'])
def start_recording():
recorder = AudioRecorder()
print('HTTP: Starting audio recording')
recorder.start_recording()
return jsonify({'status': 'recording started'})
@recording_bp.route('/record/stop', methods=['POST'])
def stop_recording():
recorder = AudioRecorder()
print('HTTP: Stopping audio recording')
recorder.stop_recording()
return jsonify({'status': 'recording stopped'})
@recording_bp.route('/record/save', methods=['POST'])
def save_recording():
recorder = AudioRecorder()
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 = AudioRecorder()
print('HTTP: Checking recording status')
status = 'recording' if recorder.is_recording() else 'stopped'
return jsonify({'status': status})

View File

@ -0,0 +1,25 @@
from flask import Blueprint, request, jsonify
from settings import SettingsManager
settings_bp = Blueprint('settings', __name__)
@settings_bp.route('/settings', methods=['GET'])
def get_all_settings():
return jsonify({'status': 'success', 'settings': SettingsManager().get_all_settings()})
@settings_bp.route('/settings/<name>', methods=['GET'])
def get_setting(name):
value = SettingsManager().get_settings(name)
if value is not None:
return jsonify({'status': 'success', 'name': name, 'value': value})
else:
return jsonify({'status': 'error', 'message': f'Setting "{name}" not found'}), 404
@settings_bp.route('/settings/<name>', methods=['POST'])
def set_setting(name):
value = request.json.get('value')
if value is None:
return jsonify({'status': 'error', 'message': 'Value is required'}), 400
SettingsManager().set_settings(name, value)
return jsonify({'status': 'success', 'name': name, 'value': value})