{ "info": { "author": "Joshua Stover", "author_email": "jmstover6@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6" ], "description": "# PS3ISO\n\nCommand line tool and Python library for managing existing Playstation 3 image files\n\n[![builds.sr.ht status](https://builds.sr.ht/~jmstover/ps3iso.svg)](https://builds.sr.ht/~jmstover/ps3iso?)\n[![Documentation Status](https://readthedocs.org/projects/ps3iso/badge/?version=latest)](https://ps3iso.readthedocs.io/en/latest/?badge=latest)\n\n[[PyPi](https://pypi.org/project/ps3iso/)]\n[[sourcehut](https://git.sr.ht/~jmstover/ps3iso)]\n\n\n## Installing\n\n```\npip install ps3iso\n```\n\n\n## Dependencies\n\n\n### isoinfo\n\n`isoinfo` needs to be in the system PATH in order to extract SFO data directly from .iso images\n\n Windows: `https://smithii.com/files/cdrtools-latest.zip`\n\n macOS: `brew install cdrtools`\n\n Linux: `brew install genisoimage`\n\n\n\n## Quick Program Help\n```\nusage: [-h] -i INPUT [-f FORMAT] [--rename]\n\noptional arguments:\n -h, --help show this help message and exit\n -i INPUT, --input INPUT\n Path to the PS3 ISO file or directory containing PS3\n ISO files\n -f FORMAT, --format FORMAT\n Format string to use for output or --rename target\n --rename Rename .iso and supporting files to a format string\n based on PS3 metadata\n```\n\nTo rename all ISO files, plus all files with a matching name to a nice format:\n\n```sh\n$ ps3iso -i /path/to/isos -f '%I-[%T]' --rename\n```\nThis 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:\n\n| Variable | Parameter |\n|:--------:|-----------------|\n| __%a__ | APP_VER |\n| __%a__ | ATTRIBUTE |\n| __%C__ | CATEGORY |\n| __%L__ | LICENSE |\n| __%P__ | PARENTAL_LEVEL |\n| __%R__ | RESOLUTION |\n| __%S__ | SOUND_FORMAT |\n| __%T__ | TITLE |\n| __%I__ | TITLE_ID |\n| __%V__ | VERSION |\n| __%v__ | PS3_SYSTEM_VER |\n\nTherefore, 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`)\n\nAdditionally, all matching extra files (_e.g._ `UnknownGame.png`) will be renamed (_e.g._ `BLES0000-[Game Title].png`)\n\nWhen __not__ renaming files, the `--format` argument will also expand additional variables:\n\n| Variable | Parameter |\n|:--------:|-------------------|\n| __%f__ | File name |\n| __%p__ | File full path |\n| __\\n__ | Newline character |\n| __\\t__ | Tab character |\n\nThe following will output a JSON object for each file found:\n\n```sh \nps3iso -i /path/to/isos -f '{\\n\\t\"file\": \"%F\",\\n\\t\"title\": \"%T\",\\n\\t\"ID\": \"%I\"\\n}'\n```\n\n```json\n{\n \"file\": \"/path/to/isos/UnknownGame.iso\",\n \"title\": \"Game Title\",\n \"ID\": \"BLES00000\"\n}\n```\n\n\n## Quick Library Examples\n\nRenaming all ISO's in `/path/to/iso/files` to `BLES0000-[Game Title].iso` format:\n\n```python\nfrom ps3iso.game import Game\n\ngames = Game.search('/path/to/iso/files')\nGame.rename_all(list(games), '%I-[%T]')\n```\n\n\nPrint a JSON object per game containing file path, game title, and game id:\n\n```python\nfrom ps3iso.game import Game\n\nfor game in Game.search('.'):\n\tgame.print_info('{\"file\":\"%p\", \"title\":\"%T\", \"ID\":\"%I\"}')\n```\n\n\nLoop over all ISO files and matching associated files, and generate a new filename in `Game Title [BLES0000].ext` format\n\n```python\nfrom ps3iso.game import Game\n\ngames = Game.search('/path/to/iso/files')\nfor game in games:\n\tfor f in game.files:\n\t\tprint(\"Old name = %s\" % f)\n\t\tprint(\"New name = %s\" % game.format_file(f, '%T [%I]'))\n```\n\n\nOpen an existing PARAM.SFO file and print all valid SFO attributes\n\n```python\nfrom ps3iso.sfo import SfoFile\n\nwith open('/path/to/PARAM.SFO', 'rb') as f:\n\tsfo = SfoFile.parse(f)\n\nfor key, value in sfo:\n\tprint(\"key=%s, value=%r\" % (key, value))\n```\n\nRead a specific attribute (`TITLE_ID`) from an existing PARAM.SFO\n\n```python\nfrom ps3iso.sfo import SfoFile\n\nsfo = SfoFile.parse_file('/path/to/PARAM.SFO')\nprint(\"Game ID = %s\" % sfo.TITLE_ID)\nprint(sfo.format(\"Game Title = %T\\n\"))\n```\n\n\n## Development - New release\n\n1. Make sure the tests pass and docs build: `make coverage; make doc`\n1. Update the version number in setup.py\n1. Create a tag for the version e.g.: `git tag v1.2.3`\n1. Build and upload to PyPi: `make upload`\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://git.sr.ht/~jmstover/ps3iso", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ps3iso", "package_url": "https://pypi.org/project/ps3iso/", "platform": "", "project_url": "https://pypi.org/project/ps3iso/", "project_urls": { "Documentation": "https://ps3iso.readthedocs.io/en/stable", "Homepage": "https://git.sr.ht/~jmstover/ps3iso", "Source": "https://git.sr.ht/~jmstover/ps3iso", "Tracker": "https://todo.sr.ht/~jmstover/ps3iso" }, "release_url": "https://pypi.org/project/ps3iso/0.3.5/", "requires_dist": null, "requires_python": ">=3.6", "summary": "CLI tool and Python library for managing Playstation 3 image files", "version": "0.3.5" }, "last_serial": 5899995, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "3127dab5fee8e9f6831a0c16c5f33db0", "sha256": "ea4526884155b33756f59e6d2e8728e25906521a13c398ea98262d207db7c80c" }, "downloads": -1, "filename": "ps3iso-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3127dab5fee8e9f6831a0c16c5f33db0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6444, "upload_time": "2019-09-15T10:58:00", "url": "https://files.pythonhosted.org/packages/07/ce/d3ee197fda01ebe14af2f6971c0dd8365272d00c1f7ef8592f3fbc17b4db/ps3iso-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "962ef433757f7d596c3a4218aac4ac90", "sha256": "30d87abc615862a8b4c3c3ef2b420a9f002df1070ed11ad1e53e4aa629d8bad0" }, "downloads": -1, "filename": "ps3iso-0.1.tar.gz", "has_sig": false, "md5_digest": "962ef433757f7d596c3a4218aac4ac90", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5490, "upload_time": "2019-09-15T10:58:02", "url": "https://files.pythonhosted.org/packages/39/1c/8b7aaced4fe532ba6fc6c02114a46c2be513ac6743358f5e3759b0cdf752/ps3iso-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "e8f54a3a03106357a0c1c1e1ebfcaa71", "sha256": "9ac68c5796ad3b7554034222cd5d1b55af0a505c2ff74b4246157992542b01b5" }, "downloads": -1, "filename": "ps3iso-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e8f54a3a03106357a0c1c1e1ebfcaa71", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 7395, "upload_time": "2019-09-21T15:19:36", "url": "https://files.pythonhosted.org/packages/ea/0d/b6f5d3ef5d410303f51e3ee1391cab7ee2d42b445cead58be2f521b5090c/ps3iso-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35107c787509ddbb17f1905e64adac96", "sha256": "c38a3bda08660e0bb5bbe171d4f42921935f996fe395a83607e5092ea9bb1f1c" }, "downloads": -1, "filename": "ps3iso-0.2.tar.gz", "has_sig": false, "md5_digest": "35107c787509ddbb17f1905e64adac96", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6778, "upload_time": "2019-09-21T15:19:40", "url": "https://files.pythonhosted.org/packages/b4/f6/87f6fdd481d367e00945367bf66cf85d17edbe7c7f88e033c99a966b7763/ps3iso-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "fab5993f95a43674f091bfce9320df9d", "sha256": "f4f42fecfc6158d7961550d6f1e881ad1f17739015608ba8eab9591aa1dbba78" }, "downloads": -1, "filename": "ps3iso-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "fab5993f95a43674f091bfce9320df9d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8140, "upload_time": "2019-09-21T15:26:22", "url": "https://files.pythonhosted.org/packages/98/49/9e3e11c5e71c8245fd67664158eb6330a29b8c296bd635fac52c28fe8009/ps3iso-0.3-py3-none-any.whl" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "9ff0c2fa9bea41d8bddfced7a0df136f", "sha256": "559f190899e7e4f4c387050f15b25a92123bef30c1284725b554e66905999639" }, "downloads": -1, "filename": "ps3iso-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9ff0c2fa9bea41d8bddfced7a0df136f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8272, "upload_time": "2019-09-21T15:51:45", "url": "https://files.pythonhosted.org/packages/0e/d9/6d5d2ecb918c56a3e06627c8212d2e0d49b623368d6fa93cf5aab513afe1/ps3iso-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc22d47db92a770d535695a3f553973e", "sha256": "f3d481e0e76666bb43f3b09c36db976a5ac2a85f3361f287af5ab522cdc5de73" }, "downloads": -1, "filename": "ps3iso-0.3.1.tar.gz", "has_sig": false, "md5_digest": "cc22d47db92a770d535695a3f553973e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7237, "upload_time": "2019-09-21T15:51:47", "url": "https://files.pythonhosted.org/packages/86/76/949731ac1023dd7c86461e2132bdd1b79e44c14497129ccd816f25c7e1d3/ps3iso-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "a8d686ae1ba1906faf1049086c8e5895", "sha256": "39fc6aa33958864a43f72c9dd4673d6f403d46e6b2c3fdeb9c2d0f771f25a5b9" }, "downloads": -1, "filename": "ps3iso-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a8d686ae1ba1906faf1049086c8e5895", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8314, "upload_time": "2019-09-22T08:22:44", "url": "https://files.pythonhosted.org/packages/1f/01/f85ba4f213e4f94ca44669d97bf32c3b043bd2ada26da1a7149e638f1b4b/ps3iso-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33822092f30ef3a25c8289fe1e82fd6e", "sha256": "2a3f704dab637b2c830a0fd2dabe047886c79bdcf6f6b3f9bc2569d64b2c6e7f" }, "downloads": -1, "filename": "ps3iso-0.3.2.tar.gz", "has_sig": false, "md5_digest": "33822092f30ef3a25c8289fe1e82fd6e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7635, "upload_time": "2019-09-22T08:22:48", "url": "https://files.pythonhosted.org/packages/97/15/16f1b45f1824b745decdafc07587961bf50bba458d1e1c542f57d54bc865/ps3iso-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "49ef5153a846a1332c2ee41a9f932fc5", "sha256": "84053323980b0c5c1281cfa61f86afedc7b4e83501ad0ab3d0ecdae094b24853" }, "downloads": -1, "filename": "ps3iso-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "49ef5153a846a1332c2ee41a9f932fc5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8382, "upload_time": "2019-09-22T12:06:24", "url": "https://files.pythonhosted.org/packages/6f/e9/903891913bce89f520e4d9ead80717345688019d5ffea8cd312a2097bfd9/ps3iso-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "90fae7a1824702423c4e6b0979bc53a0", "sha256": "53787ac032ba6b76ba63e8cb494c4896f8340181518b33aa4d92556d46acc3f5" }, "downloads": -1, "filename": "ps3iso-0.3.3.tar.gz", "has_sig": false, "md5_digest": "90fae7a1824702423c4e6b0979bc53a0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7730, "upload_time": "2019-09-22T12:06:26", "url": "https://files.pythonhosted.org/packages/39/06/74695483cf8cce7c2935c3d4e386abd8de1bb25d91c02f64a9d22fea36b1/ps3iso-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "0d4f0f9216fce5c44b25b04b4cf3e066", "sha256": "86c6a304d6190f3e450be2eeb9a17ca69123313e35d5da94a9784c46b3606456" }, "downloads": -1, "filename": "ps3iso-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0d4f0f9216fce5c44b25b04b4cf3e066", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8503, "upload_time": "2019-09-23T10:17:02", "url": "https://files.pythonhosted.org/packages/b5/df/e0597ba203622fcdf9e708066bd2d995c016df6bcced1097a9e9f4aee696/ps3iso-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9481e3a6590f5713113172e46edac138", "sha256": "5204376a711ff31954603cf852544a55bf54b873ccfd8babb90975f7055f4f26" }, "downloads": -1, "filename": "ps3iso-0.3.4.tar.gz", "has_sig": false, "md5_digest": "9481e3a6590f5713113172e46edac138", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7907, "upload_time": "2019-09-23T10:17:06", "url": "https://files.pythonhosted.org/packages/19/23/f4b1b20e2a75a429b1e6632cd42720acbaed897f3a84d3913a65acfd79df/ps3iso-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "ecc812d61938aebee5064536ac9321e9", "sha256": "6ed386c99ebcf565006fd31a0583f3eb554508c70e70688d89a05e254d322d4c" }, "downloads": -1, "filename": "ps3iso-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "ecc812d61938aebee5064536ac9321e9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9478, "upload_time": "2019-09-28T16:18:22", "url": "https://files.pythonhosted.org/packages/a7/3a/55462977d8892633d88199d525bb93e5890b4bc8556aaf54ab6dfd6bee3e/ps3iso-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5cbec9450c0ca22d774b9742adc1d568", "sha256": "528f68ee0cfc5cf6646339b2a36ee1e5c9c2f0365b4d0c1b2368d6fd49b96f4a" }, "downloads": -1, "filename": "ps3iso-0.3.5.tar.gz", "has_sig": false, "md5_digest": "5cbec9450c0ca22d774b9742adc1d568", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9007, "upload_time": "2019-09-28T16:18:25", "url": "https://files.pythonhosted.org/packages/bf/5f/ea88dca080c6d6524353ac9c01be47d06b76ba1267308f5340e65bffe837/ps3iso-0.3.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ecc812d61938aebee5064536ac9321e9", "sha256": "6ed386c99ebcf565006fd31a0583f3eb554508c70e70688d89a05e254d322d4c" }, "downloads": -1, "filename": "ps3iso-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "ecc812d61938aebee5064536ac9321e9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9478, "upload_time": "2019-09-28T16:18:22", "url": "https://files.pythonhosted.org/packages/a7/3a/55462977d8892633d88199d525bb93e5890b4bc8556aaf54ab6dfd6bee3e/ps3iso-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5cbec9450c0ca22d774b9742adc1d568", "sha256": "528f68ee0cfc5cf6646339b2a36ee1e5c9c2f0365b4d0c1b2368d6fd49b96f4a" }, "downloads": -1, "filename": "ps3iso-0.3.5.tar.gz", "has_sig": false, "md5_digest": "5cbec9450c0ca22d774b9742adc1d568", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9007, "upload_time": "2019-09-28T16:18:25", "url": "https://files.pythonhosted.org/packages/bf/5f/ea88dca080c6d6524353ac9c01be47d06b76ba1267308f5340e65bffe837/ps3iso-0.3.5.tar.gz" } ] }