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()