Skip to main content

Python CMX 3600 Edit Decision List Parser

Project description

Documentation Status GitHub last commit Lint and Test

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 EditList and Event classes 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycmx-1.5.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pycmx-1.5.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

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

Hashes for pycmx-1.5.0.tar.gz
Algorithm Hash digest
SHA256 21c5123d8331f7a630d0703b93750a083f7c788e1a156cad16feec52ffe9a390
MD5 60183fde8481b34dfa0bec9d99df673c
BLAKE2b-256 dd5088daedafae620e97d39f367716a4d67a9d7127c3fa146f705a18241211c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pycmx-1.5.0.tar.gz:

Publisher: pythonpublish.yml on iluvcapra/pycmx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for pycmx-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 543863c6949ec97e3db97edbef6ea8bb8a3745bc86e6477944a3de7735043b95
MD5 9fb3a60df9cc0618314303af8afe8e00
BLAKE2b-256 4f559fddc175afaa2684ab0223f2a769f2264ee56a566725a2b4041efbb8535b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pycmx-1.5.0-py3-none-any.whl:

Publisher: pythonpublish.yml on iluvcapra/pycmx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page