[](https://github.com/iluvcapra/py-ptsl/actions/workflows/lint_and_pytest.yml)
[](https://codecov.io/gh/iluvcapra/py-ptsl)
[](https://py-ptsl.readthedocs.io/en/latest/?badge=latest)

 [](https://pypi.org/project/py-ptsl/) 
[](https://github.com/iluvcapra/py-ptsl/blob/master/docs/source/ptsl_versions.rst)
[](https://github.com/iluvcapra/py-ptsl/blob/master/docs/source/ptsl_versions.rst)
# py-ptsl
Native Python PTSL (Pro Tools Scripting Library) RPC interface
## Important Notice!
This software is developed by enthusiasts and is not a work of or supported by
Avid. Developers who wish to contribute to this project should obtain the PTSL
SDK [from Avid's Developer site](https://developer.avid.com) for the most
current documentation and protobuf source files.
## Example
See the [examples directory](examples) for scripts demonstrating how to use the
client.
- [session_info.py](examples/session_info.py) - This example
prints a list of gettable properties from the currently-open
session.
- [print_tracks.py](examples/print_tracks.py) - This example prints
a list of every track in the currently-open session, including state
information like selection, mute and solo state, track color and
track ID.
- [make_session.py](examples/make_session.py) - Creates a new
session interactively from the terminal.
- [pt_set.py](examples/pt_set.py) - Allows several session setup
options to be set from the terminal.
- [pt_pasteboard.py](examples/pt_pasteboard.py) - Demonstrates
triggering cut/copy/paste actions.
- [toolshell.py](examples/toolshell.py) - Implements a command line
interface for Pro Tools.
### Sending Commands To Pro Tools with the `Engine` class
The `Engine` class exposes `ptsl` commands with a method call interface.
```python
from ptsl import open_engine
with open_engine(company_name="MY_COMPANY", application_name="MY_TOOL") as engine:
session_name = engine.session_name()
```
### Sending Commands to Pro Tools from the Command Line
The module implements a main function that can be called from the shell. Pass
request JSON to the standard input and any response will be passed to standard
output.
```bash
bash-3.2$ poetry run python3 -m ptsl GetTrackList <<JSON
{"pagination_request": {
"limit": 100, "offset": 0
},
"track_filter_list": [
{"filter": 0, "is_inverted": false}
]
}
JSON
{'pagination_response': {'total': 4, 'offset': 0, 'limit': 100}, 'track_list':
[{'name': 'Au dio 1', 'type': 'TT_Audio', 'format': 'TF_Mono', ...
```
```bash
bash-3.2$ poetry run python3 -m ptsl -n GetPTSLVersion
{"version": 2025}
```
Raw data
{
"_id": null,
"home_page": null,
"name": "py-ptsl",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "pro tools, scripting, grpc, automation, avid",
"author": "Jamie Hardt",
"author_email": "jamiehardt@me.com",
"download_url": "https://files.pythonhosted.org/packages/c4/83/34afcaf3c061a71f8e839b5eb3f3f9bbba357e3a7480b9fb53ac46484813/py_ptsl-600.1.0.tar.gz",
"platform": null,
"description": "[](https://github.com/iluvcapra/py-ptsl/actions/workflows/lint_and_pytest.yml)\n[](https://codecov.io/gh/iluvcapra/py-ptsl)\n[](https://py-ptsl.readthedocs.io/en/latest/?badge=latest)\n\n\n [](https://pypi.org/project/py-ptsl/) \n\n[](https://github.com/iluvcapra/py-ptsl/blob/master/docs/source/ptsl_versions.rst)\n[](https://github.com/iluvcapra/py-ptsl/blob/master/docs/source/ptsl_versions.rst)\n\n# py-ptsl\n\nNative Python PTSL (Pro Tools Scripting Library) RPC interface\n\n## Important Notice! \n\nThis software is developed by enthusiasts and is not a work of or supported by \nAvid. Developers who wish to contribute to this project should obtain the PTSL \nSDK [from Avid's Developer site](https://developer.avid.com) for the most \ncurrent documentation and protobuf source files.\n\n## Example\n\nSee the [examples directory](examples) for scripts demonstrating how to use the\nclient.\n\n- [session_info.py](examples/session_info.py) - This example \n prints a list of gettable properties from the currently-open\n session.\n- [print_tracks.py](examples/print_tracks.py) - This example prints\n a list of every track in the currently-open session, including state\n information like selection, mute and solo state, track color and \n track ID.\n- [make_session.py](examples/make_session.py) - Creates a new\n session interactively from the terminal.\n- [pt_set.py](examples/pt_set.py) - Allows several session setup\n options to be set from the terminal.\n- [pt_pasteboard.py](examples/pt_pasteboard.py) - Demonstrates\n triggering cut/copy/paste actions.\n- [toolshell.py](examples/toolshell.py) - Implements a command line \n interface for Pro Tools.\n\n\n### Sending Commands To Pro Tools with the `Engine` class\n\nThe `Engine` class exposes `ptsl` commands with a method call interface.\n\n```python\nfrom ptsl import open_engine\n\nwith open_engine(company_name=\"MY_COMPANY\", application_name=\"MY_TOOL\") as engine:\n session_name = engine.session_name()\n```\n### Sending Commands to Pro Tools from the Command Line\n\nThe module implements a main function that can be called from the shell. Pass\nrequest JSON to the standard input and any response will be passed to standard\noutput.\n\n```bash\nbash-3.2$ poetry run python3 -m ptsl GetTrackList <<JSON \n{\"pagination_request\": {\n \"limit\": 100, \"offset\": 0\n },\n\"track_filter_list\": [\n {\"filter\": 0, \"is_inverted\": false}\n ]\n}\nJSON\n{'pagination_response': {'total': 4, 'offset': 0, 'limit': 100}, 'track_list':\n[{'name': 'Au dio 1', 'type': 'TT_Audio', 'format': 'TF_Mono', ...\n```\n\n```bash\nbash-3.2$ poetry run python3 -m ptsl -n GetPTSLVersion\n{\"version\": 2025}\n```\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Native Python PTSL (Pro Tools Scripting Library) RPC interface",
"version": "600.1.0",
"project_urls": {
"Tracker": "https://github.com/iluvcapra/py-ptsl/issues"
},
"split_keywords": [
"pro tools",
" scripting",
" grpc",
" automation",
" avid"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "acb31081855206754dc5e9ffa3ee14f6aae4bb86292f3fe9aec7ee8f53516fea",
"md5": "fad749b39c659e39421ebbe23181dc8a",
"sha256": "3d31222706b12e74b306450fd93b9c1fd51d4ac6d6aaada9eebb746e119771e1"
},
"downloads": -1,
"filename": "py_ptsl-600.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fad749b39c659e39421ebbe23181dc8a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 101189,
"upload_time": "2025-10-08T19:37:33",
"upload_time_iso_8601": "2025-10-08T19:37:33.502165Z",
"url": "https://files.pythonhosted.org/packages/ac/b3/1081855206754dc5e9ffa3ee14f6aae4bb86292f3fe9aec7ee8f53516fea/py_ptsl-600.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c48334afcaf3c061a71f8e839b5eb3f3f9bbba357e3a7480b9fb53ac46484813",
"md5": "b7a1faa33dd32758e795803fa645e625",
"sha256": "2ba9f53e9f001b4b3fdc928053310a596ca155dc39499562bba0fac75a53fc01"
},
"downloads": -1,
"filename": "py_ptsl-600.1.0.tar.gz",
"has_sig": false,
"md5_digest": "b7a1faa33dd32758e795803fa645e625",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 81292,
"upload_time": "2025-10-08T19:37:35",
"upload_time_iso_8601": "2025-10-08T19:37:35.107568Z",
"url": "https://files.pythonhosted.org/packages/c4/83/34afcaf3c061a71f8e839b5eb3f3f9bbba357e3a7480b9fb53ac46484813/py_ptsl-600.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-08 19:37:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "iluvcapra",
"github_project": "py-ptsl",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "py-ptsl"
}