|
|
- #!/usr/bin/env python3
-
- import toml
- import pathlib
- from datetime import datetime
-
- class AutoUpload(object):
- """AutoUpload is a class handling the state of videos automatically uploaded by prismedia"""
-
- _currentVideo = None
- _videoSuffix = ".mp4"
-
- _urlSuffix = "-url"
- _errorSuffix = "-error"
- _publishSuffix = "-publish"
- _lastUpdateTimeKey = "update-time"
-
- def __init__(self, autouploadFile):
- super(AutoUpload, self).__init__()
-
- self._autouploadFile = autouploadFile
- self._basePath = pathlib.Path(autouploadFile).resolve().parent
- self._autoUploadConfig = toml.load(autouploadFile)
-
- # print("content of file")
- # with open(autouploadFile, "r") as file:
- # print(file.readlines())
-
- # TODO: remove me / should only be here for debug
- # print("setting autouplad config")
- # print(self._autouploadFile)
- # print(self._autoUploadConfig)
-
- def nextVideo(self, platform):
- """Get the path to the next video to upload for a specific platform"""
- for video in self._autoUploadConfig["videos"]:
- if platform + self._urlSuffix not in self._autoUploadConfig["videos"][video]:
- self._currentVideo = video
- return (self._basePath / video).with_suffix(self._videoSuffix).resolve().as_posix()
-
- self._currentVideo = None
- return False
-
- def success(self, platform, url, publishDate):
- """Last video asked was successfully uploaded"""
- updateTime = datetime.today()
-
- self._autoUploadConfig["videos"][self._currentVideo].pop(platform + self._errorSuffix, None)
-
-
- self._autoUploadConfig["videos"][self._currentVideo][platform + self._urlSuffix] = url
- self._autoUploadConfig["videos"][self._currentVideo][platform + self._publishSuffix] = publishDate
-
- self._autoUploadConfig["videos"][self._currentVideo][self._lastUpdateTimeKey] = updateTime
-
- self._write()
-
- def error(self, platform, errorString):
- """There was an error on upload of last video"""
- updateTime = datetime.today()
-
- self._autoUploadConfig["videos"][self._currentVideo][platform + self._errorSuffix] = errorString
-
- self._autoUploadConfig["videos"][self._currentVideo][self._lastUpdateTimeKey] = updateTime
-
- self._write()
-
- def _write(self):
- """Private helper function
- Write current autoupload state on file(s)"""
- with open(self._autouploadFile, 'w', encoding="utf-8", errors="strict") as f:
- toml.dump(self._autoUploadConfig, f, encoder=toml.TomlPreserveInlineDictEncoder()) # can we also inherit from toml.TomlPreserveCommentEncoder()?
|