Rename options
This commit is contained in:
@@ -99,11 +99,11 @@ The following options apply only to the `download` command. This command downloa
|
|||||||
- This is calculated by MD5 hash
|
- This is calculated by MD5 hash
|
||||||
- `--search-existing`
|
- `--search-existing`
|
||||||
- This will make the BDFR compile the hashes for every file in `directory` and store them to remove duplicates if `--no-dupes` is also supplied
|
- This will make the BDFR compile the hashes for every file in `directory` and store them to remove duplicates if `--no-dupes` is also supplied
|
||||||
- `--set-file-scheme`
|
- `--file-scheme`
|
||||||
- Sets the scheme for files
|
- Sets the scheme for files
|
||||||
- Default is `{REDDITOR}_{TITLE}_{POSTID}`
|
- Default is `{REDDITOR}_{TITLE}_{POSTID}`
|
||||||
- See[Folder and File Name Schemes](#folder-and-file-name-schemes) for more details
|
- See[Folder and File Name Schemes](#folder-and-file-name-schemes) for more details
|
||||||
- `--set-folder-scheme`
|
- `--folder-scheme`
|
||||||
- Sets the scheme for folders
|
- Sets the scheme for folders
|
||||||
- Default is `{SUBREDDIT}`
|
- Default is `{SUBREDDIT}`
|
||||||
- See[Folder and File Name Schemes](#folder-and-file-name-schemes) for more details
|
- See[Folder and File Name Schemes](#folder-and-file-name-schemes) for more details
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ def cli():
|
|||||||
@click.option('--make-hard-links', is_flag=True, default=None)
|
@click.option('--make-hard-links', is_flag=True, default=None)
|
||||||
@click.option('--no-dupes', is_flag=True, default=None)
|
@click.option('--no-dupes', is_flag=True, default=None)
|
||||||
@click.option('--search-existing', is_flag=True, default=None)
|
@click.option('--search-existing', is_flag=True, default=None)
|
||||||
@click.option('--set-file-scheme', default=None, type=str)
|
@click.option('--file-scheme', default=None, type=str)
|
||||||
@click.option('--set-folder-scheme', default=None, type=str)
|
@click.option('--folder-scheme', default=None, type=str)
|
||||||
@click.option('--skip', default=None, multiple=True)
|
@click.option('--skip', default=None, multiple=True)
|
||||||
@click.option('--skip-domain', default=None, multiple=True)
|
@click.option('--skip-domain', default=None, multiple=True)
|
||||||
@_add_common_options
|
@_add_common_options
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ class Configuration(Namespace):
|
|||||||
self.saved: bool = False
|
self.saved: bool = False
|
||||||
self.search: Optional[str] = None
|
self.search: Optional[str] = None
|
||||||
self.search_existing: bool = False
|
self.search_existing: bool = False
|
||||||
self.set_file_scheme: str = '{REDDITOR}_{TITLE}_{POSTID}'
|
self.file_scheme: str = '{REDDITOR}_{TITLE}_{POSTID}'
|
||||||
self.set_folder_scheme: str = '{SUBREDDIT}'
|
self.folder_scheme: str = '{SUBREDDIT}'
|
||||||
self.skip: list[str] = []
|
self.skip: list[str] = []
|
||||||
self.skip_domain: list[str] = []
|
self.skip_domain: list[str] = []
|
||||||
self.sort: str = 'hot'
|
self.sort: str = 'hot'
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ class RedditDownloader:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def _create_file_name_formatter(self) -> FileNameFormatter:
|
def _create_file_name_formatter(self) -> FileNameFormatter:
|
||||||
return FileNameFormatter(self.args.set_file_scheme, self.args.set_folder_scheme)
|
return FileNameFormatter(self.args.file_scheme, self.args.folder_scheme)
|
||||||
|
|
||||||
def _create_time_filter(self) -> RedditTypes.TimeType:
|
def _create_time_filter(self) -> RedditTypes.TimeType:
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -101,8 +101,8 @@ def test_create_sort_filter(test_sort: str, expected: str, downloader_mock: Magi
|
|||||||
('{POSTID}', ''),
|
('{POSTID}', ''),
|
||||||
))
|
))
|
||||||
def test_create_file_name_formatter(test_file_scheme: str, test_folder_scheme: str, downloader_mock: MagicMock):
|
def test_create_file_name_formatter(test_file_scheme: str, test_folder_scheme: str, downloader_mock: MagicMock):
|
||||||
downloader_mock.args.set_file_scheme = test_file_scheme
|
downloader_mock.args.file_scheme = test_file_scheme
|
||||||
downloader_mock.args.set_folder_scheme = test_folder_scheme
|
downloader_mock.args.folder_scheme = test_folder_scheme
|
||||||
result = RedditDownloader._create_file_name_formatter(downloader_mock)
|
result = RedditDownloader._create_file_name_formatter(downloader_mock)
|
||||||
|
|
||||||
assert isinstance(result, FileNameFormatter)
|
assert isinstance(result, FileNameFormatter)
|
||||||
@@ -116,8 +116,8 @@ def test_create_file_name_formatter(test_file_scheme: str, test_folder_scheme: s
|
|||||||
('test', '{SUBREDDIT}'),
|
('test', '{SUBREDDIT}'),
|
||||||
))
|
))
|
||||||
def test_create_file_name_formatter_bad(test_file_scheme: str, test_folder_scheme: str, downloader_mock: MagicMock):
|
def test_create_file_name_formatter_bad(test_file_scheme: str, test_folder_scheme: str, downloader_mock: MagicMock):
|
||||||
downloader_mock.args.set_file_scheme = test_file_scheme
|
downloader_mock.args.file_scheme = test_file_scheme
|
||||||
downloader_mock.args.set_folder_scheme = test_folder_scheme
|
downloader_mock.args.folder_scheme = test_folder_scheme
|
||||||
with pytest.raises(BulkDownloaderException):
|
with pytest.raises(BulkDownloaderException):
|
||||||
RedditDownloader._create_file_name_formatter(downloader_mock)
|
RedditDownloader._create_file_name_formatter(downloader_mock)
|
||||||
|
|
||||||
@@ -283,7 +283,7 @@ def test_download_submission(
|
|||||||
tmp_path: Path):
|
tmp_path: Path):
|
||||||
downloader_mock.reddit_instance = reddit_instance
|
downloader_mock.reddit_instance = reddit_instance
|
||||||
downloader_mock.download_filter.check_url.return_value = True
|
downloader_mock.download_filter.check_url.return_value = True
|
||||||
downloader_mock.args.set_folder_scheme = ''
|
downloader_mock.args.folder_scheme = ''
|
||||||
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
||||||
downloader_mock.download_directory = tmp_path
|
downloader_mock.download_directory = tmp_path
|
||||||
submission = downloader_mock.reddit_instance.submission(id=test_submission_id)
|
submission = downloader_mock.reddit_instance.submission(id=test_submission_id)
|
||||||
@@ -302,7 +302,7 @@ def test_download_submission_file_exists(
|
|||||||
setup_logging(3)
|
setup_logging(3)
|
||||||
downloader_mock.reddit_instance = reddit_instance
|
downloader_mock.reddit_instance = reddit_instance
|
||||||
downloader_mock.download_filter.check_url.return_value = True
|
downloader_mock.download_filter.check_url.return_value = True
|
||||||
downloader_mock.args.set_folder_scheme = ''
|
downloader_mock.args.folder_scheme = ''
|
||||||
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
||||||
downloader_mock.download_directory = tmp_path
|
downloader_mock.download_directory = tmp_path
|
||||||
submission = downloader_mock.reddit_instance.submission(id='m1hqw6')
|
submission = downloader_mock.reddit_instance.submission(id='m1hqw6')
|
||||||
@@ -324,7 +324,7 @@ def test_download_submission_hash_exists(
|
|||||||
setup_logging(3)
|
setup_logging(3)
|
||||||
downloader_mock.reddit_instance = reddit_instance
|
downloader_mock.reddit_instance = reddit_instance
|
||||||
downloader_mock.download_filter.check_url.return_value = True
|
downloader_mock.download_filter.check_url.return_value = True
|
||||||
downloader_mock.args.set_folder_scheme = ''
|
downloader_mock.args.folder_scheme = ''
|
||||||
downloader_mock.args.no_dupes = True
|
downloader_mock.args.no_dupes = True
|
||||||
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
||||||
downloader_mock.download_directory = tmp_path
|
downloader_mock.download_directory = tmp_path
|
||||||
@@ -376,8 +376,8 @@ def test_mark_hard_link(downloader_mock: MagicMock, tmp_path: Path, reddit_insta
|
|||||||
downloader_mock.reddit_instance = reddit_instance
|
downloader_mock.reddit_instance = reddit_instance
|
||||||
downloader_mock.args.make_hard_links = True
|
downloader_mock.args.make_hard_links = True
|
||||||
downloader_mock.download_directory = tmp_path
|
downloader_mock.download_directory = tmp_path
|
||||||
downloader_mock.args.set_folder_scheme = ''
|
downloader_mock.args.folder_scheme = ''
|
||||||
downloader_mock.args.set_file_scheme = '{POSTID}'
|
downloader_mock.args.file_scheme = '{POSTID}'
|
||||||
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
||||||
submission = downloader_mock.reddit_instance.submission(id='m1hqw6')
|
submission = downloader_mock.reddit_instance.submission(id='m1hqw6')
|
||||||
original = Path(tmp_path, 'm1hqw6.png')
|
original = Path(tmp_path, 'm1hqw6.png')
|
||||||
@@ -385,7 +385,7 @@ def test_mark_hard_link(downloader_mock: MagicMock, tmp_path: Path, reddit_insta
|
|||||||
RedditDownloader._download_submission(downloader_mock, submission)
|
RedditDownloader._download_submission(downloader_mock, submission)
|
||||||
assert original.exists()
|
assert original.exists()
|
||||||
|
|
||||||
downloader_mock.args.set_file_scheme = 'test2_{POSTID}'
|
downloader_mock.args.file_scheme = 'test2_{POSTID}'
|
||||||
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
downloader_mock.file_name_formatter = RedditDownloader._create_file_name_formatter(downloader_mock)
|
||||||
RedditDownloader._download_submission(downloader_mock, submission)
|
RedditDownloader._download_submission(downloader_mock, submission)
|
||||||
test_file_1_stats = original.stat()
|
test_file_1_stats = original.stat()
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ def test_cli_download_user_data_good(test_args: list[str], tmp_path: Path):
|
|||||||
@pytest.mark.authenticated
|
@pytest.mark.authenticated
|
||||||
@pytest.mark.skipif(Path('test_config.cfg') is False, reason='A test config file is required for integration tests')
|
@pytest.mark.skipif(Path('test_config.cfg') is False, reason='A test config file is required for integration tests')
|
||||||
@pytest.mark.parametrize('test_args', (
|
@pytest.mark.parametrize('test_args', (
|
||||||
['--user', 'me', '-L', 10, '--set-folder-scheme', ''],
|
['--user', 'me', '-L', 10, '--folder-scheme', ''],
|
||||||
))
|
))
|
||||||
def test_cli_download_user_data_bad_me_unauthenticated(test_args: list[str], tmp_path: Path):
|
def test_cli_download_user_data_bad_me_unauthenticated(test_args: list[str], tmp_path: Path):
|
||||||
runner = CliRunner()
|
runner = CliRunner()
|
||||||
|
|||||||
Reference in New Issue
Block a user