diff --git a/encoding.py b/encoding.py index 22bc8b94224c0758190a86acdcbb3dd296020027..7b94a1fcdc104cc92a1819a2c68b69a92b187735 100644 --- a/encoding.py +++ b/encoding.py @@ -10,6 +10,13 @@ def set_metadata(dest, course, lecture): dest['metadata'] = metadata dest['chapters'] = chapters +def schedule_intro(lectureid): + lecture = query('SELECT * FROM lectures where id = ?', lectureid) + course = query('SELECT * FROM course where id = ?', lecture['course_id']) + data = {'path': path, 'lecture_id': lectureid} + set_metadata(data, course, lecture) + schedule_job('intro', data) + def schedule_remux(lectureid, videoid=None): lecture = query('SELECT * FROM lectures WHERE id = ?', lectureid)[0] course = query('SELECT * FROM courses WHERE id = ?', lecture['course_id'])[0] @@ -87,30 +94,35 @@ def add_reencode_job(): schedule_transcode(source, video=video) return redirect(request.values.get('ref', url_for('jobs_overview'))) -@job_handler('probe-raw') +@job_handler('probe-raw', 'intro') def update_lecture_videos(jobid, jobtype, data, state, status): if 'lecture_id' not in data: return - if 'source_id' not in data: - modify('INSERT INTO sources (lecture_id, path, type, hash, time_created) VALUES (?, ?, ?, ?, ?)', - data['lecture_id'], data['path'], 'plain', status['hash'], datetime.now()) + if jobtype == 'probe-raw': + if 'source_id' not in data: + modify('INSERT INTO sources (lecture_id, path, type, hash, time_created) VALUES (?, ?, ?, ?, ?)', + data['lecture_id'], data['path'], 'plain', status['hash'], datetime.now()) sources = query('SELECT * FROM sources WHERE sources.lecture_id = ? ORDER BY time_created', data['lecture_id']) if not sources: return latest = sources[-1] - videos = query('SELECT * FROM videos WHERE videos.lecture_id = ?', data['lecture_id']) - current_fmts = [v['video_format'] for v in videos] - formats = query('''SELECT formats.* FROM formats - JOIN profiles ON formats.id = profiles.format - JOIN courses ON profiles.name = courses.profile - JOIN lectures ON courses.id = lectures.course_id - WHERE lectures.id = ?''', data['lecture_id']) - for fmt in formats: - if fmt['id'] not in current_fmts: - schedule_transcode(latest, fmt_id=fmt['id']) - for video in videos: - if video['source'] != latest['id']: - schedule_transcode(latest, video=video) + lecture = query('SELECT * FROM lectures where id = ?', data['lecture_id']) + if 'lecture is autointro' and jobtype == 'probe-raw': + schedule_intro(data['lecture_id']) + else: + videos = query('SELECT * FROM videos WHERE videos.lecture_id = ?', data['lecture_id']) + current_fmts = [v['video_format'] for v in videos] + formats = query('''SELECT formats.* FROM formats + JOIN profiles ON formats.id = profiles.format + JOIN courses ON profiles.name = courses.profile + JOIN lectures ON courses.id = lectures.course_id + WHERE lectures.id = ?''', data['lecture_id']) + for fmt in formats: + if fmt['id'] not in current_fmts: + schedule_transcode(latest, fmt_id=fmt['id']) + for video in videos: + if video['source'] != latest['id']: + schedule_transcode(latest, video=video) @edit_handler('chapters') def chapter_changed(table, column, value, id, user):