from flask import Flask, render_template, request, jsonify import os import json from mediascan import list_media_files, filter_media_files, human_readable_size, get_media_info_with_ffprobe app = Flask(__name__) # Load configuration CONFIG_FILE = 'config.json' def load_config(): if os.path.exists(CONFIG_FILE): with open(CONFIG_FILE, 'r') as f: return json.load(f) else: return {"directories": []} def save_config(config): with open(CONFIG_FILE, 'w') as f: json.dump(config, f, indent=4) config = load_config() @app.route('/') def index(): return render_template('index.html') @app.route('/media-list', methods=['GET']) def media_list(): media_files = list_media_files(config.get("directories", [])) allowed_formats = config.get("allowed_formats", []) filtered_files = filter_media_files(media_files, allowed_formats) # Add detailed media info for file in filtered_files: file["size"], file["size_unit"] = human_readable_size(file["size"]) file_info = get_media_info_with_ffprobe(file["path"]) if file_info: file["info"] = file_info else: file["info"] = {"error": "Failed to retrieve media info"} return jsonify(filtered_files) @app.route('/configure', methods=['GET', 'POST']) def configure(): if request.method == 'POST': directories = request.json.get('directories', []) allowed_formats = request.json.get('allowed_formats', []) config['directories'] = directories config['allowed_formats'] = allowed_formats save_config(config) return jsonify({"status": "success"}) return jsonify(config) if __name__ == '__main__': app.run(debug=True)