From 35b7e9f78a1b3d163efd906b0f464ee991ce72ec Mon Sep 17 00:00:00 2001 From: Julian Rother <julianr@fsmpi.rwth-aachen.de> Date: Thu, 30 Nov 2017 19:26:16 +0100 Subject: [PATCH] Implementet metadata remuxing --- encoding.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/encoding.py b/encoding.py index 6a233f6..562c1c2 100644 --- a/encoding.py +++ b/encoding.py @@ -29,3 +29,43 @@ def update_video_metadata(jobid, jobtype, data, state, status): modify('UPDATE videos_data SET hash = ?, file_size = ? WHERE id = ?', status['hash'], status['filesize'], data['video_id']) +def schedule_remux(lectureid): + lecture = query('SELECT * FROM lectures WHERE id = ?', lectureid)[0] + course = query('SELECT * FROM courses WHERE id = ?', lecture['course_id'])[0] + chapters = query('SELECT text, time FROM chapters WHERE lecture_id = ?', lectureid) + videos = query('SELECT videos.*, sources.path AS srcpath, sources.hash AS srchash FROM videos JOIN sources ON videos.source = sources.id WHERE videos.lecture_id = ?', lectureid) + metadata = {'title': lecture['title'], 'album': course['title'], + 'description': lecture['comment'], + 'date': lecture['time'].strftime('%m/%d/%Y'), + 'artist': lecture['speaker'] if lecture['speaker'] else course['organizer']} + for video in videos: + if not video['source']: + continue + data = {'video_id': video['id'], 'path': video['path'], + 'srcpath': video['srcpath'], 'srchash': video['srchash'], + 'chapters': chapters, 'metadata': metadata} + schedule_job('remux', data) + +@edit_handler('chapters') +def chapter_changed(table, column, value, id): + print('chapter_changed') + chapters = query('SELECT * FROM chapters WHERE id = ?', id) + if not chapters: + return + chapter = chapters[0] + if column in ['visible', 'deleted'] or (chapter['visible'] and not chapter['deleted']): + schedule_remux(chapter['lecture_id']) + +@edit_handler('courses') +def course_changed(table, column, value, id): + if column not in ['title', 'organizer']: + return + lectures = query('SELECT * FROM lectures WHERE course_id = ?', id) + for lecture in lectures: + schedule_remux(lecture['id']) + +@edit_handler('lectures') +def lecture_changed(table, column, value, id): + if column in ['title', 'comment', 'time', 'speaker']: + schedule_remux(id) + -- GitLab