diff --git a/livestreams.py b/livestreams.py
new file mode 100644
index 0000000000000000000000000000000000000000..10118d846b113d42958febf4b700e01f3dd62ffb
--- /dev/null
+++ b/livestreams.py
@@ -0,0 +1,22 @@
+from server import *
+from sorter import schedule_thumbnail
+
+def genlive(streams):
+	for stream in streams:
+		stream['visible'] = True
+		stream['downloadable'] = False
+		stream['path'] = 'pub/hls/%s.m3u8'%stream['livehandle']
+		stream['file_size'] = 0
+	return streams
+
+@sched_func(30)
+def livestream_thumbnail():
+	livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, "formats" AS sep, formats.*
+			FROM streams
+			JOIN lectures ON lectures.id = streams.lecture_id
+			JOIN formats ON formats.keywords = "hls"
+			WHERE streams.active AND (? OR streams.visible)
+			''', ismod())
+	for v in genlive(livestreams):
+		schedule_thumbnail(v.lecture_id)
+
diff --git a/server.py b/server.py
index f535a6caa94d012244b4d8412d59ced03b4f71d9..eb36456dd10f0dbbb03d16a5caee166ea24531c2 100644
--- a/server.py
+++ b/server.py
@@ -381,13 +381,7 @@ def courses():
 		groupedby = 'semester'
 	return render_template('courses.html', courses=courses, groupedby=groupedby)
 
-def genlive(streams):
-	for stream in streams:
-		stream['visible'] = True
-		stream['downloadable'] = False
-		stream['path'] = 'pub/hls/%s.m3u8'%stream['livehandle']
-		stream['file_size'] = 0
-	return streams
+from livestreams import genlive
 
 @app.route('/<handle>')
 @app.route('/<int:id>')
@@ -692,3 +686,4 @@ if 'JOBS_API_KEY' in config:
 import timetable
 import chapters
 import icalexport
+import livestreams
diff --git a/sorter.py b/sorter.py
index 720c6d34550f7170af56c1747f1caf9aa3bd7418..472955be7b5a981ec8ea20bd5d1c27f470be0555 100644
--- a/sorter.py
+++ b/sorter.py
@@ -36,7 +36,6 @@ def insert_video(lectureid,dbfilepath,filepath,fileformatid):
 	schedule_thumbnail(lectureid)
 
 def schedule_thumbnail(lectureid):
-	path = query('SELECT path FROM videos WHERE lecture_id')
 	videos = query('''
 			SELECT videos.path
 			FROM videos