def getDir(self): """list all files and subdirectories for a given dir with regex.""" msg = self.asyncRead() if msg: path = msg["path"] dirselect = False if "dirSelect" in msg: dirselect = msg["dirSelect"] if path == "": path = "/home" path = os.path.normpath(path) filters = ["*"] if "filter" in msg: filters = msg["filter"] dirIter = QDirIterator(path) data = list() while dirIter.hasNext(): dirIter.next() if dirIter.fileName() in [".", ".."]: continue if not dirIter.fileInfo().isDir(): if dirselect: continue match = False for fi in filters: reg = QRegExp(fi) reg.setPatternSyntax(QRegExp.Wildcard) if reg.exactMatch(dirIter.fileName()): match = True break if not match: continue elem = dict() elem["name"] = dirIter.fileName() elem["path"] = dirIter.filePath() inf = dirIter.fileInfo() # type: QFileInfo elem["isDir"] = inf.isDir() last = inf.lastModified() # type: QDateTime elem["lastChange"] = last.toString("yyyy.MM.dd - HH:MM") if inf.isDir(): elem["fileSize"] = "" else: elem["fileSize"] = self._sizeHumanReadableStr(inf.size()) data.append(elem) data = sorted(data, key=lambda di: (not di["isDir"], di["name"].lower())) msg["data"] = data logging.debug("There is/are %i element/s in %s", len(data), path) self.send(msg)
def addSongToPlaylist(self, piosenka): if self.folder != None: it = QDirIterator(self.folder) it.next() while it.hasNext(): if it.fileInfo().isDir() == False and it.filePath() != '.': fInfo = it.fileInfo() if fInfo.suffix() in ('mp3', 'ogg', 'wav', 'm4a'): if it.fileName() == piosenka: self.playlist.addMedia( QMediaContent(QUrl.fromLocalFile( it.filePath()))) self.listView.addItem(it.fileName()) it.next() if it.fileInfo().isDir() == False and it.filePath() != '.': fInfo = it.fileInfo() if fInfo.suffix() in ('mp3', 'ogg', 'wav', 'm4a'): if it.fileName() == piosenka: self.playlist.addMedia( QMediaContent(QUrl.fromLocalFile(it.filePath()))) self.listView.addItem(it.fileName())