|
import pluginInterfaces as pi
|
|
import utils
|
|
import configuration
|
|
|
|
|
|
class Cli(pi.IInterfacePlugin):
|
|
"""
|
|
This is the default interface plugin. It is used when no interface plugin is specified.
|
|
|
|
Its core functionality is available as a function call to `prepare_options(video, options)` if you do not need the
|
|
Cli object.
|
|
This can be useful to let other plugins to rely on the defaults behaviors proposed by this one and extend it.
|
|
"""
|
|
|
|
def prepare_options(self, video, options):
|
|
prepare_options(video, options)
|
|
|
|
|
|
def prepare_options(video, options):
|
|
# TODO: Add the configuration file from the `--nfo` cli argument
|
|
|
|
_store_docopt_to_configuration(video, options)
|
|
_populate_configuration_into_video(video)
|
|
|
|
|
|
def _store_docopt_to_configuration(options):
|
|
items = {}
|
|
for key, value in options:
|
|
if key.startswith("--"):
|
|
options.pop(key)
|
|
items[key.strip("- ")] = value
|
|
|
|
configuration.configuration_instance.config_parser.read_dict(items)
|
|
|
|
|
|
def _populate_configuration_into_video(self, video):
|
|
config = configuration.configuration_instance
|
|
|
|
video.path = utils.getOption(config, "file", video.path)
|
|
video.thumbnail = utils.getOption(config, "thumbnail", video.thumbnail)
|
|
video.name = utils.getOption(config, "name", video.name)
|
|
video.description = utils.getOption(config, "description", video.description)
|
|
video.playlistName = utils.getOption(config, "playlist", video.playlistName)
|
|
video.privacy = utils.getOption(config, "privacy", video.privacy).lower()
|
|
video.category = utils.getOption(config, "category", video.category).lower()
|
|
tags = utils.getOption(config, "tag", video.tags)
|
|
if isinstance(tags, str):
|
|
tags = tags.split(",")
|
|
video.tags = tags
|
|
video.language = utils.getOption(config, "language", video.language).lower()
|
|
video.originalDate = utils.getOption(config, "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 = utils.getOption(config, "publish-at", video.publishAt)
|
|
# TODO: Add a list of licences
|
|
video.licence = utils.getOption(config, "licence", video.licence)
|
|
video.disableComments = utils.getOption(config, "disable-comments", video.disableComments)
|
|
video.nsfw = utils.getOption(config, "nsfw", video.nsfw)
|
|
|
|
autoOriginalDate = utils.getOption(config, "auto-original-date", False)
|
|
if autoOriginalDate:
|
|
# TODO: Implement
|
|
raise NotImplementedError("auto-original-date functionality is not yet implemented.")
|
|
|
|
return video
|
|
|
|
|