From 1d152578a1df817d0286a6418d4cabbc03e9f953 Mon Sep 17 00:00:00 2001 From: Julian Rother <julianr@fsmpi.rwth-aachen.de> Date: Thu, 30 Nov 2017 19:17:35 +0100 Subject: [PATCH] Implemented xmp-chapter extraction --- encoding.py | 31 +++++++++++++++++++++++++++++++ server.py | 1 + sorter.py | 1 + 3 files changed, 33 insertions(+) create mode 100644 encoding.py diff --git a/encoding.py b/encoding.py new file mode 100644 index 0000000..6a233f6 --- /dev/null +++ b/encoding.py @@ -0,0 +1,31 @@ +from server import * + +@job_handler('probe', 'probe-raw') +def import_xmp_chapters(jobid, jobtype, data, state, status): + if 'lecture_id' not in data and data.get('import-chapters', False): + return + times = set() + # Only add new chapters, deleted chapters are taken into account here + for chapter in query('SELECT * FROM chapters WHERE lecture_id = ?', data['lecture_id']): + for offset in range(5): + times.add(chapter['time']-offset) + times.add(chapter['time']+offset) + for chapter in status.get('xmp_chapters', []): + if int(chapter['time']) in times: + continue + modify('INSERT INTO chapters (lecture_id, time, text, visible, time_created, time_updated) VALUES (?, ?, ?, 0, ?, ?)', + data['lecture_id'], int(chapter['time']), chapter['text'], + datetime.now(), datetime.now()) + +@job_handler('probe', 'remux', 'transcode') +def update_video_metadata(jobid, jobtype, data, state, status): + if 'video_id' not in data: + return + if jobtype not in ['remux', 'transcode']: + video = query('SELECT * FROM videos WHERE id = ?', data['video_id'])[0] + if video['hash'] and video['hash'] != status['hash']: + print('Hash mismatch for video', data['video_id']) + return + modify('UPDATE videos_data SET hash = ?, file_size = ? WHERE id = ?', + status['hash'], status['filesize'], data['video_id']) + diff --git a/server.py b/server.py index e3f0acc..787442a 100644 --- a/server.py +++ b/server.py @@ -470,6 +470,7 @@ if 'ICAL_URL' in config: import meetings import l2pauth from jobs import job_handler, schedule_job +import encoding import timetable import chapters import icalexport diff --git a/sorter.py b/sorter.py index c880aba..88ea9f4 100644 --- a/sorter.py +++ b/sorter.py @@ -34,6 +34,7 @@ def insert_video(lectureid,dbfilepath,filepath,fileformatid): lectureid, dbfilepath, fileformatid, datetime.now(), datetime.now(), datetime.now(), -1, os.stat(filepath).st_size) query('INSERT INTO sortlog (lecture_id,video_id,path,`when`) VALUES (?,?,?,?)', lectureid, video_id, dbfilepath, datetime.now()) schedule_thumbnail(lectureid) + schedule_job('probe', {'path': dbfilepath, 'lecture_id': lectureid, 'import-chapters': True}) def schedule_thumbnail(lectureid, filePath=None): videos = query(''' -- GitLab