From c016ab19ace023d1fde977e6e6b7fae6e1f20261 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Tue, 9 Aug 2011 11:51:42 +0200 Subject: Recoding controlled by server, some cleanup. --- directory.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) (limited to 'directory.py') diff --git a/directory.py b/directory.py index 33391c6..48dfaa9 100644 --- a/directory.py +++ b/directory.py @@ -1,4 +1,4 @@ -import os, mimetypes, recode, events +import os, mimetypes, recode, events, threading from config import config @@ -84,32 +84,39 @@ class File(DirectoryEntry): ('Content-Length', str(size))]) return open(self.abs_path, 'rb') + def get_cache_path(self): + cache_path = os.path.join(config.get('cache_dir'), self.path) + cache_path = os.path.splitext(cache_path)[0] + '.mp3' + return cache_path + def get_cache_file(self): - cache_file = os.path.join(config.get('cache_dir'), self.path) - cache_file = os.path.splitext(cache_file)[0] + '.mp3' - return cache_file + return File(self.get_cache_path(), True) def recode(self, decoder, encoder, sessionid = None): decoder = recode.decoders[decoder]() encoder = recode.encoders[encoder]() recoder = recode.Recoder(decoder, encoder) - cache_file = self.get_cache_file() - cache_file_dir = os.path.dirname(cache_file) + cache_path = self.get_cache_path() + cache_path_dir = os.path.dirname(cache_path) # check and create cache directory - if not os.path.exists(cache_file_dir): - os.mkdir(cache_file_dir) + if not os.path.exists(cache_path_dir): + os.mkdir(cache_path_dir) # check if file is cached - if not os.path.exists(cache_file): + if not os.path.exists(cache_path): events.event_pub.recoding(self.path) - recoder.recode(self.abs_path, cache_file) + recoder.recode(self.abs_path, cache_path) events.event_pub.cached(self.path) if sessionid: - events.event_pub.play(sessionid, '/files/{0}'.format(self.path)) + events.event_pub.play(sessionid, '/cache/{0}'.format(self.path)) + + def start_recode(self, decoder, encoder, sessionid = None): + t = threading.Thread(target = self.recode, args = (decoder, encoder, sessionid)) + t.start() def json(self): - cache_file = self.get_cache_file() + cache_path = self.get_cache_path() d = DirectoryEntry.json(self) - d.update({'cached': os.path.exists(cache_file)}) + d.update({'cached': os.path.exists(cache_path)}) return d -- cgit v1.2.3