import argparse import praw from requests.exceptions import ConnectionError from rtv.errors import SubmissionURLError, SubredditNameError from rtv.utils import curses_session from rtv.subreddit import SubredditPage from rtv.submission import SubmissionPage parser = argparse.ArgumentParser(description='Reddit Terminal Viewer') parser.add_argument('-s', dest='subreddit', default='front', help='subreddit name') parser.add_argument('-l', dest='link', help='full link to a submission') group = parser.add_argument_group('authentication (optional)') group.add_argument('-u', dest='username', help='reddit username') group.add_argument('-p', dest='password', help='reddit password') def main(): args = parser.parse_args() try: reddit = praw.Reddit(user_agent='reddit terminal viewer v0.0') reddit.config.decode_html_entities = True if args.username and args.password: reddit.login(args.username, args.password) with curses_session() as stdscr: if args.link: page = SubmissionPage(stdscr, reddit, url=args.link) page.loop() page = SubredditPage(stdscr, reddit, args.subreddit) page.loop() except KeyboardInterrupt: return except ConnectionError: print('Timeout: Could not connect to website') except SubmissionURLError as e: print('Could not reach submission URL: {}'.format(e.url)) except SubredditNameError as e: print('Could not reach subreddit: {}'.format(e.name)) if __name__ == '__main__': main()