import os import subprocess from flask import Flask, send_file app = Flask(__name__) def find_file_by_part_name(directory, part_name): record_file = { "wav": None, "mp3": None, } for root, dirs, files in os.walk(directory): for file_name in files: if part_name in file_name: if file_name.lower().endswith(".mp3"): record_file["mp3"] = os.path.join(root, file_name) break if file_name.lower().endswith(".wav"): record_file["wav"] = os.path.join(root, file_name) if record_file["mp3"]: return record_file["mp3"] if record_file["wav"]: record_file["mp3"] = record_file["wav"][:-3] + "mp3" with open(os.devnull, "w") as devnull: subprocess.call( ["ffmpeg", "-i", record_file["wav"], record_file["mp3"]], stdout=devnull, stderr=devnull, ) return record_file["mp3"] return None @app.route("/") def get_file(path): dir = "/var/spool/asterisk/monitor" file_path = find_file_by_part_name(dir, path) if file_path is not None: return send_file(file_path, mimetype="audio/mpeg") return "", 404 if __name__ == "__main__": app.run(host="0.0.0.0", port=3050)