Add local dashcam video library
Co-authored-by: Copilot <[email protected]>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from flask import Flask, render_template, make_response, json, jsonify, request
|
||||
from modules import app_gps, app_events, app_car, app_account, app_gps,app_obd, app_sql, app_dash, app_upload
|
||||
import time
|
||||
from flask import Flask, render_template, make_response, json, jsonify, request, send_file
|
||||
from modules import app_gps, app_events, app_car, app_account, app_gps,app_obd, app_sql, app_dash, app_upload, app_video
|
||||
import os, time
|
||||
from gevent.pywsgi import WSGIServer
|
||||
|
||||
|
||||
@@ -75,6 +75,52 @@ def dash_delete_file():
|
||||
}
|
||||
return jsonify(summary), status_codes.get(summary["status"], 409)
|
||||
|
||||
@app.route('/api/local-videos')
|
||||
def local_videos():
|
||||
return jsonify(app_video.list_local_videos())
|
||||
|
||||
@app.route('/api/local-video/file')
|
||||
def local_video_file():
|
||||
relative_path = request.args.get("path", "")
|
||||
try:
|
||||
path = app_video.get_local_video_path(relative_path)
|
||||
except ValueError as error:
|
||||
return jsonify(error=str(error)), 400
|
||||
except FileNotFoundError:
|
||||
return jsonify(error=f"Local video not found: {relative_path}"), 404
|
||||
return send_file(
|
||||
path,
|
||||
conditional=True,
|
||||
as_attachment=False,
|
||||
download_name=os.path.basename(path),
|
||||
)
|
||||
|
||||
@app.route('/api/local-video/thumbnail')
|
||||
def local_video_thumbnail():
|
||||
relative_path = request.args.get("path", "")
|
||||
try:
|
||||
path = app_video.get_thumbnail_path(relative_path)
|
||||
except ValueError as error:
|
||||
return jsonify(error=str(error)), 400
|
||||
except FileNotFoundError:
|
||||
return jsonify(error=f"Local video not found: {relative_path}"), 404
|
||||
except RuntimeError as error:
|
||||
return jsonify(error=str(error)), 422
|
||||
return send_file(path, conditional=True, mimetype="image/jpeg")
|
||||
|
||||
@app.route('/api/local-video', methods=['DELETE'])
|
||||
def local_video_delete():
|
||||
body = request.get_json(silent=True) or {}
|
||||
summary = app_video.delete_local_video(body.get("path"))
|
||||
status_codes = {
|
||||
"ok": 200,
|
||||
"invalid_path": 400,
|
||||
"not_found": 404,
|
||||
"busy": 409,
|
||||
"delete_failed": 409,
|
||||
}
|
||||
return jsonify(summary), status_codes.get(summary["status"], 409)
|
||||
|
||||
@app.route('/api/upload/status')
|
||||
def upload_status():
|
||||
return jsonify(app_upload.get_status())
|
||||
|
||||
Reference in New Issue
Block a user