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)
Exemplo n.º 2
0
    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())