Source code for easyplayer.storage.files
import hashlib
from path import Path
from ..settings import SUPPORTED_FILETYPES
[docs]class FileStorage(object):
""" folder with media files """
def __init__(self, data_dir, subdir='music'):
self.data_dir = Path(data_dir).expanduser()
self.folder = self.data_dir / subdir
if not self.folder.exists():
self.folder.makedirs(mode=0o755)
@property
def all_files(self):
files = []
#for ft in SUPPORTED_FILETYPES:
# files.extend(self.folder.files('*.' + ft))
files.extend(self.folder.files())
return files
@property
def length(self):
return len(self.files)
@property
def all_filenames(self):
return [str(f.basename()) for f in self.all_files]
def file_path(self, filename):
return self.folder.joinpath(filename)
def file_exists(self, filename):
return self.file_path(filename).exists()
def modified(self, filename):
return self.file_path(filename).mtime
def newer(self, filename, mtime):
return self.file_exists(filename) and self.modified(filename) > mtime
def delete(self, filename):
self.file_path(filename).remove_p()
def file_hash(self, filename, buf_size=256*1024):
path = self.file_path(filename)
sha1 = hashlib.sha1()
with open(path, 'rb') as f:
while True:
data = f.read(buf_size)
if not data:
break
sha1.update(data)
return sha1.hexdigest()