Skip to main content

CLI tool and Python library for managing Playstation 3 image files

Project description

PS3ISO

Command line tool and Python library for managing existing Playstation 3 image files

PyPI version builds.sr.ht status Documentation Status Coverage PyPI - License PyPI - Downloads

Installing

pip install ps3iso

Dependencies

isoinfo

isoinfo needs to be in the system PATH in order to extract SFO data directly from .iso images

Windows: https://smithii.com/files/cdrtools-latest.zip

macOS: brew install cdrtools

Linux: brew install genisoimage

Quick Program Help

usage: [-h] -i INPUT [-f FORMAT] [--rename]

optional arguments:
  -h, --help            show this help message and exit
  -i INPUT, --input INPUT
                        Path to the PS3 ISO file or directory containing PS3
                        ISO files
  -f FORMAT, --format FORMAT
                        Format string to use for output or --rename target
  --rename              Rename .iso and supporting files to a format string
                        based on PS3 metadata

To rename all ISO files, plus all files with a matching name to a nice format:

$ ps3iso -i /path/to/isos -f '%I-[%T]' --rename

This will rename .iso files by reading the game's metadata. It will also find any files with the same name, but different extension. The file name will be based on the format string given by -f and the following variables are expanded:

Variable Parameter
%a APP_VER
%a ATTRIBUTE
%C CATEGORY
%L LICENSE
%P PARENTAL_LEVEL
%R RESOLUTION
%S SOUND_FORMAT
%T TITLE
%I TITLE_ID
%V VERSION
%v PS3_SYSTEM_VER

Therefore, the above command will look in /path/to/isos for all ISO files (e.g. UnknownGame.iso) and rename it according to %I-[%T] (e.g. BLES0000-[Game Title].iso)

Additionally, all matching extra files (e.g. UnknownGame.png) will be renamed (e.g. BLES0000-[Game Title].png)

When not renaming files, the --format argument will also expand additional variables:

Variable Parameter
%f File name
%p File full path
\n Newline character
\t Tab character

The following will output a JSON object for each file found:

ps3iso -i /path/to/isos -f '{\n\t"file": "%F",\n\t"title": "%T",\n\t"ID": "%I"\n}'
{
        "file": "/path/to/isos/UnknownGame.iso",
        "title": "Game Title",
        "ID": "BLES00000"
}

Quick Library Examples

Renaming all ISO's in /path/to/iso/files to BLES0000-[Game Title].iso format:

from ps3iso.game import Game

games = Game.search('/path/to/iso/files')
Game.rename_all(list(games), '%I-[%T]')

Print a JSON object per game containing file path, game title, and game id:

from ps3iso.game import Game

for game in Game.search('.'):
	game.print_info('{"file":"%p", "title":"%T", "ID":"%I"}')

Loop over all ISO files and matching associated files, and generate a new filename in Game Title [BLES0000].ext format

from ps3iso.game import Game

games = Game.search('/path/to/iso/files')
for game in games:
	for f in game.files:
		print("Old name = %s" % f)
		print("New name = %s" % game.format_file(f, '%T [%I]'))

Open an existing PARAM.SFO file and print all valid SFO attributes

>>> from ps3iso.sfo import SfoFile
>>> with open('test/data/PARAM.SFO', 'rb') as f:
...	   sfo = SfoFile.parse(f)
>>> for key, value in sfo:
...     print("%s=%r" % (key, value))
APP_VER='01.00'
ATTRIBUTE=32
BOOTABLE=1
CATEGORY='DG'
LICENSE='Some example license text, Supports UTF8 glyphs like ©and ®.'
PARENTAL_LEVEL=5
PS3_SYSTEM_VER='02.5200'
RESOLUTION=63
SOUND_FORMAT=1
TITLE='Example PS3ISO Game Title'
TITLE_ID='BLES00000'
VERSION='01.00'

Read a specific attribute (TITLE_ID) from an existing PARAM.SFO

>>> from ps3iso.sfo import SfoFile
>>> sfo = SfoFile.parse_file('test/data/PARAM.SFO')
>>> print("Game ID = %s" % sfo.parameters.TITLE_ID)
Game ID = BLES00000
>>> print(sfo.format("Game Title = %T"))
Game Title = Example PS3ISO Game Title

Development - New release

  1. Make sure the tests pass and docs build: make coverage; make doc
  2. Update the version number in setup.py
  3. Create a tag for the version e.g.: git tag v1.2.3
  4. Build and upload to PyPi: make upload

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

ps3iso-0.4.0.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

ps3iso-0.4.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file ps3iso-0.4.0.tar.gz.

File metadata

  • Download URL: ps3iso-0.4.0.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.5

File hashes

Hashes for ps3iso-0.4.0.tar.gz
Algorithm Hash digest
SHA256 ea12ab12107328bc0ed40aaa4a7051246f53e86a865444faa8ed9d248a64b87e
MD5 62353350048f152736bac76372d82b6b
BLAKE2b-256 e8103179daff0cc9e9cef13d13ab384e93dabd15892159670eba0b3297c77f30

See more details on using hashes here.

File details

Details for the file ps3iso-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: ps3iso-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.5

File hashes

Hashes for ps3iso-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 871f496464181b3ecda4b386d1d03d1e2dbe3e6d11b775dd163e6541afd02856
MD5 48e3f74574b6db2c7eb20a78645bdae9
BLAKE2b-256 cf058887b53933a329385c19e98664fef4f6a11b789fc0aa27be9221d6cbedb1

See more details on using hashes here.

Supported by

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