46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
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("/<path:path>")
|
|
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)
|