# # This file is part of stov, written by Helmut Pozimski 2012-2015. # # stov is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 2 of the License. # # stov is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with stov. If not, see . # -*- coding: utf8 -*- """This module takes care of managing and downloading single videos.""" import logging import os from lib_stov import configuration from lib_stov import stov_exceptions from lib_stov import youtubedl_wrapper LOGGER = logging.getLogger("stov") class Video(object): """This class stores all the attributes of a single video and is also able to download it using youtube-dl. """ def __init__(self, title, site_id, downloaded, failcount=0, video_id=0): self._id = video_id self.title = title self.site_id = site_id self._conf = configuration.Conf.get_instance() self.downloaded = downloaded self.failcnt = int(failcount) def download_video(self, directory, url): """ Downloads the video by calling youtube-dl as an external process" :param directory: directory to download to :type directory: str :param video_codec: video codec to download :type video_codec: str :param url: url to the video :type url: str :return: boolean value :rtype: bool """ targetdir = self._conf.values["downloaddir"] + "/" + directory if not os.access(targetdir, os.F_OK): try: LOGGER.debug(_("Creating directory %s"), targetdir) os.makedirs(targetdir, 0o750) except os.error: raise stov_exceptions.DirectoryCreationFailedException() os.chdir(targetdir) if self.downloaded == 0: try: youtubedl_wrapper.download_video(url) except stov_exceptions.YoutubeDlCallFailed: self.failcnt = int(self.failcnt) + 1 return False else: self.downloaded = 1 return True return False def get_id(self): """Resturns the id attribute assigned to the object.""" return self._id