Python CMX 3600 Edit Decision List Parser
Project description
pycmx
The pycmx package parses a CMX 3600 EDL and its most most common variations.
Features
- The major variations of the CMX 3600: the standard, "File32", "File128" and long Adobe Premiere event numbers are automatically detected and properly read. Event number field and source name field sizes are determined dynamically for each statement for a high level of compliance at the expense of strictness.
- A more relaxed "tolerant" mode allows parsing of an EDL file where columns use non-standard widths.
- Preserves relationship between events and individual edits/clips.
- Remark or comment fields with common recognized forms are read and available to the client, including clip name and source file data.
- ASC CDL and FRMC/VFX framecount statements are parsed and decoded.
- Symbolically decodes transitions and audio channels.
- Does not parse or validate timecodes, does not enforce framerates, does not parameterize timecode or framerates in any way. This makes the parser more tolerant of EDLs with mixed rates.
- Unrecognized lines are accessible on the
EditListandEventclasses along with the line numbers, to help the client diagnose problems with a list and give the client the ability to extend the package with their own parsing code.
Usage
Opening and Parsing EDL Files
>>> import pycmx
>>> with open("tests/edls/TEST.edl") as f:
... edl = pycmx.parse_cmx3600(f)
...
>>> edl.title
'DC7 R1_v8.2'
Reading Events and Edits
EditList.events is a generator...
>>> events = list( edl.events )
>>> len(events)
120
>>> events[43].number
'044'
...and events contain 1...n edits.
>>> events[43].edits[0].source_in
'00:00:00:00'
>>> events[43].edits[0].transition.cut
True
>>> events[43].edits[0].record_out
'01:10:21:10'
Acessing Transitions and Enabled Channels
>>> events[41].edits[0].transition.dissolve
False
>>> events[41].edits[1].transition.dissolve
True
>>> events[41].edits[0].clip_name
'TC R1 V1.2 TEMP1 DX M.WAV'
>>> events[41].edits[1].clip_name
'TC R1 V6 TEMP2 M DX.WAV'
# parsed channel maps are also
# available to the client
>>> events[2].edits[0].channels.get_audio_channel(7)
True
>>> events[2].edits[0].channels.get_audio_channel(6)
False
>>> for c in events[2].edits[0].channels.channels:
... print(f"Audio channel {c} is present")
...
Audio channel 7 is present
>>> events[2].edits[0].channels.video
False
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pycmx-1.5.0.tar.gz.
File metadata
- Download URL: pycmx-1.5.0.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21c5123d8331f7a630d0703b93750a083f7c788e1a156cad16feec52ffe9a390
|
|
| MD5 |
60183fde8481b34dfa0bec9d99df673c
|
|
| BLAKE2b-256 |
dd5088daedafae620e97d39f367716a4d67a9d7127c3fa146f705a18241211c4
|
Provenance
The following attestation bundles were made for pycmx-1.5.0.tar.gz:
Publisher:
pythonpublish.yml on iluvcapra/pycmx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pycmx-1.5.0.tar.gz -
Subject digest:
21c5123d8331f7a630d0703b93750a083f7c788e1a156cad16feec52ffe9a390 - Sigstore transparency entry: 913548505
- Sigstore integration time:
-
Permalink:
iluvcapra/pycmx@688402d195f14d5e5d964b03fff7c7b66b59ad62 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/iluvcapra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pythonpublish.yml@688402d195f14d5e5d964b03fff7c7b66b59ad62 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pycmx-1.5.0-py3-none-any.whl.
File metadata
- Download URL: pycmx-1.5.0-py3-none-any.whl
- Upload date:
- Size: 15.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
543863c6949ec97e3db97edbef6ea8bb8a3745bc86e6477944a3de7735043b95
|
|
| MD5 |
9fb3a60df9cc0618314303af8afe8e00
|
|
| BLAKE2b-256 |
4f559fddc175afaa2684ab0223f2a769f2264ee56a566725a2b4041efbb8535b
|
Provenance
The following attestation bundles were made for pycmx-1.5.0-py3-none-any.whl:
Publisher:
pythonpublish.yml on iluvcapra/pycmx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pycmx-1.5.0-py3-none-any.whl -
Subject digest:
543863c6949ec97e3db97edbef6ea8bb8a3745bc86e6477944a3de7735043b95 - Sigstore transparency entry: 913548560
- Sigstore integration time:
-
Permalink:
iluvcapra/pycmx@688402d195f14d5e5d964b03fff7c7b66b59ad62 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/iluvcapra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pythonpublish.yml@688402d195f14d5e5d964b03fff7c7b66b59ad62 -
Trigger Event:
release
-
Statement type: