from enum import Enum
|
|
from yapsy.IPlugin import IPlugin
|
|
|
|
|
|
class PluginTypes(Enum):
|
|
"""Plugin Types possibles to instantiate in this program."""
|
|
ALL = "All"
|
|
INTERFACE = "Interface"
|
|
PLATFORM = "Platform"
|
|
CONSUMER = "Consumer"
|
|
|
|
|
|
class IPrismediaBasePlugin(IPlugin):
|
|
"""
|
|
Base for prismedia’s plugin.
|
|
"""
|
|
|
|
def prepare_options(self, video, options):
|
|
"""
|
|
Return a falsy value to exit the program.
|
|
- `video`: video object to be uploaded
|
|
- `options`: a dictionary of options to be used by Prismedia and other plugins
|
|
"""
|
|
raise NotImplementedError("`prepare_options` must be reimplemented by %s" % self)
|
|
|
|
|
|
###
|
|
# Interface
|
|
###
|
|
class IInterfacePlugin(IPrismediaBasePlugin):
|
|
"""
|
|
Interface for the Interface plugin category.
|
|
"""
|
|
|
|
# TODO: Add callback for communicating upload’s progress to the user
|
|
|
|
|
|
###
|
|
# Platform
|
|
###
|
|
class IPlatformPlugin(IPrismediaBasePlugin):
|
|
"""
|
|
Interface for the Platform plugin category.
|
|
"""
|
|
|
|
def heartbeat(self):
|
|
"""
|
|
If needed for your platform, use a bit of the api so the platform is aware the keys are still in use.
|
|
"""
|
|
raise NotImplementedError("`heartbeat` must be reimplemented by %s" % self)
|
|
|
|
def upload(self, video, options):
|
|
"""
|
|
The upload function
|
|
"""
|
|
raise NotImplementedError("`upload` must be reimplemented by %s" % self)
|
|
|
|
|
|
###
|
|
# Consumer
|
|
###
|
|
class IConsumerPlugin(IPrismediaBasePlugin):
|
|
"""
|
|
Interface for the Consumer plugin category.
|
|
"""
|
|
|
|
def finished(self, video, options):
|
|
"""
|
|
What to do once the uploads are done.
|
|
- `video` is an object containing the video details. The `platforms` key contain a list of the platforms the video has been uploaded to and the status
|
|
"""
|
|
raise NotImplementedError("`finished` must be reimplemented by %s" % self)
|