|
import pluginInterfaces as pi
|
|
import video as vid
|
|
|
|
from yapsy.PluginManager import PluginManagerSingleton
|
|
|
|
def helperFunctionnality(options):
|
|
optionName = "--list-plugins"
|
|
if options.get(optionName):
|
|
_listPlugins()
|
|
return True
|
|
else:
|
|
options.pop(optionName)
|
|
|
|
optionName = "--hearthbeat"
|
|
if options.get(optionName):
|
|
for plugin in manager.getPluginsOfCategory(pi.PluginTypes.PLATFORM):
|
|
plugin.plugin_object.hearthbeat()
|
|
return True
|
|
else:
|
|
options.pop(optionName)
|
|
|
|
return False
|
|
|
|
|
|
def parseOptions(options):
|
|
video = vid.Video()
|
|
|
|
video.path = _getOption(options, "--file", video.path)
|
|
video.thumbnail = _getOption(options, "--thumbnail", video.thumbnail)
|
|
video.name = _getOption(options, "--name", video.name)
|
|
video.description = _getOption(options, "--description", video.description)
|
|
video.playlistName = _getOption(options, "--playlist", video.playlistName)
|
|
video.privacy = _getOption(options, "--privacy", video.privacy)
|
|
video.category = _getOption(options, "--category", video.category)
|
|
video.tags = _getOption(options, "--tag", video.tags)
|
|
video.language = _getOption(options, "--language", video.language)
|
|
video.originalDate = _getOption(options, "--original-date", video.originalDate)
|
|
# TODO: set as an object: { "all": date1, "platformX": date2, …}?
|
|
# Maybe the publishAt by platform is better placed in `self.platform`
|
|
# And so publishAt would only contains the global date.
|
|
video.publishAt = _getOption(options, "--publish-at", video.publishAt)
|
|
# TODO: Add a list of licences
|
|
video.licence = _getOption(options, "--licence", video.licence)
|
|
video.disableComments = _getOption(options, "--disable-comments", video.disableComments)
|
|
video.nsfw = _getOption(options, "--nsfw", video.nsfw)
|
|
|
|
autoOriginalDate = _getOption(options, "--auto-original-date", False)
|
|
if autoOriginalDate:
|
|
raise Exception("Unimplemented!")
|
|
|
|
return video
|
|
|
|
|
|
def _getOption(options, optionName, defaultValue = None):
|
|
value = options.get(optionName)
|
|
options.pop(optionName)
|
|
|
|
if value is None:
|
|
return defaultValue
|
|
return value
|
|
|
|
|
|
def _listPlugins():
|
|
manager = PluginManagerSingleton.get()
|
|
|
|
print("The plugins are stored in the following folders:", manager.getPluginLocator().plugins_places)
|
|
|
|
print("Category:", pi.PluginTypes.INTERFACE.value)
|
|
for plugin in manager.getPluginsOfCategory(pi.PluginTypes.INTERFACE):
|
|
print("\t" + plugin.name)
|
|
|
|
print("Category:", pi.PluginTypes.PLATFORM.value)
|
|
for plugin in manager.getPluginsOfCategory(pi.PluginTypes.PLATFORM):
|
|
print("\t" + plugin.name)
|
|
|
|
print("Category:", pi.PluginTypes.CONSUMER.value)
|
|
for plugin in manager.getPluginsOfCategory(pi.PluginTypes.CONSUMER):
|
|
print("\t" + plugin.name)
|