summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoretobi <git@e-tobi.net>2011-10-09 12:49:45 +0200
committeretobi <git@e-tobi.net>2011-10-09 19:21:30 +0200
commit600533b42ef089086d57d7812eaf74c3fdee64ec (patch)
treee4700e91d819fe780f8eb76cd806a9e7610514ca
parent5520c303945ce637ff27e97563e376440de05571 (diff)
downloadvdrnfofs-600533b42ef089086d57d7812eaf74c3fdee64ec.tar.gz
vdrnfofs-600533b42ef089086d57d7812eaf74c3fdee64ec.tar.bz2
Common base class for file nodes
-rw-r--r--vdrnfofs/filesystemnodes.py54
1 files changed, 22 insertions, 32 deletions
diff --git a/vdrnfofs/filesystemnodes.py b/vdrnfofs/filesystemnodes.py
index 99783d0..a25a59c 100644
--- a/vdrnfofs/filesystemnodes.py
+++ b/vdrnfofs/filesystemnodes.py
@@ -51,18 +51,32 @@ class NodeAttributes(fuse.Stat):
self.st_mtime = 0
self.st_ctime = 0
-class MpgNode:
- def __init__(self, path):
+class FileNode(object):
+ def __init__(self, path, extension):
self.path = path
self._file_system_name = None
- self._mpeg_files = None
- self._reader = None
+ self.extension = extension
def file_system_name(self):
if not self._file_system_name:
- self._file_system_name = '_'.join(self.path.rsplit('/', 3)[-2:]) + '.mpg'
+ self._file_system_name = '_'.join(self.path.rsplit('/', 3)[-2:]) + '.' + self.extension
return self._file_system_name
+ def get_stat(self):
+ attr = NodeAttributes()
+ attr.st_mode = stat.S_IFREG | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH
+ attr.st_nlink = 1
+ attr.st_size = self.size()
+ timevalues = self.path.rsplit('/', 1)[1][:16].replace('.', '-').split('-')
+ attr.st_mtime = time.mktime(datetime.datetime(*[ int(s) for s in timevalues ]).timetuple())
+ return attr
+
+class MpgNode(FileNode):
+ def __init__(self, path):
+ super(MpgNode, self).__init__(path, 'mpg')
+ self._mpeg_files = None
+ self._reader = None
+
def mpeg_files(self):
if not self._mpeg_files:
self._mpeg_files = glob.glob(self.path + '/[0-9]*.ts')
@@ -89,27 +103,12 @@ class MpgNode:
if self._reader:
self._reader.release()
- def get_stat(self):
- attr = NodeAttributes()
- attr.st_mode = stat.S_IFREG | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH
- attr.st_nlink = 1
- attr.st_size = self.size()
- timevalues = self.path.rsplit('/', 1)[1][:16].replace('.', '-').split('-')
- attr.st_mtime = time.mktime(datetime.datetime(*[ int(s) for s in timevalues ]).timetuple())
- return attr
-
-class NfoNode:
+class NfoNode(FileNode):
def __init__(self, path):
- self._file_system_name = None
- self.path = path
+ super(NfoNode, self).__init__(path, 'nfo')
self._nfo_content = None
- def file_system_name(self):
- if not self._file_system_name:
- self._file_system_name = '_'.join(self.path.rsplit('/', 3)[-2:]) + '.nfo'
- return self._file_system_name
-
def nfo_content(self):
if not self._nfo_content:
info_path = self.path + '/info'
@@ -132,17 +131,8 @@ class NfoNode:
def read(self, offset, size):
return self.nfo_content()[offset:offset+size]
- def get_stat(self):
- attr = NodeAttributes()
- attr.st_mode = stat.S_IFREG | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH
- attr.st_nlink = 1
- attr.st_size = self.size()
- timevalues = self.path.rsplit('/', 1)[1][:16].replace('.', '-').split('-')
- attr.st_mtime = time.mktime(datetime.datetime(*[ int(s) for s in timevalues ]).timetuple())
- return attr
-
def release(self):
- return
+ pass
class DirNode:
def __init__(self, path):