define upload endpoint

This commit is contained in:
root 2025-05-17 23:17:37 +00:00
parent eec37ad4d9
commit f45b76973b
2 changed files with 39 additions and 11 deletions

View file

@ -9,23 +9,16 @@ import requests
from datetime import datetime from datetime import datetime
from flask import Flask, render_template, jsonify, request, abort from flask import Flask, render_template, jsonify, request, abort
from flask.helpers import send_file, send_from_directory from flask.helpers import send_file, send_from_directory
from werkzeug.utils import secure_filename
from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.schedulers.background import BackgroundScheduler
from core_client import Client from core_client import Client
app = Flask(__name__) app = Flask(__name__)
scheduler = BackgroundScheduler() scheduler = BackgroundScheduler()
# Log handlers
logger_api = logging.getLogger('waitress')
logger_job = logging.getLogger('apscheduler')
logger_content = logging.getLogger('content')
log_level = os.environ.get('SCHEDULER_LOG_LEVEL', 'INFO').upper()
logger_api.setLevel(log_level)
logger_job.setLevel(log_level)
logger_content = logging.getLogger('content')
# Variables # Variables
log_level = os.environ.get('FLASKAPI_LOG_LEVEL', 'INFO').upper()
vod_token = os.environ.get('FLASKAPI_VOD_TOKEN')
core_hostname = os.environ.get('CORE_API_HOSTNAME', 'stream.example.com') core_hostname = os.environ.get('CORE_API_HOSTNAME', 'stream.example.com')
core_username = os.environ.get('CORE_API_AUTH_USERNAME', 'admin') core_username = os.environ.get('CORE_API_AUTH_USERNAME', 'admin')
core_password = os.environ.get('CORE_API_AUTH_PASSWORD', 'pass') core_password = os.environ.get('CORE_API_AUTH_PASSWORD', 'pass')
@ -34,6 +27,15 @@ core_sync_period = int(os.environ.get('CORE_SYNC_PERIOD', 15))
rec_path = "/recordings" rec_path = "/recordings"
enable_delay = 24 enable_delay = 24
# Log handlers
logger_api = logging.getLogger('waitress')
logger_job = logging.getLogger('apscheduler')
logger_content = logging.getLogger('content')
logger_api.setLevel(log_level)
logger_job.setLevel(log_level)
logger_content = logging.getLogger('content')
# Init # Init
database = {} database = {}
playhead = {} playhead = {}
@ -272,6 +274,28 @@ def thumb_route(thumb_file):
logger_content.warning('[' + client_address(request) + '] thumb' + str(thumb_path)) logger_content.warning('[' + client_address(request) + '] thumb' + str(thumb_path))
return send_file(thumb_path, mimetype='image/png') return send_file(thumb_path, mimetype='image/png')
# Video uploader
@app.route('/video', methods=['POST'])
def video_upload():
token = request.headers.get("Authorization")
if token != "Bearer " + str(vod_token):
return "Unauthorized", 401
upload_path = f'{rec_path}/vod/'
if not os.path.exists(upload_path):
abort(404)
# Streaming chunks
#file = request.files['file']
#if file:
# with open('large_file.txt', 'wb') as f:
# for chunk in file.stream:
# f.write(chunk)
# return 'File uploaded successfully'
#return 'No file provided', 400
file = request.files['file']
filename = secure_filename(file.filename)
file.save(os.path.join(upload_path, filename))
return "File uploaded successfully"
# Video streamer # Video streamer
@app.route("/video/<video_file>", methods=['GET']) @app.route("/video/<video_file>", methods=['GET'])
def video_route(video_file): def video_route(video_file):

View file

@ -1,14 +1,18 @@
BASE_URL=example.com BASE_URL=example.com
EMAIL=info@example.com EMAIL=info@example.com
ACCOUNT_THUMBPRINT=CHANGE_ME ACCOUNT_THUMBPRINT=CHANGE_ME
CORE_LOG_LEVEL=warn CORE_LOG_LEVEL=warn
CORE_API_HOSTNAME=stream.example.com CORE_API_HOSTNAME=stream.example.com
CORE_API_AUTH_USERNAME=admin CORE_API_AUTH_USERNAME=admin
CORE_API_AUTH_PASSWORD=CHANGE_ME CORE_API_AUTH_PASSWORD=CHANGE_ME
SCHEDULER_LOG_LEVEL=warn FLASKAPI_LOG_LEVEL=warn
FLASKAPI_VOD_TOKEN=CHANGE_ME
DISCORDBOT_TOKEN=CHANGE_ME DISCORDBOT_TOKEN=CHANGE_ME
DISCORDBOT_LIVE_CHANNEL_ID=CHANGE_ME DISCORDBOT_LIVE_CHANNEL_ID=CHANGE_ME
DISCORDBOT_LIVE_CHANNEL_UPDATE=1440 DISCORDBOT_LIVE_CHANNEL_UPDATE=1440
ICECAST_SOURCE_PASSWORD=CHANGE_ME ICECAST_SOURCE_PASSWORD=CHANGE_ME
ICECAST_ADMIN_PASSWORD=CHANGE_ME ICECAST_ADMIN_PASSWORD=CHANGE_ME
ICECAST_RELAY_PASSWORD=CHANGE_ME ICECAST_RELAY_PASSWORD=CHANGE_ME