|
|
- 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
|