define upload endpoint
This commit is contained in:
parent
eec37ad4d9
commit
f45b76973b
2 changed files with 39 additions and 11 deletions
|
@ -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):
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue