ps5-updates 0.9.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,134 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ .python-version
86
+
87
+ # pipenv
88
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
90
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
91
+ # install all needed dependencies.
92
+ #Pipfile.lock
93
+
94
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env
106
+ .venv
107
+ env/
108
+ venv/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
130
+
131
+ # Project files
132
+ /*.json
133
+ discord/
134
+ data_dump/
@@ -0,0 +1,22 @@
1
+ # MIT License
2
+
3
+ # Copyright (c) 2025-2026 andshrew
4
+ # https://github.com/andshrew/PS5-Updates-Python
5
+
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be included in all
14
+ # copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ # SOFTWARE.
@@ -0,0 +1,140 @@
1
+ Metadata-Version: 2.4
2
+ Name: ps5_updates
3
+ Version: 0.9.0
4
+ Summary: A package for accessing PS5 title update information
5
+ Project-URL: Homepage, https://github.com/andshrew/PS5-Updates-Python
6
+ Project-URL: Repository, https://github.com/andshrew/PS5-Updates-Python.git
7
+ Project-URL: GitHub, https://github.com/andshrew/PS5-Updates-Python
8
+ Project-URL: Issues, https://github.com/andshrew/PS5-Updates-Python/issues
9
+ Project-URL: Changelog, https://github.com/andshrew/PS5-Updates-Python/releases
10
+ Author-email: andshrew <7409326+andshrew@users.noreply.github.com>
11
+ License: MIT
12
+ License-File: LICENSE
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Requires-Python: >=3.8
17
+ Requires-Dist: requests>=2.31
18
+ Provides-Extra: test
19
+ Requires-Dist: pytest-cov>=4.0; extra == 'test'
20
+ Requires-Dist: pytest>=7.0; extra == 'test'
21
+ Description-Content-Type: text/markdown
22
+
23
+ # PS5 Title Update Information
24
+
25
+ This Python package retrieves information about updates available for a PS5 title. The information is stored in a `Ps5TitleUpdate` object which you can integrate into your application.
26
+
27
+ A similar package for PS4 title updates is available here: https://github.com/andshrew/PS4-Updates-Python
28
+
29
+ ## Installation
30
+ ```
31
+ pip install ps5-updates
32
+ ```
33
+
34
+ ## Typical Usage
35
+ An example implementation is included in [`src/demo.py`](src/demo.py).
36
+
37
+ Create a `Ps5TitleUpdate` object using the titles update XML URL or a the URL to a specific updates `_sc.pkg` file.
38
+
39
+ Invoke `get_update()` on the object to download information about all currently available update packages. This will partially download the update `.pkg` file to extract
40
+ the `param.json` where metadata about the update is stored.
41
+
42
+ The latest update is available as a `ContentPackage` object in the `latest` attribute. If the title has multiple updates currently available (ie. there is a pre-download for an upcoming update, or a pre-release update) then each individual update is available as a `ContentPackage` object in the `packages` attribute.
43
+
44
+ Within the `ContentPackage` object, information about the update `.pkg` file is available as a `PKG` object on the `pkg` attribute.
45
+
46
+ Within the `PKG` object the `param.json` data is available as a `PKG_Param` object. Any information from this file which is not specifically mapped to attributes on the object can be accessed by invoking `get_property('name')`.
47
+
48
+ Titles can also include Additional Content (ie. DLC). If any Additional Content is available then it is available as an `AdditionalContent` object in the `additional_content` attribute of the `Ps5TitleUpdate` object. Accessing the update information then mirrors the above except it is accessed via the `AdditionalContent` objects `latest` or `packages` attributes.
49
+
50
+ ## Limitations
51
+ This package is not intended for downloading entire PS5 title update files, although it can be used to download and save files from within an updates `_sc.pkg` file.
52
+
53
+ Only information about the currently available update version can be retrieved. However if you have the URL for an specific updates `_sc.pkg` file then you can create a `PKG` object directly from that and parse some information about the update.
54
+
55
+ Keep in mind when considering the attributes of a `PKG` (the features that it is flagged as supporting) that it does not necessarily mean that the game has a mode available which actually implements the feature. This is true at least for features like 120hz and PSSR; whereas other features like VRR, HDR, and Power Saver do always seem to be available whenever the `PKG` is flagged as supporting them.
56
+
57
+ Unlike PS4 and earlier titles the update XML URLs are not predetermined. They can only be obtained from the `app_sc.pkg` file on a PS5 game disc, from the `entitlement.db` file on an exploitable console, or from the `_sc.pkg` of an already known update.
58
+
59
+ ## Usage Examples
60
+
61
+ An example implementation is included in [`src/demo.py`](src/demo.py).
62
+
63
+ ### Create `Ps5TitleUpdate` object and retrieve latest update information
64
+ ```python
65
+ from ps5_updates import title as ps5up
66
+
67
+ url = 'https://sgst.prod.dl.playstation.net/sgst/prod/00/np/PPSA07632_00/53d40bc7-7b1a-403c-8260-4b293b1711fd-version.xml'
68
+ title = ps5up.Ps5TitleUpdate.from_url(url)
69
+ title.get_update()
70
+ print(f'Title Id: {title.title_id}')
71
+ print(f'Content Id: {title.content_id}')
72
+ print(f'Name: {title.latest.pkg.param.name}')
73
+ print(f'Version: {title.latest.version}')
74
+ print(f'Creation Date: {title.latest.pkg.param.creation_date}')
75
+ print(f'System Version: {title.latest.system_version}')
76
+ print(f'Size: {title.latest.update_size}')
77
+ ```
78
+
79
+ #### Console Output
80
+ ```
81
+ Title Id: PPSA07632_00
82
+ Content Id: UP9000-PPSA07632_00-SAROS00000000000
83
+ Name: SAROS
84
+ Version: 01.004.003
85
+ Creation Date: 2026-05-14 00:37:26
86
+ System Version: 13.20.00.06
87
+ Size: 78.27 GiB
88
+ ```
89
+
90
+ ### Create a `PKG` object and retrieve information about a specific update
91
+ ```python
92
+ from ps5_updates import pkg as ps5pkg
93
+
94
+ url = 'https://sgst.prod.dl.playstation.net/sgst/prod/00/PPSA18654_00/app/info/95/f_23e129465f761a049d5477f4f4ec67db738a31927e981faa7ffb5b7eec9cb4c5/UP6312-PPSA18654_00-0220083948426038_sc.pkg'
95
+ pkg = ps5pkg.PKG.from_url(url)
96
+ print(f'Title Id: {pkg.param.title_id}')
97
+ print(f'Content Id: {pkg.param.content_id}')
98
+ print(f'Name: {pkg.param.name}')
99
+ print(f'Version: {pkg.param.content_version}')
100
+ print(f'Creation Date: {pkg.param.creation_date}')
101
+ print(f'System Version: {pkg.param.required_system_version}')
102
+ print(f'Update URL: {pkg.param.version_url}')
103
+ ```
104
+
105
+ #### Console Output
106
+ ```
107
+ Title Id: PPSA18654
108
+ Content Id: UP6312-PPSA18654_00-0220083948426038
109
+ Name: Age of Empires II: Definitive Edition
110
+ Version: 01.029.000
111
+ Creation Date: 2026-04-24 19:24:29
112
+ System Version: 13.00.00.00
113
+ Update URL: https://sgst.prod.dl.playstation.net/sgst/prod/00/np/PPSA18654_00/935e23b3-169e-439b-99d8-ae2b8b534b37-version.xml
114
+ ```
115
+
116
+ ## Development
117
+
118
+ _All commands after step 1 should be run from the root of the git repo_
119
+
120
+ **1. Clone the repo**
121
+ ```
122
+ git clone git@github.com:andshrew/PS5-Updates-Python.git
123
+ ```
124
+ **2. Create and load a virtual python environment**
125
+ ```
126
+ python -m venv .venv
127
+ source .venv/bin/activate
128
+ ```
129
+ **3. Install the package in editable mode**
130
+ ```
131
+ pip install -e ".[test]"
132
+ ```
133
+ **4. Build the package**
134
+ ```
135
+ pip install build
136
+ python -m build
137
+ ```
138
+
139
+ ## Additional Thanks
140
+ [psdevwiki](https://www.psdevwiki.com/ps4) - documentation on [PKG file format](https://www.psdevwiki.com/ps4/PKG_files) and [param.json files](https://www.psdevwiki.com/ps5/Param.json)
@@ -0,0 +1,118 @@
1
+ # PS5 Title Update Information
2
+
3
+ This Python package retrieves information about updates available for a PS5 title. The information is stored in a `Ps5TitleUpdate` object which you can integrate into your application.
4
+
5
+ A similar package for PS4 title updates is available here: https://github.com/andshrew/PS4-Updates-Python
6
+
7
+ ## Installation
8
+ ```
9
+ pip install ps5-updates
10
+ ```
11
+
12
+ ## Typical Usage
13
+ An example implementation is included in [`src/demo.py`](src/demo.py).
14
+
15
+ Create a `Ps5TitleUpdate` object using the titles update XML URL or a the URL to a specific updates `_sc.pkg` file.
16
+
17
+ Invoke `get_update()` on the object to download information about all currently available update packages. This will partially download the update `.pkg` file to extract
18
+ the `param.json` where metadata about the update is stored.
19
+
20
+ The latest update is available as a `ContentPackage` object in the `latest` attribute. If the title has multiple updates currently available (ie. there is a pre-download for an upcoming update, or a pre-release update) then each individual update is available as a `ContentPackage` object in the `packages` attribute.
21
+
22
+ Within the `ContentPackage` object, information about the update `.pkg` file is available as a `PKG` object on the `pkg` attribute.
23
+
24
+ Within the `PKG` object the `param.json` data is available as a `PKG_Param` object. Any information from this file which is not specifically mapped to attributes on the object can be accessed by invoking `get_property('name')`.
25
+
26
+ Titles can also include Additional Content (ie. DLC). If any Additional Content is available then it is available as an `AdditionalContent` object in the `additional_content` attribute of the `Ps5TitleUpdate` object. Accessing the update information then mirrors the above except it is accessed via the `AdditionalContent` objects `latest` or `packages` attributes.
27
+
28
+ ## Limitations
29
+ This package is not intended for downloading entire PS5 title update files, although it can be used to download and save files from within an updates `_sc.pkg` file.
30
+
31
+ Only information about the currently available update version can be retrieved. However if you have the URL for an specific updates `_sc.pkg` file then you can create a `PKG` object directly from that and parse some information about the update.
32
+
33
+ Keep in mind when considering the attributes of a `PKG` (the features that it is flagged as supporting) that it does not necessarily mean that the game has a mode available which actually implements the feature. This is true at least for features like 120hz and PSSR; whereas other features like VRR, HDR, and Power Saver do always seem to be available whenever the `PKG` is flagged as supporting them.
34
+
35
+ Unlike PS4 and earlier titles the update XML URLs are not predetermined. They can only be obtained from the `app_sc.pkg` file on a PS5 game disc, from the `entitlement.db` file on an exploitable console, or from the `_sc.pkg` of an already known update.
36
+
37
+ ## Usage Examples
38
+
39
+ An example implementation is included in [`src/demo.py`](src/demo.py).
40
+
41
+ ### Create `Ps5TitleUpdate` object and retrieve latest update information
42
+ ```python
43
+ from ps5_updates import title as ps5up
44
+
45
+ url = 'https://sgst.prod.dl.playstation.net/sgst/prod/00/np/PPSA07632_00/53d40bc7-7b1a-403c-8260-4b293b1711fd-version.xml'
46
+ title = ps5up.Ps5TitleUpdate.from_url(url)
47
+ title.get_update()
48
+ print(f'Title Id: {title.title_id}')
49
+ print(f'Content Id: {title.content_id}')
50
+ print(f'Name: {title.latest.pkg.param.name}')
51
+ print(f'Version: {title.latest.version}')
52
+ print(f'Creation Date: {title.latest.pkg.param.creation_date}')
53
+ print(f'System Version: {title.latest.system_version}')
54
+ print(f'Size: {title.latest.update_size}')
55
+ ```
56
+
57
+ #### Console Output
58
+ ```
59
+ Title Id: PPSA07632_00
60
+ Content Id: UP9000-PPSA07632_00-SAROS00000000000
61
+ Name: SAROS
62
+ Version: 01.004.003
63
+ Creation Date: 2026-05-14 00:37:26
64
+ System Version: 13.20.00.06
65
+ Size: 78.27 GiB
66
+ ```
67
+
68
+ ### Create a `PKG` object and retrieve information about a specific update
69
+ ```python
70
+ from ps5_updates import pkg as ps5pkg
71
+
72
+ url = 'https://sgst.prod.dl.playstation.net/sgst/prod/00/PPSA18654_00/app/info/95/f_23e129465f761a049d5477f4f4ec67db738a31927e981faa7ffb5b7eec9cb4c5/UP6312-PPSA18654_00-0220083948426038_sc.pkg'
73
+ pkg = ps5pkg.PKG.from_url(url)
74
+ print(f'Title Id: {pkg.param.title_id}')
75
+ print(f'Content Id: {pkg.param.content_id}')
76
+ print(f'Name: {pkg.param.name}')
77
+ print(f'Version: {pkg.param.content_version}')
78
+ print(f'Creation Date: {pkg.param.creation_date}')
79
+ print(f'System Version: {pkg.param.required_system_version}')
80
+ print(f'Update URL: {pkg.param.version_url}')
81
+ ```
82
+
83
+ #### Console Output
84
+ ```
85
+ Title Id: PPSA18654
86
+ Content Id: UP6312-PPSA18654_00-0220083948426038
87
+ Name: Age of Empires II: Definitive Edition
88
+ Version: 01.029.000
89
+ Creation Date: 2026-04-24 19:24:29
90
+ System Version: 13.00.00.00
91
+ Update URL: https://sgst.prod.dl.playstation.net/sgst/prod/00/np/PPSA18654_00/935e23b3-169e-439b-99d8-ae2b8b534b37-version.xml
92
+ ```
93
+
94
+ ## Development
95
+
96
+ _All commands after step 1 should be run from the root of the git repo_
97
+
98
+ **1. Clone the repo**
99
+ ```
100
+ git clone git@github.com:andshrew/PS5-Updates-Python.git
101
+ ```
102
+ **2. Create and load a virtual python environment**
103
+ ```
104
+ python -m venv .venv
105
+ source .venv/bin/activate
106
+ ```
107
+ **3. Install the package in editable mode**
108
+ ```
109
+ pip install -e ".[test]"
110
+ ```
111
+ **4. Build the package**
112
+ ```
113
+ pip install build
114
+ python -m build
115
+ ```
116
+
117
+ ## Additional Thanks
118
+ [psdevwiki](https://www.psdevwiki.com/ps4) - documentation on [PKG file format](https://www.psdevwiki.com/ps4/PKG_files) and [param.json files](https://www.psdevwiki.com/ps5/Param.json)
@@ -0,0 +1,23 @@
1
+ https://github.com/andshrew/PS4-Updates-Python/blob/v1.1.0/LICENSE
2
+
3
+ MIT License
4
+
5
+ Copyright (c) 2023, 2025 andshrew
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
@@ -0,0 +1,22 @@
1
+ # MIT License
2
+
3
+ # Copyright (c) 2025 andshrew
4
+ # https://github.com/andshrew/PS5-Updates-Python
5
+
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be included in all
14
+ # copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ # SOFTWARE.