from os.path import dirname, splitext, basename, isfile, normpath, expanduser class Platform(object): """ Store data representing a Platform. """ def __init__(self): self.error = None self.publishAt = None self.url = None def __repr__(self): return str(self.__dict__) # TODO: Add container for `with-*` and a `isValid` method to check that all `with-*` options are present # TODO: We need some list (using enum?) for the commons licences, language, privacy, categories options class Video(object): """ Store data representing a Video. """ def __init__(self): self.path = "" self.thumbnail = None self.name = None self.description = "Video uploaded with Prismedia" self.playlistName = None self.playlistCreate = False self.privacy = "private" self.category = "films" self.tags = [] self.language = "english" self.originalDate = None # TODO: add a method "extract original date"? -> I feal that needs to be done outside of this class # 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. self.publishAt = None # TODO: Add a list of licences self.licence = "proprietary" self.disableComments = False self.nsfw = False # Each platform should insert here the upload state self.platform = {} @property def path(self): return self._path @path.setter def path(self, value): path = normpath(expanduser(value)) if value == "": self._path = "" elif isfile(path): self._path = path else: # TODO: log instead to debug? info? print("The path `" + value + "` does not point to a video") self._path = "" @property def thumbnail(self): if self._thumbnail is not None: return self._thumbnail else: result = None video_directory = dirname(self.path) + "/" # First, check for thumbnail based on videoname if isfile(video_directory + self.name + ".jpg"): result = video_directory + self.name + ".jpg" elif isfile(video_directory + self.name + ".jpeg"): result = video_directory + self.name + ".jpeg" # Then, if we still not have thumbnail, check for thumbnail based on videofile name # NOTE: This may be a the exact same check from the previous conditions if self._name = None. # Bus as far as I know it is not recommended to use privates properties even in the same class # Maybe check if self.name == splitext(basename(self.path))[0] # Not done since it is early dev for the plugins rewrite if not result: video_file = splitext(basename(self.path))[0] if isfile(video_directory + video_file + ".jpg"): result = video_directory + video_file + ".jpg" elif isfile(video_directory + video_file + ".jpeg"): result = video_directory + video_file + ".jpeg" # TODO: move to caller. Logging the output is its responsibility # Display some info after research # if not result: # logger.debug("No thumbnail has been found, continuing") # else: # logger.info("Using " + result + " as thumbnail") return result @thumbnail.setter def thumbnail(self, value): self._thumbnail = value @property def name(self): if self._name is not None: return self._name else: return splitext(basename(self.path))[0] @name.setter def name(self, value): self._name = value def __repr__(self): result = "{\n" for key in self.__dict__: result += "\t'" + key + "': " + str(self.__dict__[key]) + ",\n" result += "}\n" return result