Monday, 1 June 2015

Plex Framework 2.5.0 Plugin Manifest

I’ve found that the documentation on the website doesn’t tie up with the API that is currently included with Plex. So here’s the bits of data I’ve gleaned.
The plugins & directory structure of Plex is based around OSX / iOS Bundle Structures. Each plugin has an Info.plist file which is based off Apple’s one (the documentation is here) with some extra properties. Some of these are documented on Plex's site but some were missing. This is a near complete list of them all and what I could work out their purpose to be.
Keys for Info.plist taken from core.py
CFBundleIdentifier Plugin name
PlexPluginClass Type of plugin, default ‘Content’ (but is ‘Channel’ under bundleservices).
Values from constants.py:[‘Content’, ‘Agent’, ‘Channel’, ‘Resource’, ‘System’]
PlexPluginTitle The display name
PlexPluginIconResourceName Default: 'icon-default.png'
PlexPluginArtResourceName Default: 'art-default.jpg'
PlexPluginTitleBarResourceName Default: 'titlebar-default.png'
PlexPluginDevMode 1 or 0. If set to 1, don’t auto update
PlexPluginCodePolicy ‘Standard’ or ‘Elevated’ also ‘cloud’, ‘model’, ‘service’, ‘unpickle’. Default: ‘Standard’
PlexPluginModuleWhitelist optional, only seems to apply to ‘Could’ PluginClass’
PlexPluginAPIExclusions Name of variables/types to exclude from the __main__ globals
PlexPluginConsoleLogging 1 or 0. Whether it should log to the console, handy if you’ve manually started it up.
PlexPluginLogLevel Default is ‘Debug’
PlexAudioCodec optional supported audio codec
PlexVideoCodec optional supported video codec
PlexMediaContainer optional supported media container (file type)
PlexMinimumServerVersion optional
PlexFrameworkFlags ['SystemVerboseLogPeerService', 'UserMyPlexDevServer', 'LogServiceLoads', 'EnableDebugging', 'UseExtendedPython', 'LogMetadataCombination', 'UseRealRTMP', 'LogRouteConnections', 'LogModelClassGeneration', 'LogAllRouteConnections', 'SystemVerboseLogStoreService']
PlexBundleVersion stores the version of the Framework API, only on the Framework.bundle
PlexBundleCompatibleVersion Defaults to ‘2.0a1’
PlexPluginLegacyPrefix defaults to ‘/plugins/’ + plugin.identifier
PlexClientPlatforms Doesn’t appear to be used
PlexClientPlatformExclusions “We use these later to warn users that the channel is unsupported.”
PlexFrameworkVersion Target framework api version to load. set to 2
PlexRelatedContentServices Doesn’t appear to be used
PlexSearchServices
PlexURLServices
The latest version of the Framework as of writing is 2.6.2. I'll regenerate and post some stubs I created in a later post. These stubs allow the python code to compile in Eclipse without errors and also allows autocomplete in the python editor.

No comments:

Post a Comment