Metadata-Version: 2.1
Name: keynote-parser
Version: 1.0.0
Summary: A packer/unpacker for Apple Keynote presentation files.
Home-page: https://github.com/psobot/keynote-parser
Author: Peter Sobot
Author-email: github@petersobot.com
License: UNKNOWN
Project-URL: Source, https://github.com/psobot/keynote-parser/
Project-URL: Bug Reports, https://github.com/psobot/keynote-parser/issues
Description: # keynote-parser
        
        `keynote-parser` is a Python module for unpacking and re-packing
        [Apple Keynote](https://www.apple.com/keynote/) `.key` files. It supports Keynote
        files generated by Keynote version 8.3 (current as of January 2019).
        
        Keynote uses a proprietary, compressed binary format to store its presentations.
        This format is comprised of a zip file containing images and videos, as well as
        [Snappy](https://github.com/google/snappy)-compressed
        [Protobuf](https://github.com/protocolbuffers/protobuf) `.iwa` files containing
        metadata, text, and all other definitions used in the presentation.
        
        `keynote-parser` unpacks these component files into `.yaml` files in a directory,
        making them editable by text editors and/or scripts, then allows re-packing of these
        files into a working Keynote archive.
        
        What could you use this for? Well, I use it to allow versioning of Keynote files in Git,
        which makes diffs more understandable (rather than binary), as well as modifying text
        in Keynote files in response to external scripts.
        (e.g.: figures that update from databases before giving a presentation)
        
        ## Installation
        
        ```bash
        pip install keynote-parser
        ```
        
        ## Usage
        
        ```bash 
        # Unpack MyPresentation.key into ./MyPresentation/
        keynote-parser MyPresentation.key
        # Re-pack ./MyPresentation/ into MyPresentation.out.key 
        keynote-parser ./MyPresentation/
        
        # Dump a particular .iwa file into its yaml representation on stdout
        keynote-parser ./MyPresentation/Index/test.iwa
        
        # Serialize a .yaml file into its corresponding .iwa file on stdout
        # (this will output binary data on stdout - careful!)
        keynote-parser ./MyPresentation/Index/test.iwa.yaml > test.iwa
        ```
        
        ## Updates
        
        As `keynote-parser` includes private Protobuf definitions extracted from a copy of Keynote,
        new versions of Keynote will inevitably create `.key` files that cannot be read by `keynote-parser`.
        As new versions of Keynote are released, the following steps must be undertaken:
        
        * Run [proto-dump](https://github.com/obriensp/proto-dump) on the new copy of Keynote to dump new Proto files.
          * Any `.` characters in the Protobuf definitions must be changed to `_` characters manually.
        * Connect to a running copy of `Keynote` with `lldb` (or any other debugger) and manually copy
          the results of `[TSPRegistry sharedRegistry]` into `mapping.py`.
          * Versions of macOS >= 10.11 may protect Keynote from being attached to by a debugger -
            to attach, [temporarily disable System IntegrityProtection](https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-macos-os-x)
            to get this data.
        
        ## Credits
        
        `keynote-parser` was built by [Peter Sobot](https://petersobot.com) but heavily based on [prior
        work](https://github.com/obriensp/iWorkFileFormat/blob/master/Docs/index.md) by [Sean Patrick O'Brien](http://www.obriensp.com).
        A copy of O'Brien's format documentation is included in the `docs` folder for posterity.
        
        ## License
        
        All code in this repository is licensed under the MIT License, save for `protobuf_patch.py`, which contains its own license.
        
        ```
        Copyright 2019 Peter Sobot
        
        Permission is hereby granted, free of charge, to any person obtaining a copy of this software
        and associated documentation files (the "Software"), to deal in the Software without restriction,
        including without limitation the rights to use, copy, modify, merge, publish, distribute,
        sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all copies or
        substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
        BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
        NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
        DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
        ```
Keywords: keynote macOS apple presentation powerpoint
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Description-Content-Type: text/markdown
Provides-Extra: test
Provides-Extra: dev
