#!/usr/bin/env python3
import csv, sys, os
from datetime import datetime

def clean_csv(input_file, output_file=None):
    if not output_file:
        base, ext = os.path.splitext(input_file)
        output_file = f"{base}_cleaned_{datetime.now().strftime('%Y%m%d')}{ext}"
    with open(input_file, 'r', encoding='utf-8', errors='ignore') as f:
        rows = list(csv.reader(f))
    if not rows: return None
    headers = [h.strip().lower().replace(' ', '_') for h in rows[0]]
    seen, unique_headers = set(), []
    for h in headers:
        if h in seen: h = f"{h}_dup"
        seen.add(h); unique_headers.append(h)
    cleaned, seen_rows = [unique_headers], set()
    for row in rows[1:]:
        if not any(cell.strip() for cell in row): continue
        t = tuple(cell.strip().lower() for cell in row)
        if t in seen_rows: continue
        seen_rows.add(t); cleaned.append([cell.strip() for cell in row])
    with open(output_file, 'w', newline='', encoding='utf-8') as f:
        csv.writer(f).writerows(cleaned)
    return {'input_rows': len(rows)-1, 'output_rows': len(cleaned)-1,
            'duplicates_removed': len(rows)-len(cleaned), 'output_file': output_file}

if __name__ == '__main__':
    r = clean_csv(sys.argv[1], sys.argv[2] if len(sys.argv)>2 else None)
    if r: print(f"Cleaned {r['input_rows']}->{r['output_rows']} rows, removed {r['duplicates_removed']} dupes. Saved: {r['output_file']}")
