From 9f3dcece4d2af458b819bd68e26d3adbea9ffb28 Mon Sep 17 00:00:00 2001 From: Serene-Arc Date: Fri, 25 Mar 2022 10:50:52 +1000 Subject: [PATCH] Strip any newline characters from names --- bdfr/file_name_formatter.py | 3 +++ tests/test_file_name_formatter.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bdfr/file_name_formatter.py b/bdfr/file_name_formatter.py index 3e8832b..1dabd34 100644 --- a/bdfr/file_name_formatter.py +++ b/bdfr/file_name_formatter.py @@ -111,6 +111,9 @@ class FileNameFormatter: if not resource.extension: raise BulkDownloaderException(f'Resource from {resource.url} has no extension') file_name = str(self._format_name(resource.source_submission, self.file_format_string)) + + file_name = re.sub(r'\n', ' ', file_name) + if not re.match(r'.*\.$', file_name) and not re.match(r'^\..*', resource.extension): ending = index + '.' + resource.extension else: diff --git a/tests/test_file_name_formatter.py b/tests/test_file_name_formatter.py index 30fac77..bd9d058 100644 --- a/tests/test_file_name_formatter.py +++ b/tests/test_file_name_formatter.py @@ -16,6 +16,7 @@ from bdfr.file_name_formatter import FileNameFormatter from bdfr.resource import Resource from bdfr.site_downloaders.base_downloader import BaseDownloader from bdfr.site_downloaders.fallback_downloaders.ytdlp_fallback import YtdlpFallback +from bdfr.site_downloaders.self_post import SelfPost @pytest.fixture() @@ -406,6 +407,7 @@ def test_windows_max_path(tmp_path: Path): @pytest.mark.parametrize(('test_reddit_id', 'test_downloader', 'expected_names'), ( ('gphmnr', YtdlpFallback, {'He has a lot to say today.mp4'}), ('d0oir2', YtdlpFallback, {"Crunk's finest moment. Welcome to the new subreddit!.mp4"}), + ('jiecu', SelfPost, {'Reston, VA Some info regarding shelters in the area..txt'}) )) def test_name_submission( test_reddit_id: str, @@ -418,4 +420,4 @@ def test_name_submission( test_formatter = FileNameFormatter('{TITLE}', '', '') results = test_formatter.format_resource_paths(test_resources, Path('.')) results = set([r[0].name for r in results]) - assert expected_names == results + assert results == expected_names