Scripting way to upload videos to peertube and youtube
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

68 lines
2.7 KiB

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