From 922c01d17c9b0836b4b71c18aaecb715097b2a2a Mon Sep 17 00:00:00 2001 From: Mathieu Moran Date: Mon, 7 Sep 2026 12:06:08 -0400 Subject: [PATCH] Target Redump DATs/catalog instead of No-Intro --- README.md | 12 ++++++------ app/dat_parser.py | 2 +- app/matcher.py | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 72b24a7..6745266 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ ![AI Generated](https://raw.githubusercontent.com/dotnetdave/ai-usage-badges/refs/heads/main/badges/png/1x/ai-generated.png) Native Linux GUI (PySide6) for preserving PSP UMD **games** and **videos** as -`.iso` files. It scans your discs, verifies them against a full catalog -(No-Intro DATs), reports what's missing, and retags/renames discs to a canonical +`.iso` files. It scans your discs, verifies them against the full Redump catalog +(Redump DATs), reports what's missing, and retags/renames discs to a canonical scheme. It also fetches cover art and metadata, syncs discs and save-data with a real PSP, and can pull missing discs from your own Redump 7z archive collection. @@ -52,8 +52,8 @@ python3 -m app.main ## First-time setup 1. Put your DAT files in `data/dats/`: - - games: No-Intro `Sony - PlayStation Portable` - - videos: No-Intro `Sony - PlayStation Portable (UMD Video)` + - games: Redump `Sony - PlayStation Portable` + - videos: Redump `Sony - PlayStation Portable (UMD Video)` 2. Ingest them into the local SQLite library: ```bash @@ -63,7 +63,7 @@ python3 -m app.main 3. Open the GUI and point **Settings → General → Games/Videos directory** at your disc folders (or set `PSP_GAMES_ROOTS` / `PSP_VIDEO_ROOTS`). -Discs that aren't in the No-Intro DATs can be added to `data/supplement.json` +Discs that aren't in the Redump DATs can be added to `data/supplement.json` (`name`, `region`, `crc32`, `sha1`, `md5`) so the tool still recognizes them. ## Nomenclature @@ -75,7 +75,7 @@ Discs are matched by hash first (most precise), then serial, then filename. ## Directory layout - `data/dats/` — clrmamepro DAT files (games + videos). -- `data/supplement.json` — extra discs not in No-Intro. +- `data/supplement.json` — extra discs not in Redump. - `data/credentials.json` — cover/metadata API keys (IGDB, TheMovieDB, ScreenScraper). Environment variables take precedence. - `data/manual_covers/games|videos/` — your own cover images. diff --git a/app/dat_parser.py b/app/dat_parser.py index c2d96b3..773bb40 100644 --- a/app/dat_parser.py +++ b/app/dat_parser.py @@ -1,6 +1,6 @@ """Parser for clrmamepro (.dat) files. -Handles the No-Intro / Redump text DAT format:: +Handles the clrmamepro text DAT format used by Redump and No-Intro:: clrmamepro ( name "Sony - PlayStation Portable" diff --git a/app/matcher.py b/app/matcher.py index 42a215b..15ee03d 100644 --- a/app/matcher.py +++ b/app/matcher.py @@ -16,7 +16,7 @@ _ARTICLE_RE = re.compile(r"^(.+),\s*(the|a|an)(?:\s+-\s+(.+))?$") def _normalize(name): name = name.lower() name = re.sub(r"\.(iso|cso|pbp|img|bin)$", "", name) # strip disc extension - name = re.sub(r"^\s*\d+\s*-\s*", "", name) # leading No-Intro catalog number + name = re.sub(r"^\s*\d+\s*-\s*", "", name) # legacy No-Intro "#### - Name" catalog number name = re.sub(r"\([^)]*\)", " ", name) # parenthetical tags name = " ".join(name.split()) m = _ARTICLE_RE.match(name) @@ -141,7 +141,7 @@ def match(conn, record): if row is not None: return f"hash:{field}", dict(row) - # 2. Local supplement catalog (dumps not present in No-Intro). + # 2. Local supplement catalog (dumps not present in the DATs). for entry in _load_supplement(): for field in ("crc32", "sha1", "md5"): value = entry.get(field)