Skip to main content

Sort media directory items by Metacritic scores.

Project description

Score Sort

Rank game, movie, or TV files and first-level folders by Metacritic scores. For games with a platform selected or inferred, Score Sort first uses Metacritic's all-time platform catalog, then optionally performs deeper product page lookups with --advanced.

Platform catalogs and filename matches are cached system-wide:

%LOCALAPPDATA%\score-sort\metacritic_platforms.json

On macOS/Linux:

${XDG_CACHE_HOME:-~/.cache}/score-sort/metacritic_platforms.json

Setup

uv run score-sort --help
uv run python -m unittest discover -s tests

Usage

Rank a folder:

uv run score-sort "D:\sorted-roms\Nintendo - Nintendo DS (Decrypted)"

Force a fresh platform catalog lookup:

uv run score-sort "D:\sorted-roms\Nintendo - Nintendo DS (Decrypted)" --refresh

Sort by low score first, by name, or by reverse name:

uv run score-sort "D:\Games\Nintendo Switch" --sort score --direction asc
uv run score-sort "D:\Games\Nintendo Switch" --sort name
uv run score-sort "D:\Games\Nintendo Switch" --sort name --direction desc

Filter to a score range:

uv run score-sort "D:\sorted-roms\Nintendo - Nintendo DS (Decrypted)" --range "1-50"
uv run score-sort "D:\sorted-roms\Nintendo - Nintendo DS (Decrypted)" --range ">70"
uv run score-sort "D:\sorted-roms\Nintendo - Nintendo DS (Decrypted)" --range "<=40"

Override detection when needed:

uv run score-sort "D:\Media\Movies" --kind movie
uv run score-sort "D:\Media\TV Shows" --kind tv
uv run score-sort "D:\Games\PSX" --kind game --platform ps1

Use parallel lookup workers and advanced Metacritic product-page enrichment:

uv run score-sort "D:\sorted-roms\Nintendo - Nintendo DS (Decrypted)" --workers 6 --advanced

CLI

The CLI intentionally keeps a small surface:

folder
--refresh
--sort {score,name}
--direction {asc,desc}
--range RANGE
--kind {game,movie,tv}
--platform PLATFORM
--workers WORKERS
--advanced

First-level child folders are scanned automatically alongside known media file extensions, so there is no separate directory-scanning flag.

Project Structure

src/score_sort/
  cli.py        command-line parsing and orchestration
  core.py       rating models, title matching, Metacritic parsers, cache helpers
  __main__.py   enables python -m score_sort

Notes

Context detection walks up from the scanned folder through its parents. It recognizes media folders such as Movies, TV Shows, Games, and ROMs, plus common platform names like ds, ps3, psx, gba, and longer folder names such as Nintendo - Nintendo DS (Decrypted).

Filename cleaning strips known ROM/media extensions and compound container suffixes such as .nkit.iso, .xiso.iso, and .nkit.rvz before matching.

Supported Metacritic platform slugs include 3ds, dreamcast, game-boy-advance, gamecube, meta-quest, mobile, nintendo-64, nintendo-ds, nintendo-switch, nintendo-switch-2, pc, ps-vita, ps1, ps2, ps3, ps4, ps5, psp, wii, wii-u, xbox, xbox-360, xbox-one, and xbox-series-x.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

score_sort-0.1.0.tar.gz (43.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

score_sort-0.1.0-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

Details for the file score_sort-0.1.0.tar.gz.

File metadata

  • Download URL: score_sort-0.1.0.tar.gz
  • Upload date:
  • Size: 43.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for score_sort-0.1.0.tar.gz
Algorithm Hash digest
SHA256 dae8b8d67ca77ffb5211a514e1b44aeccd002d8dbe89cf213a08dc8944b51a9a
MD5 a40121cb8c8f96406f0d8be3c8b3030f
BLAKE2b-256 07d1d8afd8c60c1c953534def10bb2126a7e7a0f3621ab480ab00d711645c6dc

See more details on using hashes here.

File details

Details for the file score_sort-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: score_sort-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for score_sort-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9626644354afe172155abd929fc98654bc0f0b6bd4c438d9e2939c88c80d067d
MD5 a9a028931757830154b85ce7c9118da3
BLAKE2b-256 8abffff2c3ce3b68857dc5a485b86f682e93b905660dc3a8cd980a4c973d20c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page