Romlister ((full)) May 2026

def export_csv(self, filepath, clean_names=False): with open(filepath, 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['filename' if not clean_names else 'clean_name']) for item in self.get_list(clean_names): writer.writerow([item])

def scan(self): """Scan directory and collect ROM files.""" if self.recursive: iterator = self.root_path.rglob("*") else: iterator = self.root_path.glob("*")

class RomLister: def (self, root_path, recursive=True): self.root_path = Path(root_path) self.recursive = recursive self.roms = [] romlister

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)

args = parser.parse_args()

def filter_by_extension(self, extensions): """Keep only files with given extensions (e.g. ['.nes', '.sfc']).""" extensions = [ext.lower() if ext.startswith('.') else f'.ext.lower()' for ext in extensions] self.roms = [r for r in self.roms if r.suffix.lower() in extensions] return self

def clean_name(self, name): """Remove common tags like (USA), [Rev A], etc.""" # Remove parentheses content name = re.sub(r'\([^)]*\)', '', name) # Remove brackets content name = re.sub(r'\[[^]]*\]', '', name) # Remove extra spaces and underscores name = re.sub(r'[_]+', ' ', name) name = re.sub(r'\s+', ' ', name).strip() return name clean_names=False): with open(filepath

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