def filter_by_name_pattern(self, pattern, case_sensitive=False): """Keep ROMs whose name matches regex pattern.""" flags = 0 if case_sensitive else re.IGNORECASE regex = re.compile(pattern, flags) self.roms = [r for r in self.roms if regex.search(r.name)] return self
def filter_by_size(self, min_bytes=None, max_bytes=None): """Filter by file size in bytes.""" if min_bytes is not None: self.roms = [r for r in self.roms if r.stat().st_size >= min_bytes] if max_bytes is not None: self.roms = [r for r in self.roms if r.stat().st_size <= max_bytes] return self romlister
def get_list(self, clean_names=False): """Return list of ROM file paths or cleaned names.""" if clean_names: return [self.clean_name(r.stem) for r in self.roms] return [str(r) for r in self.roms] = max_bytes] return self def get_list(self
if args.extensions: lister.filter_by_extension(args.extensions) if args.min_size is not None or args.max_size is not None: lister.filter_by_size(args.min_size, args.max_size) if args.pattern: lister.filter_by_name_pattern(args.pattern) clean_names=False): with open(filepath
args = parser.parse_args()
def export_txt(self, filepath, clean_names=False): with open(filepath, 'w', encoding='utf-8') as f: for item in self.get_list(clean_names): f.write(item + '\n')
def scan(self): """Scan directory and collect ROM files.""" if self.recursive: iterator = self.root_path.rglob("*") else: iterator = self.root_path.glob("*")