diff --git a/encoding.py b/encoding.py index 6a233f6731b70f143e6f9b21718d937e675d4254..562c1c24f311e81e8208fb7b706d2e2bf5abf16a 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) +