diff --git a/sorter.py b/sorter.py index 0a551cce0646ffccf6ccdad97ef96b67d61c405d..f7f6616bcd1bff99b083939d2aef777560067556 100644 --- a/sorter.py +++ b/sorter.py @@ -39,49 +39,39 @@ def update_video_metadata(jobid, jobtype, data, state, status): modify('UPDATE videos_data SET hash = ?, file_size = ?, duration = ? WHERE id = ?', status['hash'], status['filesize'], status['duration'], data['video_id']) -def insert_video(lectureid, dbfilepath, fileformatid, hash="", filesize=-1, duration=-1): +@app.route('/internal/jobs/add/thumbnail', methods=['GET', 'POST']) +@mod_required +@csrf_protect +@handle_errors('jobs_overview', 'Zu dieser Veranstaltung existieren keine Videos!', 404, IndexError) +def add_thumbnail_job(): + schedule_thumbnail(request.values['lectureid']) + return redirect(request.values.get('ref', url_for('jobs_overview'))) + +def insert_video(lectureid, dbfilepath, fileformatid, hash="", filesize=-1, duration=-1, sourceid=None): visible = query('SELECT courses.autovisible FROM courses JOIN lectures ON lectures.course_id = courses.id WHERE lectures.id = ?', lectureid)[0]['autovisible'] video_id = modify('''INSERT INTO videos_data - (lecture_id, visible, path, video_format, title, comment, internal, file_modified, time_created, time_updated, created_by, hash, file_size, duration) + (lecture_id, visible, path, video_format, title, comment, internal, file_modified, time_created, time_updated, created_by, hash, file_size, duration, source) VALUES (?, ?, ?, ?, "", "", "", ?, ?, ?, ?, ?, ?, ?)''', - lectureid, visible, dbfilepath, fileformatid, datetime.now(), datetime.now(), datetime.now(), -1, hash, filesize, duration) - query('INSERT INTO sortlog (lecture_id,video_id,path,`when`) VALUES (?,?,?,?)', lectureid, video_id, dbfilepath, datetime.now()) + lectureid, visible, dbfilepath, fileformatid, datetime.now(), datetime.now(), datetime.now(), -1, hash, filesize, duration, source) + if sourceid: + schedule_remux(lectureid, video_id) + else: + query('INSERT INTO sortlog (lecture_id,video_id,path,`when`) VALUES (?,?,?,?)', lectureid, video_id, dbfilepath, datetime.now()) + schedule_job('probe', {'path': dbfilepath, 'lecture_id': lectureid, 'video_id': video_id, 'import-chapters': True}) schedule_thumbnail(lectureid) - schedule_job('probe', {'path': dbfilepath, 'lecture_id': lectureid, 'video_id': video_id, 'import-chapters': True}) video = query('SELECT videos.*, "format" AS sep, formats.* FROM videos JOIN formats ON formats.id = videos.video_format WHERE videos.id = ?', video_id)[0] lecture = query('SELECT * FROM lectures WHERE id = ?', lectureid)[0] course = query('SELECT * FROM courses WHERE id = ?', lecture['course_id'])[0] notify_mods('new_video', course['id'], course=course, lecture=lecture, video=video) -@app.route('/internal/jobs/add/thumbnail', methods=['GET', 'POST']) -@mod_required -@csrf_protect -@handle_errors('jobs_overview', 'Zu dieser Veranstaltung existieren keine Videos!', 404, IndexError) -def add_thumbnail_job(): - schedule_thumbnail(request.values['lectureid']) - return redirect(request.values.get('ref', url_for('jobs_overview'))) - @job_handler('transcode') def insert_transcoded_video(jobid, jobtype, data, state, status): if 'lecture_id' not in data or 'source_id' not in data or 'format_id' not in data: return if 'video_id' in data: return - visible = query('SELECT courses.autovisible FROM courses JOIN lectures ON lectures.course_id = courses.id WHERE lectures.id = ?', data['lecture_id'])[0]['autovisible'] - video_id = modify('''INSERT INTO videos_data - (lecture_id, visible, path, video_format, title, comment, internal, file_modified, time_created, time_updated, created_by, hash, file_size, source, duration) - VALUES - (?, ?, ?, ?, "", "", "", ?, ?, ?, ?, ?, ?, ?, ?)''', - data['lecture_id'], visible, data['output']['path'], data['format_id'], - datetime.now(), datetime.now(), datetime.now(), -1, status['hash'], - status['filesize'], data['source_id'], status['duration']) - schedule_remux(data['lecture_id'], video_id) - schedule_thumbnail(data['lecture_id']) - video = query('SELECT videos.*, "format" AS sep, formats.* FROM videos JOIN formats ON formats.id = videos.video_format WHERE videos.id = ?', video_id)[0] - lecture = query('SELECT * FROM lectures WHERE id = ?', data['lecture_id'])[0] - course = query('SELECT * FROM courses WHERE id = ?', lecture['course_id'])[0] - notify_mods('new_video', course['id'], course=course, lecture=lecture, video=video) + insert_video(data['lecture_id'], data['output']['path'], data['format_id'], status['hash'], status['filesize'], status['duration'], data['source_id'] ) def sort_file(filename, course=None, lectures=None): # filenames: <handle>-<sorter>-<format>.mp4