{"id":14985748,"url":"https://github.com/dmotte/ui24rsc","last_synced_at":"2025-04-11T22:11:23.390Z","repository":{"id":46093922,"uuid":"503971997","full_name":"dmotte/ui24rsc","owner":"dmotte","description":"🐍 Ui24R Snapshot Converter","archived":false,"fork":false,"pushed_at":"2025-01-04T01:29:45.000Z","size":239,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T18:10:00.149Z","etag":null,"topics":["command","converter","diff","dots","dotted","dotted-format","full","json","mixer","package","pip","pypi","python","snapshot","soundcraft","structured","tree","ui24r","yaml","yml"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/ui24rsc/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmotte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-16T01:25:27.000Z","updated_at":"2025-01-04T01:29:48.000Z","dependencies_parsed_at":"2023-12-13T02:42:58.344Z","dependency_job_id":"4f6f280a-8960-4696-b0df-d7a8b7c24907","html_url":"https://github.com/dmotte/ui24rsc","commit_stats":{"total_commits":33,"total_committers":2,"mean_commits":16.5,"dds":"0.030303030303030276","last_synced_commit":"33edd3cb7f362be017a65158ccc076f2a1e0a564"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmotte%2Fui24rsc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmotte%2Fui24rsc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmotte%2Fui24rsc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmotte%2Fui24rsc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmotte","download_url":"https://codeload.github.com/dmotte/ui24rsc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247867363,"owners_count":21009240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command","converter","diff","dots","dotted","dotted-format","full","json","mixer","package","pip","pypi","python","snapshot","soundcraft","structured","tree","ui24r","yaml","yml"],"created_at":"2024-09-24T14:11:35.246Z","updated_at":"2025-04-11T22:11:23.356Z","avatar_url":"https://github.com/dmotte.png","language":"Python","readme":"# ui24rsc\n\n![device](device.png)\n\n[![GitHub main workflow](https://img.shields.io/github/actions/workflow/status/dmotte/ui24rsc/main.yml?branch=main\u0026logo=github\u0026label=main\u0026style=flat-square)](https://github.com/dmotte/ui24rsc/actions)\n[![PyPI](https://img.shields.io/pypi/v/ui24rsc?logo=python\u0026style=flat-square)](https://pypi.org/project/ui24rsc/)\n\n:snake: **Ui24R** **S**napshot **C**onverter.\n\nThe official Soundcraft Ui24R JSON snapshot export format is very hard to understand and work with; thus, manually editing mixer snapshots from code can be extremely uncomfortable. This Python script lets you convert snapshots exported from the mixer Web UI to other more human-readable formats and vice versa. It can read/write both _JSON_ and _YAML_ documents.\n\n\u003e **Note**: this project is specific for **Soundcraft JSON snapshot format**, a.k.a. \"_Offline Files_\". It does not handle `.uisnapshot` files.\n\n\u003e **Important**: this has been tested with the firmware version **3.3.8293-ui24**.\n\n## Installation\n\nThis utility is available as a Python package on **PyPI**:\n\n```bash\npython3 -mpip install ui24rsc\n```\n\n## Usage\n\nThe first parameter of this command is `ACTIONS`, a **comma-separated sequence of operations** which will be used in order to process the input document and produce the output. See [the code](ui24rsc/cli.py) for more information on what each action does.\n\nThis is a basic example of how to convert from official Soundcraft JSON format to a custom tree-like, human-friendly, differential YAML format:\n\n```bash\npython3 -mui24rsc diff,tree original.json human-friendly.yml\n```\n\nAnd the opposite is:\n\n```bash\npython3 -mui24rsc dots,full human-friendly.yml official.json\n```\n\nFor more details on how to use this command, you can also refer to its help message (`--help`).\n\n## Development\n\nIf you want to contribute to this project, you can install the package in **editable** mode:\n\n```bash\npython3 -mpip install -e . --user\n```\n\nThis will just link the package to the original location, basically meaning any changes to the original package would reflect directly in your environment ([source](https://stackoverflow.com/a/35064498)).\n\nIf you want to run the tests, you'll have to install the `pytest` package and then run:\n\n```bash\npython3 -mpytest test\n```\n\n## Other useful stuff\n\nThe [`default-init.yml`](ui24rsc/default-init.yml) file was built by exporting the `* Init *` snapshot (from the `Default` show of the Soundcraft Ui24R), which should contain the mixer factory default settings, and then executing the following command:\n\n```bash\npython3 -mui24rsc tree,sort default-init.json default-init.yml\n```\n\nIf you want to check that the two files are equivalent, you can install [`jq`](https://stedolan.github.io/jq/) on your PC and then run:\n\n```bash\ndiff \u003c(jq --sort-keys \u003c default-init.json) \u003c(python3 -mui24rsc dots default-init.yml | jq --sort-keys)\n```\n\nIn general, if you want to see the differences between two snapshot files in different formats, you can use the following command:\n\n```bash\ndiff \u003c(jq --sort-keys \u003c snapshot01.json) \u003c(python3 -mui24rsc dots,full snapshot01.yml | jq --sort-keys)\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmotte%2Fui24rsc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmotte%2Fui24rsc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmotte%2Fui24rsc/lists"}