Code Monkey home page Code Monkey logo

propresenter7-proto's Introduction

ProPresenter7-Proto

This is a set of unoffical and unsupported .proto files that define the messages (data structures) used in the ProPresenter 7 files that are encoded as Google Protocol Buffers.

Background

One of the things I really loved about ProPresenter 5 and 6 was how easy it was to read and understand the documents and configuration files - both of which are XML. I loved being able to make scripts and programs that could help improve and automate our workflow by working directly with Pro6 documents and also perform my own troubleshooting.

When ProPresenter7 first came out I was a bit surprised to find that the files were no longer easy-to-understand, human readable XML files.
Instead, ProPresenter 7 uses Google "Protocol Buffers" to encode data stored in documents and various configuration files.
(See https://developers.google.com/protocol-buffers for more information.)

Even though the new files encoded with protocol buffers are not human readable, one of the nice things about using protocol buffers is how easy it is to auto-generate code that to work with the files once you have the data structure (messages) defined in human-readable .proto files.

✅ If you have the .proto files, you have everything you need to create, read and update the data files.

That's what you will find in this repository - a set of unofficial .proto files, that I have reverse-engineered, which you can use to auto-generate code that will enable you to read, create and modify ProPresenter 7 data files including:

  • Documents
  • PlayLists
  • Workspace
  • Screens
  • Calendar
  • Masks
  • Props
  • Live Video
  • Looks
  • Recordings

WARNING: These are unofficial, reverse-engineered .proto files created by myself as a user of ProPresenter.

They are NOT created, endorsed or supported by the makers of ProPresenter: Renewed Vision.

In addition to the "usual disclaimers" that should obviously apply, please note the following:

  • If you don't understand what you are doing with these files or you don't have a proven backup and recovery process, you may end up destroying your ProPresenter documents and configuration with no way to recover what you have lost.
  • ⚠️ Do NOT contact Renewed Vision for support!
  • Who knows what else could go wrong if you don't understand how to correctly use these files - You might destroy the computer itself, and all other computers on your network (maybe even the Pastor's Macbook). It's possible you might even be responsible for the destruction of millions of other computers around the world and cause the building you are in to burn down. All kidding aside - be careful when changing ProPresenter files - mistakes can crash/break the application
  • ⚠️ Do NOT contact Renewed Vision for support!

Well that should cover it.

Hopefully you understand what you are doing with these file, and have multiple, good backups of your entire Pro7 configuration and documents and are ready to take full responsibility for your actions/experiments as you now have the power to auto-generate code that can read, write and modify ProPresenter 7 data files!

Example of using with protoc to decode ProPresenter data files.

In addition to using protoc to auto-generate code for handling ProPresenter data files you can also use protoc to decode data files and output a (JSON-like) text representation of the files:

  1. Download protoc command for your system.
  2. Download these .proto files to a folder
  3. Open terminal/console and change to the folder containing the .proto files
  4. To decode a ProPresenter presentation document run:
    protoc --decode rv.data.Presentation ./propresenter.proto < /Path/To/ProPresenter/PresentationFile
  5. To decode a playlist file, run:
    protoc --decode rv.data.PlaylistDocument ./propresenter.proto < /Path/To/ProPresenter/PlaylistFile

You can find more info/example at my blog: https://greyshirtguy.com/blog/propresenter-7-file-format-part-2/

propresenter7-proto's People

Contributors

greyshirtguy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.