some code changes
This commit is contained in:
96
lib/ListGenerator.py
Normal file
96
lib/ListGenerator.py
Normal file
@@ -0,0 +1,96 @@
|
||||
import mimetypes
|
||||
import os
|
||||
|
||||
|
||||
class FileAttrs:
|
||||
def __iter__(self, name, path, type):
|
||||
self.name = name
|
||||
self.path = path
|
||||
self.type = type
|
||||
|
||||
@self.name.setter
|
||||
def name(self, value):
|
||||
self.name = value
|
||||
|
||||
@self.type.setter
|
||||
def type(self, value):
|
||||
self.type = value
|
||||
|
||||
@self.path.setter
|
||||
def path(self, value):
|
||||
self.path = value
|
||||
|
||||
class ListGenerator:
|
||||
def __init__(self, path=None):
|
||||
self._path = path
|
||||
self.list: list = self._lister(self._path)
|
||||
self._current_index = 0
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.name
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return (
|
||||
f'<Audio file name={self.name} path={self.path} type={self.type} size={self._size}>'
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self.list[self._current_index]
|
||||
|
||||
@property
|
||||
def path(self) -> str:
|
||||
return str(self._path)
|
||||
|
||||
@property
|
||||
def type(self) -> str:
|
||||
guess = mimetypes.guess_type(f'{self._path}/{self.name}')[0].split('/')[0]
|
||||
return guess
|
||||
|
||||
@classmethod
|
||||
def _lister(cls, path) -> list:
|
||||
_dict: list = []
|
||||
for _files in os.walk(path):
|
||||
_dict.extend(_files)
|
||||
break
|
||||
return _dict[2]
|
||||
|
||||
def __iter__(self):
|
||||
return ListGenerationIter(self)
|
||||
|
||||
@name.setter
|
||||
def name(self, value):
|
||||
self.name = value
|
||||
|
||||
@type.setter
|
||||
def type(self, value):
|
||||
self.type = value
|
||||
|
||||
@path.setter
|
||||
def path(self, value):
|
||||
self.path = value
|
||||
|
||||
|
||||
class ListGenerationIter:
|
||||
def __init__(self, list_class):
|
||||
self._list = list_class.list
|
||||
self._name = list_class.name
|
||||
self._type = list_class.type
|
||||
self._path = list_class.path
|
||||
|
||||
self._size = len(self._list)
|
||||
self._current_index = 0
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
if self._current_index < self._size:
|
||||
|
||||
_name = self._list[self._current_index]
|
||||
_path = self._path
|
||||
_type = self._type
|
||||
self._current_index += 1
|
||||
memb = FileAttrs(_name, _path, _type)
|
||||
return memb
|
||||
raise StopIteration
|
||||
Reference in New Issue
Block a user