Make downloadfilter apply itself to Resources
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
import logging
|
||||
import re
|
||||
|
||||
from bdfr.resource import Resource
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -21,13 +23,20 @@ class DownloadFilter:
|
||||
else:
|
||||
return True
|
||||
|
||||
def _check_extension(self, url: str) -> bool:
|
||||
def check_resource(self, res: Resource) -> bool:
|
||||
if not self._check_extension(res.extension):
|
||||
return False
|
||||
elif not self._check_domain(res.url):
|
||||
return False
|
||||
return True
|
||||
|
||||
def _check_extension(self, resource_extension: str) -> bool:
|
||||
if not self.excluded_extensions:
|
||||
return True
|
||||
combined_extensions = '|'.join(self.excluded_extensions)
|
||||
pattern = re.compile(r'.*({})$'.format(combined_extensions))
|
||||
if re.match(pattern, url):
|
||||
logger.log(9, f'Url "{url}" matched with "{str(pattern)}"')
|
||||
if re.match(pattern, resource_extension):
|
||||
logger.log(9, f'Url "{resource_extension}" matched with "{str(pattern)}"')
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
@@ -394,9 +394,6 @@ class RedditDownloader:
|
||||
if not isinstance(submission, praw.models.Submission):
|
||||
logger.warning(f'{submission.id} is not a submission')
|
||||
return
|
||||
if not self.download_filter.check_url(submission.url):
|
||||
logger.debug(f'Download filter removed submission {submission.id} with URL {submission.url}')
|
||||
return
|
||||
try:
|
||||
downloader_class = DownloadFactory.pull_lever(submission.url)
|
||||
downloader = downloader_class(submission)
|
||||
@@ -413,6 +410,8 @@ class RedditDownloader:
|
||||
for destination, res in self.file_name_formatter.format_resource_paths(content, self.download_directory):
|
||||
if destination.exists():
|
||||
logger.debug(f'File {destination} already exists, continuing')
|
||||
elif not self.download_filter.check_resource(res):
|
||||
logger.debug(f'Download filter removed {submission.id} with URL {submission.url}')
|
||||
else:
|
||||
try:
|
||||
res.download(self.args.max_wait_time)
|
||||
|
||||
Reference in New Issue
Block a user