Metadata-Version: 1.2
Name: clairmeta
Version: 1.1.0
Summary: Digital Cinema Package (DCP) probing and checking utility
Home-page: https://github.com/Ymagis/ClairMeta
Author: Ymagis
Author-email: support.sol@ymagis.com
License: BSD
Description: |Build Status| |PyPI version| |Code coverage|
        
        Clairmeta
        =========
        
        Clairmeta is a python package for Digital Cinema Package (DCP) probing
        and checking.
        
        Features
        --------
        
        -  DCP Probe : metadata extraction of the whole DCP, including all XML
           fields and MXF assets inspection.
        -  DCP Checker : advanced DCP validation tool, including (non
           exhaustive) :
        
           -  SMPTE / Interop standard convention (naming, …)
           -  Integrity (MIME type, size, hash) of all assets
           -  Foreign file identification
           -  XSD Schema validation for XML files (VOLINDEX, ASSETMAP, CPL, PKL)
           -  Digital signature validation (CPL, PKL)
           -  Intra / Inter Reels integrity and coherence
           -  Metadata match between CPL assets and MXF headers
           -  Re-link VF / OV
           -  Picture tests : FrameRate, BitRate, …
           -  Sound tests : Channels, Sampling, …
           -  Subtitle : Deep inspection of Interop and SMPTE subtitles
        
        -  DSM / DCDM Checker : basic image file sequence validation with some
           specific rules.
        
        Installation
        ------------
        
        Requirements :
        
        -  Python :
        
           -  Should work on python 2.7 and python 3.3+
           -  Tested on : python 2.7, python 3.6
        
        -  Platform :
        
           -  Should work on Windows, macOS, Linux
           -  Tested on : macOS 10.12
        
        -  External (non-python) dependencies :
        
           -  asdcplib
           -  mediainfo (opt)
           -  sox (opt)
        
        Install from PyPI package (reminder : this does not install external dependencies):
        
        ::
        
            pip install clairmeta
        
        Install from Debian package (all requirements will be automatically installed):
        
        ::
        
            # Optional : add Bintray public key
            apt-get install dirmngr
            gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 379CE192D401AB61
            gpg --export --armor 379CE192D401AB61 | apt-key add -
        
            # Add Clairmeta repository to apt sources
            # Replace <distro> appropriately
            # Ubuntu 14.04 : use trusty
            # Ubuntu 16.04 : use xenial
            # Ubuntu 17.04 : use artful
            # Ubuntu 18.04 : use bionic
            echo "deb https://dl.bintray.com/ymagis/Clairmeta <distro> main" | sudo tee /etc/apt/sources.list.d/clairmeta.list
        
            sudo apt-get update
            sudo apt-get install python3-clairmeta
        
        Usage
        -----
        
        General
        ~~~~~~~
        
        As a command line tool :
        
        ::
        
            python3 -m clairmeta.cli probe -type dcp path/to/dcp
            python3 -m clairmeta.cli probe -type dcp path/to/dcp -format json > dcp.json
            python3 -m clairmeta.cli probe -type dcp path/to/dcp -format xml > dcp.xml
            python3 -m clairmeta.cli check -type dcp path/to/dcp
            python3 -m clairmeta.cli check -type dcp path/to/dcp -kdm /path/to/kdm -key /path/to/privatekey
            python3 -m clairmeta.cli check -type dcp path/to/dcp -progress
        
        As a python library :
        
        ::
        
            from clairmeta import DCP
        
            dcp = DCP("path/to/dcp")
            # Parse DCP
            dcp.parse()
            # Check DCP
            status, report = dcp.check()
            # Check DCP VF against OV
            status, report = dcp.check(ov_path="/path/to/dcp_ov")
        
            # Check DCP with default console progression report
            from clairmeta.utils.file import ConsoleProgress
            status, report = dcp.check(hash_callback=ConsoleProgress())
            # Alternatives
            # - function matching utils.file.ConsoleProgress.__call__ signature
            # - derived class from utils.file.ConsoleProgress
        
        Profiles
        ~~~~~~~~
        
        Check profile allow custom configuration of the DCP check process such
        as bypassing some unwanted tests or criteria specification. To
        implement a check profile, simply write a JSON file derived from this
        template (actual content listed below is for demonstration purposes only) :
        
        -  *criticality* key allow custom criteria level specification, check
           name can be incomplete to quickly ignore a bunch of tests, *default* is
           used if no other match where found.
        -  *bypass* key allow specific test
           bypassing, incomplete names are not allowed.
        
        ::
        
            {
                "criticality": {
                    "default": "ERROR",
                    "check_dcnc_": "WARNING",
                    "check_cpl_reel_duration_picture_subtitles": "WARNING",
                    "check_picture_cpl_avg_bitrate": "WARNING",
                    "check_picture_cpl_resolution": "WARNING"
                },
                "bypass": ["check_assets_pkl_hash"]
            }
        
        Custom profile check :
        
        ::
        
            python3 -m clairmeta.cli check -type dcp path/to/dcp -profile path/to/profile.json
        
        ::
        
            from clairmeta import DCP
            from clairmeta.profile import load_profile
        
            dcp = DCP("path/to/dcp")
            profile = load_profile("/path/to/profile.json")
            status, report = dcp.check(profile=profile)
        
        Logging
        ~~~~~~~
        
        Logging is customizable, see settings.py file or below. By default Clairmeta
        logs to stdout and a rotated log file.
        
        ::
        
            'level': 'INFO'  # Minimum log level
            'enable_console': True  # Enable / Disable stdout logging
            'enable_file': True  # Enable / Disable file logging
            'file_name': '/log/path/clairmeta.log'  # Log file absolute path
            'file_size': 1e6  # Individual log file maximum size
            'file_count': 10  # Number of files to rotate on
        
        Contributing
        ------------
        
        -  To setup your environment, use pipenv :
        
        ::
        
           pip install pipenv
           git clone https://github.com/Ymagis/ClairMeta.git
           cd clairmeta
           pipenv install --dev [–two]
           pipenv check
           # Enter virtual environment
           pipenv shell
           # Code...
           # Get tests resources
           git clone https://github.com/Ymagis/ClairMeta_Data tests/resources
           # Run tests
           nosetests --nocapture --with-doctest --doctest-options=+ELLIPSIS --with-coverage --cover-package=clairmeta
           # Leave virtual environment
           exit
        
        -  Open a Pull Request
        -  Open an Issue
        
        Changes
        -------
        
        The release changes are available on Github:
        https://github.com/Ymagis/ClairMeta/releases
        
        References
        ----------
        
        The following sources / software were used :
        
        -  asdcp-lib : http://www.cinecert.com/asdcplib/
        -  sox : http://sox.sourceforge.net/
        -  mediainfo : https://mediaarea.net/
        -  SMPTE Digital Cinema standards : https://www.smpte.org/
        -  Interop Digital Cinema specifications : https://cinepedia.com/interop/
        -  Digital Cinema Initiative specifications : http://www.dcimovies.com/specification/index.html
        -  ISDCF Naming Convention : http://isdcf.com/dcnc/
        -  Texas Instrument Digital Cinema Subtitles specifications
        
        About
        -----
        
        http://www.ymagis.com/
        
        .. |Build Status| image:: https://travis-ci.org/Ymagis/ClairMeta.svg?branch=1.0.0b1
           :target: https://travis-ci.org/Ymagis/ClairMeta
        .. |PyPI version| image:: https://badge.fury.io/py/clairmeta.svg
           :target: https://badge.fury.io/py/clairmeta
        .. |Code coverage| image:: https://codecov.io/gh/Ymagis/ClairMeta/branch/develop/graph/badge.svg
          :target: https://codecov.io/gh/Ymagis/ClairMeta
Keywords: digital cinema dcp dcdm dsm check probe smpte interop
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Utilities
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
