From 8c59329ffab9ecf977fc978650350158a054ea2f Mon Sep 17 00:00:00 2001 From: Serene-Arc Date: Wed, 6 Jul 2022 16:52:01 +1000 Subject: [PATCH] Add exclusion options to archiver --- bdfr/__main__.py | 4 ++-- bdfr/archiver.py | 3 +++ bdfr/configuration.py | 2 +- .../integration_tests/test_archive_integration.py | 15 +++++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/bdfr/__main__.py b/bdfr/__main__.py index 451a7f0..45450ed 100644 --- a/bdfr/__main__.py +++ b/bdfr/__main__.py @@ -17,6 +17,8 @@ _common_options = [ click.option('--authenticate', is_flag=True, default=None), click.option('--config', type=str, default=None), click.option('--disable-module', multiple=True, default=None, type=str), + click.option('--exclude-id', default=None, multiple=True), + click.option('--exclude-id-file', default=None, multiple=True), click.option('--file-scheme', default=None, type=str), click.option('--folder-scheme', default=None, type=str), click.option('--ignore-user', type=str, multiple=True, default=None), @@ -44,8 +46,6 @@ _downloader_options = [ click.option('--max-wait-time', type=int, default=None), click.option('--no-dupes', is_flag=True, default=None), click.option('--search-existing', is_flag=True, default=None), - click.option('--exclude-id', default=None, multiple=True), - click.option('--exclude-id-file', default=None, multiple=True), click.option('--skip', default=None, multiple=True), click.option('--skip-domain', default=None, multiple=True), click.option('--skip-subreddit', default=None, multiple=True), diff --git a/bdfr/archiver.py b/bdfr/archiver.py index 559dcc1..214111f 100644 --- a/bdfr/archiver.py +++ b/bdfr/archiver.py @@ -34,6 +34,9 @@ class Archiver(RedditConnector): f'Submission {submission.id} in {submission.subreddit.display_name} skipped' f' due to {submission.author.name if submission.author else "DELETED"} being an ignored user') continue + if submission.id in self.excluded_submission_ids: + logger.debug(f'Object {submission.id} in exclusion list, skipping') + continue logger.debug(f'Attempting to archive submission {submission.id}') self.write_entry(submission) diff --git a/bdfr/configuration.py b/bdfr/configuration.py index ef24e36..c8fb323 100644 --- a/bdfr/configuration.py +++ b/bdfr/configuration.py @@ -35,7 +35,7 @@ class Configuration(Namespace): self.skip_subreddit: list[str] = [] self.sort: str = 'hot' self.submitted: bool = False - self.subscribed: bool = True + self.subscribed: bool = False self.subreddit: list[str] = [] self.time: str = 'all' self.time_format = None diff --git a/tests/integration_tests/test_archive_integration.py b/tests/integration_tests/test_archive_integration.py index 2234c5a..744e343 100644 --- a/tests/integration_tests/test_archive_integration.py +++ b/tests/integration_tests/test_archive_integration.py @@ -136,3 +136,18 @@ def test_cli_archive_file_format(test_args: list[str], tmp_path: Path): assert result.exit_code == 0 assert 'Attempting to archive submission' in result.output assert re.search('format at /.+?/Judge says Trump and two adult', result.output) + + +@pytest.mark.online +@pytest.mark.reddit +@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests') +@pytest.mark.parametrize('test_args', ( + ['-l', 'm2601g', '--exclude-id', 'm2601g'], +)) +def test_cli_archive_links_exclusion(test_args: list[str], tmp_path: Path): + runner = CliRunner() + test_args = create_basic_args_for_archive_runner(test_args, tmp_path) + result = runner.invoke(cli, test_args) + assert result.exit_code == 0 + assert 'in exclusion list' in result.output + assert 'Attempting to archive' not in result.output