summaryrefslogtreecommitdiff
path: root/directory.py
diff options
context:
space:
mode:
Diffstat (limited to 'directory.py')
-rw-r--r--directory.py33
1 files changed, 20 insertions, 13 deletions
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