Merge pull request #695 from Serene-Arc/bug_fix_677

Closes https://github.com/aliparlakci/bulk-downloader-for-reddit/issues/677
This commit is contained in:
Serene
2022-11-21 14:43:24 +10:00
committed by GitHub
3 changed files with 22 additions and 12 deletions

View File

@@ -8,6 +8,7 @@ from typing import Iterator
import dict2xml import dict2xml
import praw.models import praw.models
import prawcore
import yaml import yaml
from bdfr.archive_entry.base_archive_entry import BaseArchiveEntry from bdfr.archive_entry.base_archive_entry import BaseArchiveEntry
@@ -28,6 +29,7 @@ class Archiver(RedditConnector):
def download(self): def download(self):
for generator in self.reddit_lists: for generator in self.reddit_lists:
for submission in generator: for submission in generator:
try:
if (submission.author and submission.author.name in self.args.ignore_user) or \ if (submission.author and submission.author.name in self.args.ignore_user) or \
(submission.author is None and 'DELETED' in self.args.ignore_user): (submission.author is None and 'DELETED' in self.args.ignore_user):
logger.debug( logger.debug(
@@ -39,6 +41,8 @@ class Archiver(RedditConnector):
continue continue
logger.debug(f'Attempting to archive submission {submission.id}') logger.debug(f'Attempting to archive submission {submission.id}')
self.write_entry(submission) self.write_entry(submission)
except prawcore.PrawcoreException as e:
logger.error(f'Submission {submission.id} failed to be archived due to a PRAW exception: {e}')
def get_submissions_from_link(self) -> list[list[praw.models.Submission]]: def get_submissions_from_link(self) -> list[list[praw.models.Submission]]:
supplied_submissions = [] supplied_submissions = []

View File

@@ -12,6 +12,7 @@ from pathlib import Path
import praw import praw
import praw.exceptions import praw.exceptions
import praw.models import praw.models
import prawcore
from bdfr import exceptions as errors from bdfr import exceptions as errors
from bdfr.configuration import Configuration from bdfr.configuration import Configuration
@@ -42,7 +43,10 @@ class RedditDownloader(RedditConnector):
def download(self): def download(self):
for generator in self.reddit_lists: for generator in self.reddit_lists:
for submission in generator: for submission in generator:
try:
self._download_submission(submission) self._download_submission(submission)
except prawcore.PrawcoreException as e:
logger.error(f'Submission {submission.id} failed to download due to a PRAW exception: {e}')
def _download_submission(self, submission: praw.models.Submission): def _download_submission(self, submission: praw.models.Submission):
if submission.id in self.excluded_submission_ids: if submission.id in self.excluded_submission_ids:

View File

@@ -232,6 +232,8 @@ def test_cli_download_long(test_args: list[str], tmp_path: Path):
['--subreddit', 'donaldtrump', '-L', 10], # Banned subreddit ['--subreddit', 'donaldtrump', '-L', 10], # Banned subreddit
['--user', 'djnish', '--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10], ['--user', 'djnish', '--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10],
['--subreddit', 'friends', '-L', 10], ['--subreddit', 'friends', '-L', 10],
['-l', 'ijy4ch'],
['-l', 'kw4wjm'],
)) ))
def test_cli_download_soft_fail(test_args: list[str], tmp_path: Path): def test_cli_download_soft_fail(test_args: list[str], tmp_path: Path):
runner = CliRunner() runner = CliRunner()