1
0
Fork 0
mirror of synced 2024-06-28 19:10:41 +12:00

Abstract configuration into class

This commit is contained in:
Serene-Arc 2021-03-10 21:47:57 +10:00 committed by Ali Parlakci
parent 92386000d8
commit 271c0b989d
4 changed files with 37 additions and 27 deletions

View file

@ -4,6 +4,7 @@ import argparse
import logging import logging
import sys import sys
from bulkredditdownloader.configuration import Configuration
from bulkredditdownloader.downloader import RedditDownloader from bulkredditdownloader.downloader import RedditDownloader
from bulkredditdownloader.exceptions import BulkDownloaderException from bulkredditdownloader.exceptions import BulkDownloaderException
@ -116,7 +117,7 @@ def _setup_logging(verbosity: int):
logging.getLogger('urllib3').setLevel(logging.CRITICAL) logging.getLogger('urllib3').setLevel(logging.CRITICAL)
def main(args: argparse.Namespace): def main(args: Configuration):
_setup_logging(args.verbose) _setup_logging(args.verbose)
try: try:
reddit_downloader = RedditDownloader(args) reddit_downloader = RedditDownloader(args)
@ -127,5 +128,6 @@ def main(args: argparse.Namespace):
if __name__ == '__main__': if __name__ == '__main__':
_add_options() _add_options()
args = parser.parse_args() read_configuration = Configuration()
args = parser.parse_args(namespace=read_configuration)
main(args) main(args)

View file

@ -0,0 +1,28 @@
#!/usr/bin/env python3
# coding=utf-8
from argparse import Namespace
from typing import Optional
class Configuration(Namespace):
def __init__(self):
super(Configuration, self).__init__()
self.directory: str = '.'
self.limit: Optional[int] = None
self.link: list[str] = []
self.multireddit: list[str] = []
self.no_dupes: bool = False
self.saved: bool = False
self.search: Optional[str] = None
self.set_file_scheme: str = '{REDDITOR}_{TITLE}_{POSTID}'
self.set_folder_scheme: str = '{SUBREDDIT}'
self.skip: list[str] = []
self.skip_domain: list[str] = []
self.sort: str = 'hot'
self.submitted: bool = False
self.subreddit: list[str] = []
self.time: str = 'all'
self.upvoted: bool = False
self.user: Optional[str] = None
self.verbose: int = 0

View file

@ -1,10 +1,8 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# coding=utf-8 # coding=utf-8
import argparse
import configparser import configparser
import logging import logging
import re
import socket import socket
from datetime import datetime from datetime import datetime
from enum import Enum, auto from enum import Enum, auto
@ -17,6 +15,7 @@ import praw.models
import prawcore import prawcore
import bulkredditdownloader.exceptions as errors import bulkredditdownloader.exceptions as errors
from bulkredditdownloader.configuration import Configuration
from bulkredditdownloader.download_filter import DownloadFilter from bulkredditdownloader.download_filter import DownloadFilter
from bulkredditdownloader.file_name_formatter import FileNameFormatter from bulkredditdownloader.file_name_formatter import FileNameFormatter
from bulkredditdownloader.oauth2 import OAuth2Authenticator, OAuth2TokenManager from bulkredditdownloader.oauth2 import OAuth2Authenticator, OAuth2TokenManager
@ -44,7 +43,7 @@ class RedditTypes:
class RedditDownloader: class RedditDownloader:
def __init__(self, args: argparse.Namespace): def __init__(self, args: Configuration):
self.args = args self.args = args
self.config_directories = appdirs.AppDirs('bulk_reddit_downloader', 'BDFR') self.config_directories = appdirs.AppDirs('bulk_reddit_downloader', 'BDFR')
self.run_time = datetime.now().isoformat() self.run_time = datetime.now().isoformat()

View file

@ -12,6 +12,7 @@ import praw.models
import pytest import pytest
from bulkredditdownloader.__main__ import _setup_logging from bulkredditdownloader.__main__ import _setup_logging
from bulkredditdownloader.configuration import Configuration
from bulkredditdownloader.download_filter import DownloadFilter from bulkredditdownloader.download_filter import DownloadFilter
from bulkredditdownloader.downloader import RedditDownloader, RedditTypes from bulkredditdownloader.downloader import RedditDownloader, RedditTypes
from bulkredditdownloader.exceptions import BulkDownloaderException, RedditAuthenticationError, RedditUserError from bulkredditdownloader.exceptions import BulkDownloaderException, RedditAuthenticationError, RedditUserError
@ -20,28 +21,8 @@ from bulkredditdownloader.site_authenticator import SiteAuthenticator
@pytest.fixture() @pytest.fixture()
def args() -> argparse.Namespace: def args() -> Configuration:
args = argparse.Namespace() args = Configuration()
args.directory = '.'
args.verbose = 0
args.link = []
args.submitted = False
args.upvoted = False
args.saved = False
args.subreddit = []
args.multireddit = []
args.user = None
args.search = None
args.sort = 'hot'
args.limit = None
args.time = 'all'
args.skip = []
args.skip_domain = []
args.set_folder_scheme = '{SUBREDDIT}'
args.set_file_scheme = '{REDDITOR}_{TITLE}_{POSTID}'
args.no_dupes = False
return args return args