1
0
Fork 0
mirror of synced 2024-05-20 20:22:43 +12:00

Add XML and YAML to archiver

This commit is contained in:
Serene-Arc 2021-03-14 09:00:00 +10:00 committed by Ali Parlakci
parent 959b55a939
commit 1bf1db707c
3 changed files with 41 additions and 8 deletions

View file

@ -4,7 +4,9 @@
import json
import logging
import dict2xml
import praw.models
import yaml
from bulkredditdownloader.archive_entry import ArchiveEntry
from bulkredditdownloader.configuration import Configuration
@ -45,7 +47,16 @@ class Archiver(RedditDownloader):
json.dump(entry.compile(), file)
def _write_submission_xml(self, entry: ArchiveEntry):
raise NotImplementedError
resource = Resource(entry.submission, '', '.xml')
file_path = self.file_name_formatter.format_path(resource, self.download_directory)
with open(file_path, 'w') as file:
logger.debug(f'Writing submission {entry.submission.id} to file in XML format at {file_path}')
xml_entry = dict2xml.dict2xml(entry.compile(), wrap='root')
file.write(xml_entry)
def _write_submission_yaml(self, entry: ArchiveEntry):
raise NotImplementedError
resource = Resource(entry.submission, '', '.yaml')
file_path = self.file_name_formatter.format_path(resource, self.download_directory)
with open(file_path, 'w') as file:
logger.debug(f'Writing submission {entry.submission.id} to file in YAML format at {file_path}')
yaml.dump(entry.compile(), file)

View file

@ -26,11 +26,31 @@ def test_write_submission_json(test_submission_id: str, tmp_path: Path, reddit_i
assert test_path.exists()
@pytest.mark.skip
def test_write_submission_xml():
raise NotImplementedError
@pytest.mark.online
@pytest.mark.reddit
@pytest.mark.parametrize('test_submission_id', (
'm3reby',
))
def test_write_submission_xml(test_submission_id: str, tmp_path: Path, reddit_instance: praw.Reddit):
archiver_mock = MagicMock()
test_path = Path(tmp_path, 'test.xml')
test_submission = reddit_instance.submission(id=test_submission_id)
archiver_mock.file_name_formatter.format_path.return_value = test_path
test_entry = ArchiveEntry(test_submission)
Archiver._write_submission_xml(archiver_mock, test_entry)
assert test_path.exists()
@pytest.mark.skip
def test_write_submission_yaml():
raise NotImplementedError
@pytest.mark.online
@pytest.mark.reddit
@pytest.mark.parametrize('test_submission_id', (
'm3reby',
))
def test_write_submission_yaml(test_submission_id: str, tmp_path: Path, reddit_instance: praw.Reddit):
archiver_mock = MagicMock()
test_path = Path(tmp_path, 'test.yaml')
test_submission = reddit_instance.submission(id=test_submission_id)
archiver_mock.file_name_formatter.format_path.return_value = test_path
test_entry = ArchiveEntry(test_submission)
Archiver._write_submission_yaml(archiver_mock, test_entry)
assert test_path.exists()

View file

@ -1,7 +1,9 @@
appdirs
bs4
click
dict2xml
ffmpeg-python
praw
pyyaml
requests
youtube-dl