{ "info": { "author": "Jamie Hardt", "author_email": "jamiehardt@me.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Multimedia", "Topic :: Multimedia :: Video", "Topic :: Text Processing" ], "description": "[![Build Status](https://travis-ci.com/iluvcapra/pycmx.svg?branch=master)](https://travis-ci.com/iluvcapra/pycmx)\n[![codecov](https://codecov.io/gh/iluvcapra/pycmx/branch/master/graph/badge.svg)](https://codecov.io/gh/iluvcapra/pycmx)\n[![Documentation Status](https://readthedocs.org/projects/pycmx/badge/?version=latest)](https://pycmx.readthedocs.io/en/latest/?badge=latest) ![](https://img.shields.io/github/license/iluvcapra/pycmx.svg) ![](https://img.shields.io/pypi/pyversions/pycmx.svg) [![](https://img.shields.io/pypi/v/pycmx.svg)](https://pypi.org/project/pycmx/) ![](https://img.shields.io/pypi/wheel/pycmx.svg)\n\n\n# pycmx\n\nThe `pycmx` package provides a basic interface for parsing a CMX 3600 EDL and its most most common variations.\n\n## Features\n\n* The major variations of the CMX 3600: the standard, \"File32\" and \"File128\" \n formats are automatically detected and properly read.\n* Preserves relationship between events and individual edits/clips.\n* Remark or comment fields with common recognized forms are read and \n available to the client, including clip name and source file data.\n* Symbolically decodes transitions and audio channels.\n* Does not parse or validate timecodes, does not enforce framerates, does not\n parameterize timecode or framerates in any way. This makes the parser more\n tolerant of EDLs with mixed rates.\n* Unrecognized lines are accessible on the `EditList` and `Event` classes\n along with the line numbers, to help the client diagnose problems with a\n list and give the client the ability to extend the package with their own\n parsing code.\n\n## Usage\n\n### Opening and Parsing EDL Files\n```\n>>> import pycmx\n>>> with open(\"tests/edls/TEST.edl\") as f\n... \tedl = pycmx.parse_cmx3600(f)\n...\n>>> edl.title\n'DC7 R1_v8.2'\n```\n\n### Reading Events and Edits\n\n`EditList.events` is a generator...\n\n```\n>>> events = list( edl.events ) \n>>> len(events)\n120\n>>> events[43].number \n'044'\n```\n\n...and events contain 1...n edits.\n\n```\n>>> events[43].edits[0].source_in \n'00:00:00:00'\n>>> events[43].edits[0].transition.cut\nTrue\n>>> events[43].edits[0].record_out\n'01:10:21:10'\n```\n\n### Acessing Transitions and Enabled Channels\n\n``` \n>>> events[41].edits[0].transition.dissolve\nFalse\n>>> events[41].edits[1].transition.dissolve\nTrue\n>>> events[41].edits[0].clip_name\n'TC R1 V1.2 TEMP1 DX M.WAV'\n>>> events[41].edits[1].clip_name\n'TC R1 V6 TEMP2 M DX.WAV'\n\n # parsed channel maps are also\n # available to the client\n>>> events[2].edits[0].channels.get_audio_channel(7)\nTrue\n>>> events[2].edits[0].channels.get_audio_channel(6)\nFalse\n>>> for c in events[2].edits[0].channels.channels:\n... print(f\"Audio channel {c} is present\")\n... \nAudio channel 7 is present\n>>> events[2].edits[0].channels.video\nFalse\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/iluvcapra/pycmx", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pycmx", "package_url": "https://pypi.org/project/pycmx/", "platform": "", "project_url": "https://pypi.org/project/pycmx/", "project_urls": { "Homepage": "https://github.com/iluvcapra/pycmx" }, "release_url": "https://pypi.org/project/pycmx/1.0.1/", "requires_dist": null, "requires_python": "", "summary": "CMX 3600 Edit Decision List Parser", "version": "1.0.1" }, "last_serial": 5692694, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "403e4cfa0be0c6bf7b7fd34a18b5edc3", "sha256": "a1064e3fadd48a6fec01d51af239e40409df52964f74a5bf9b1774c7b3325246" }, "downloads": -1, "filename": "pycmx-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "403e4cfa0be0c6bf7b7fd34a18b5edc3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4654, "upload_time": "2018-11-29T22:58:53", "url": "https://files.pythonhosted.org/packages/bc/81/995fd10914413d584a21674182db97a24f59872c2bfe33e4ddbfb940ac38/pycmx-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b9d7262837461ffd94ec5a7a2e7c9e5", "sha256": "0762929b9878ef21897f053246cb1847eb786e8ac8bc662ee55f50319dae8b83" }, "downloads": -1, "filename": "pycmx-0.1.tar.gz", "has_sig": false, "md5_digest": "3b9d7262837461ffd94ec5a7a2e7c9e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3202, "upload_time": "2018-11-29T22:58:55", "url": "https://files.pythonhosted.org/packages/2a/43/27ba0fdc6cd4e22d7f5a090330a06f3681752addec6963f25c2af97f0d9a/pycmx-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "e1616b514e671ab6fe13641b4a790829", "sha256": "6d838870f41c5801412a16141ed75f170e2759163ccaede16e589215a9bf549c" }, "downloads": -1, "filename": "pycmx-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e1616b514e671ab6fe13641b4a790829", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6831, "upload_time": "2018-11-30T20:28:28", "url": "https://files.pythonhosted.org/packages/c0/b8/9f95f540b4879b363c8343933d01eae4e0e22b83fdb7cb9463777f8bdb3e/pycmx-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b007e6467672044e1e7c9a35e2e2fcf", "sha256": "19e63ee63ff9c289a1a5646cacade6083c312dd9eed9f17bad0a48a57fc13100" }, "downloads": -1, "filename": "pycmx-0.2.tar.gz", "has_sig": false, "md5_digest": "4b007e6467672044e1e7c9a35e2e2fcf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4722, "upload_time": "2018-11-30T20:28:30", "url": "https://files.pythonhosted.org/packages/f2/7a/02d44c3ecf8b3b81d6f03062919aace9b5dff339666ddefbaf4d4d34a806/pycmx-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "869c84f02011db1c4a36d9a35682b9a0", "sha256": "a5b6a9ded461cd00c7eadc807ff9bec220ade31cab3ed77e8570fa53259cf67c" }, "downloads": -1, "filename": "pycmx-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "869c84f02011db1c4a36d9a35682b9a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7189, "upload_time": "2018-12-01T20:38:58", "url": "https://files.pythonhosted.org/packages/d6/32/db6b2c1ee596f53affd182e5eb212f3bff500c5df1b04181ba31f6448762/pycmx-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "12f68022ccfceb36fb0c54fc2dcef594", "sha256": "4ba3dc2f840d225b020717d0faabeade42194d17a6b15a467f40d60c993f26f2" }, "downloads": -1, "filename": "pycmx-0.3.tar.gz", "has_sig": false, "md5_digest": "12f68022ccfceb36fb0c54fc2dcef594", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5066, "upload_time": "2018-12-01T20:39:00", "url": "https://files.pythonhosted.org/packages/9e/4f/a149e25eac29fb0496be401f1d98a717a54eb053671233fdb15af686dc4c/pycmx-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "c827acf6d597cc1145dd81583f853621", "sha256": "1273d94e0d005a81bb6341ef92b1a42de8ece4a1cfb1ef84ecc58332aed1f946" }, "downloads": -1, "filename": "pycmx-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c827acf6d597cc1145dd81583f853621", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7157, "upload_time": "2018-12-01T20:56:43", "url": "https://files.pythonhosted.org/packages/16/de/75ed1629774b68b8f924283883ffbda9f952dd8782e1458931429121a28b/pycmx-0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f60c534588f9189bd287a4bbbd62cb03", "sha256": "152186a43ad2d66e72c9e519c7618b2ac7f2c3cbc2f78394514471a941f84374" }, "downloads": -1, "filename": "pycmx-0.4.tar.gz", "has_sig": false, "md5_digest": "f60c534588f9189bd287a4bbbd62cb03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5033, "upload_time": "2018-12-01T20:56:44", "url": "https://files.pythonhosted.org/packages/20/67/fedbc26b3c69efd057d2db3d546dc95f00054d92fc53198492daa6350563/pycmx-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "011fe081e3aaec45d38d961e1f84f2a1", "sha256": "83ff54308b9a959c0bad8ff590a6c9051aab24304f6f459aa0d8b3dfbca3298d" }, "downloads": -1, "filename": "pycmx-0.5-py3.7.egg", "has_sig": false, "md5_digest": "011fe081e3aaec45d38d961e1f84f2a1", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 13865, "upload_time": "2018-12-06T00:53:01", "url": "https://files.pythonhosted.org/packages/ff/df/6e431d11ab9c1b0e07fe26f229cacf6b5522c8999b945f24d954fc005a97/pycmx-0.5-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "65ffedc2ff135b162fd65aa0e7f7ac1f", "sha256": "ed3b55c474b1583cc9196d24260d10108d36b57e1bc1873ca7e751b6fce08ed2" }, "downloads": -1, "filename": "pycmx-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "65ffedc2ff135b162fd65aa0e7f7ac1f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7576, "upload_time": "2018-12-06T00:53:00", "url": "https://files.pythonhosted.org/packages/a9/44/a6fbe198c0cd695c9a30c21bcbabeb414c768beb92a1a7c76ef149e004b6/pycmx-0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "683678b03f6d316eb049550f4c1850b7", "sha256": "0c7ab1ec1cc99e25191d945bfd0ae13fbb3b9245c8e89feace6861feb4d1788a" }, "downloads": -1, "filename": "pycmx-0.5.tar.gz", "has_sig": false, "md5_digest": "683678b03f6d316eb049550f4c1850b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5625, "upload_time": "2018-12-06T00:53:03", "url": "https://files.pythonhosted.org/packages/47/73/a78c37020e6d639525fe6711c6399a2cab39a61c3eeff6ba34be1a3e23f4/pycmx-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "bd13f9d285ed331720bd3124ab27a5f6", "sha256": "ff73fe71bad28357c86209121c309a005b1f44cdc558575aeb2990f5d123baf6" }, "downloads": -1, "filename": "pycmx-0.6-py3.7.egg", "has_sig": false, "md5_digest": "bd13f9d285ed331720bd3124ab27a5f6", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 20329, "upload_time": "2018-12-25T00:08:59", "url": "https://files.pythonhosted.org/packages/1d/d2/26d13bd2faa0e6f4ff947e6056387a91b28c0a91891d080c00dac0d4e4f1/pycmx-0.6-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "2612dfb070ba9ebcf9f1d709cbeefd37", "sha256": "7160ab2f8a026fe906857f10bb4c058a68761f242bf61ea3330248f9220976ec" }, "downloads": -1, "filename": "pycmx-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "2612dfb070ba9ebcf9f1d709cbeefd37", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11091, "upload_time": "2018-12-25T00:08:58", "url": "https://files.pythonhosted.org/packages/73/97/271a065ff6bfd7328e086bc50f44dac9c13698dc24e36721bd3d2aaf53ee/pycmx-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b649fb2d4b23dd0a2c7542f91713328", "sha256": "da379deb35de70d8bb539f364ddae7f9a68e0198700d38d5e158fb79675770dd" }, "downloads": -1, "filename": "pycmx-0.6.tar.gz", "has_sig": false, "md5_digest": "2b649fb2d4b23dd0a2c7542f91713328", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6341, "upload_time": "2018-12-25T00:09:01", "url": "https://files.pythonhosted.org/packages/03/79/7962fb302e4b86be42852621ac67e9e195c837fa328c52cb2530591f895b/pycmx-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "7868b3f8699b96cb6bd618071de7e4dc", "sha256": "a0baf5abcfa3a9427a72507ecca081b48176a4022dbdd4a3c78f4b9305d65691" }, "downloads": -1, "filename": "pycmx-0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "7868b3f8699b96cb6bd618071de7e4dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12503, "upload_time": "2018-12-27T06:34:37", "url": "https://files.pythonhosted.org/packages/78/0b/a5f739ece5ddc2ef005689b6680453d3a79fc491f1bb9255f565899431d0/pycmx-0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24ec20660635d71225e61fe539ae6750", "sha256": "5adb4f98cb59b533ca9192111ef5f316a9af2599dd7d013657d91e2f06dcff56" }, "downloads": -1, "filename": "pycmx-0.7.tar.gz", "has_sig": false, "md5_digest": "24ec20660635d71225e61fe539ae6750", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8401, "upload_time": "2018-12-27T06:34:39", "url": "https://files.pythonhosted.org/packages/c0/81/d2cd55cb404b848ca7b40b1dee0423db5c7b6bbf3da79510907947574381/pycmx-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "286599a105d61f3b88503aae46bf29d5", "sha256": "4557f17dbdfe3e2131f3b3939e003d21efe0cf5980db76a1f234f37f2a8e2b15" }, "downloads": -1, "filename": "pycmx-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "286599a105d61f3b88503aae46bf29d5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14140, "upload_time": "2018-12-29T22:12:34", "url": "https://files.pythonhosted.org/packages/d0/ba/d4c5b2c9f2f788b653b4ddc33771ae5278fd608bb5f80cf69bedb3d1c23c/pycmx-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e14a80e03cd86470a94f820da80638f", "sha256": "bf43bf0c625e99ae562fb0adf3e3d0edf6a4edea9441c19993cebaec72cc448c" }, "downloads": -1, "filename": "pycmx-0.8.tar.gz", "has_sig": false, "md5_digest": "1e14a80e03cd86470a94f820da80638f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10132, "upload_time": "2018-12-29T22:12:36", "url": "https://files.pythonhosted.org/packages/f8/71/a00347b01a0ee963b2baa41dad1455a9f897551ec44be7d8e4a6eb8c137d/pycmx-0.8.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "808ee13fd0601c78544fc9b72082b38c", "sha256": "b237327ea7b2a214967f68460ba01c59d05db79c6f342919803fbf0121260307" }, "downloads": -1, "filename": "pycmx-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "808ee13fd0601c78544fc9b72082b38c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14157, "upload_time": "2019-01-04T03:38:54", "url": "https://files.pythonhosted.org/packages/c5/31/a27fcb5198544fbfde500dc0c669f05042612e40f9b680c06045f4d7945a/pycmx-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed0c4a5d64cd841efe500efb50fa5387", "sha256": "002f0b4ccbcb1464d3963a4347eb6d6755b6437d7103337dc12806ff93959c29" }, "downloads": -1, "filename": "pycmx-1.0.tar.gz", "has_sig": false, "md5_digest": "ed0c4a5d64cd841efe500efb50fa5387", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9663, "upload_time": "2019-01-04T03:38:56", "url": "https://files.pythonhosted.org/packages/0d/66/a05f15c8474fc71e07732aa06d77d3b8bfc15156f16c0ec53ab23d9e588d/pycmx-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "30c9dd342622da4b5d230cf18caf5718", "sha256": "5103008f96cd1d9a4ffc60e2895e674164c348e4c3aa25c355edcfaadc2e9b14" }, "downloads": -1, "filename": "pycmx-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "30c9dd342622da4b5d230cf18caf5718", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14053, "upload_time": "2019-08-17T20:08:20", "url": "https://files.pythonhosted.org/packages/93/a6/f006210ef9f133115b11344ffc8feca442ec7ffa1c639092407cffb2758d/pycmx-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62e71b90dab126751a2fe53d9fb2a056", "sha256": "e5a2b4c2ab4a3d55573f11f969085fc3533401a8979a30450c39ae531dd1bdc6" }, "downloads": -1, "filename": "pycmx-1.0.1.tar.gz", "has_sig": false, "md5_digest": "62e71b90dab126751a2fe53d9fb2a056", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9407, "upload_time": "2019-08-17T20:08:22", "url": "https://files.pythonhosted.org/packages/33/36/345ed167ee6dd628cb488f811a4acd3f6e62a0351c3f042859254cacee5e/pycmx-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "30c9dd342622da4b5d230cf18caf5718", "sha256": "5103008f96cd1d9a4ffc60e2895e674164c348e4c3aa25c355edcfaadc2e9b14" }, "downloads": -1, "filename": "pycmx-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "30c9dd342622da4b5d230cf18caf5718", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14053, "upload_time": "2019-08-17T20:08:20", "url": "https://files.pythonhosted.org/packages/93/a6/f006210ef9f133115b11344ffc8feca442ec7ffa1c639092407cffb2758d/pycmx-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62e71b90dab126751a2fe53d9fb2a056", "sha256": "e5a2b4c2ab4a3d55573f11f969085fc3533401a8979a30450c39ae531dd1bdc6" }, "downloads": -1, "filename": "pycmx-1.0.1.tar.gz", "has_sig": false, "md5_digest": "62e71b90dab126751a2fe53d9fb2a056", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9407, "upload_time": "2019-08-17T20:08:22", "url": "https://files.pythonhosted.org/packages/33/36/345ed167ee6dd628cb488f811a4acd3f6e62a0351c3f042859254cacee5e/pycmx-1.0.1.tar.gz" } ] }