Example #1
0
class TestBaseState(unittest.TestCase):
    def setUp(self):
        self.tempdir = create_temporary_directory()
        self.settings_path = self.tempdir.path / 'SubDownloader.conf'
        self.state = BaseState()
        self.settings = Settings(self.settings_path)

    def tearDown(self):
        del self.tempdir
        del self.settings_path
        del self.state
        del self.settings

    def test_paths(self):
        BaseState.get_default_settings_folder()

    def test_default_video_paths(self):
        self.assertListEqual([], self.state.get_video_paths())

    def test_save_load(self):
        self.assertListEqual([], list(self.tempdir.path.iterdir()))
        self.state.save_settings(self.settings)
        self.assertListEqual([self.settings_path],
                             list(self.tempdir.path.iterdir()))

        copyState = BaseState()
        copyState.load_settings(self.settings)
Example #2
0
    def __init__(self):
        self._signals = GuiStateSignals()
        callback = GuiProviderStateCallbacks(self)
        BaseState.__init__(self, callback)

        self._window_position = None
        self._window_size = None
Example #3
0
    def __init__(self):
        BaseState.__init__(self)

        self._interactive = False
        self._console = False
        self._recursive = False

        self.set_subtitle_download_path_strategy(SubtitlePathStrategy.SAME)
Example #4
0
    def test_save_load(self):
        self.assertListEqual([], list(self.tempdir.path.iterdir()))
        self.state.save_settings(self.settings)
        self.assertListEqual([self.settings_path],
                             list(self.tempdir.path.iterdir()))

        copyState = BaseState()
        copyState.load_settings(self.settings)
Example #5
0
    def save_settings(self, settings):
        if self._window_position:
            settings.set_ints(GuiStateConfigKey.WINDOW_POSITION.value,
                              self._window_position)

        if self._window_size:
            settings.set_ints(GuiStateConfigKey.WINDOW_SIZE.value,
                              self._window_size)
        BaseState.save_settings(self, settings)
Example #6
0
    def __init__(self, options):
        BaseState.__init__(self, options=options, settings=None)
        self._options = options

        self._interactive = self._options.program.client.cli.interactive
        self._recursive = self._options.search.recursive

        self._cli_load_state()

        self.set_subtitle_rename_strategy(options.download.rename_strategy)
        self.set_subtitle_download_path_strategy(SubtitlePathStrategy.SAME)
Example #7
0
    def load_options(self, options):
        BaseState.load_options(self, options)

        self._console = options.program.client.cli.console
        self._interactive = options.program.client.cli.interactive
        self._list_languages = options.program.client.cli.list_languages

        self._recursive = options.search.recursive

        self.set_subtitle_naming_strategy(options.download.naming_strategy)

        self.set_videoplayer(VideoPlayer.find())
Example #8
0
def logging_file_install(path):
    """
    Install logger that will write to file. If this function has already installed a handler, replace it.
    :param path: path to the log file, Use None for default file location.
    """
    if path is None:
        path = BaseState.get_default_settings_folder() / LOGGING_DEFAULTNAME

    if not path.parent.exists():
        log.error('File logger installation FAILED!')
        log.error('The directory of the log file does not exist.')
        return

    formatter = logging.Formatter(LOGGING_FORMAT)
    logger = logging.getLogger()

    logger.removeHandler(LOGGING_HANDLERS['file'])

    logFileHandler = logging.handlers.RotatingFileHandler(
        filename=str(path),
        mode='a',
        maxBytes=LOGGING_MAXBYTES,
        backupCount=LOGGING_BACKUPCOUNT,
        encoding='utf8')
    logFileHandler.setLevel(logging.DEBUG)
    logFileHandler.setFormatter(formatter)

    LOGGING_HANDLERS['file'] = logFileHandler

    logger.addHandler(logFileHandler)
Example #9
0
    def load_settings(self, settings):
        BaseState.load_settings(self, settings)

        try:
            tup_pos = settings.get_ints(
                GuiStateConfigKey.WINDOW_POSITION.value, default=None)
            if tup_pos is not None:
                self._window_position = tuple(tup_pos)
        except ValueError:
            pass

        try:
            tup_size = settings.get_ints(GuiStateConfigKey.WINDOW_SIZE.value,
                                         default=None)
            if tup_size is not None:
                self._window_size = tuple(tup_size)
        except ValueError:
            pass
Example #10
0
def main(args=None):
    add_client_module_dependencies()
    logging_stream_install(logging.WARNING)
    state_init()
    logging_file_install(None)
    i18n_install()
    options = parse_arguments(args=args)
    settings = Settings(BaseState.get_default_settings_path())
    logging_install(options.program.log.level, options.program.log.path)
    user_agent_init()

    if options.program.client.type == ClientType.GUI:
        try:
            import subdownloader.client.gui
        except ImportError as e:
            if e.name.startswith('PyQt5'):
                emit_error_missing_pyqt()
                return 1
            else:
                raise
        runner = subdownloader.client.gui.run
    elif options.program.client.type == ClientType.CLI:
        import subdownloader.client.cli
        runner = subdownloader.client.cli.run
    else:
        print('{}: {}'.format(_('Invalid client type'), options.program.client_type))
        return 1

    try:
        return runner(options, settings)
    except IllegalArgumentException as e:
        sys.stderr.write(e.msg)
        print()
        return 1
    except (EOFError, KeyboardInterrupt):
        return 1
Example #11
0
 def test_paths(self):
     BaseState.get_default_settings_folder()
Example #12
0
 def setUp(self):
     self.tempdir = create_temporary_directory()
     self.settings_path = self.tempdir.path / 'SubDownloader.conf'
     self.state = BaseState()
     self.settings = Settings(self.settings_path)