updated module to use PRAW 4.3.0

This commit is contained in:
Jason Paris 2017-01-31 14:30:15 -05:00 committed by enkore
parent 6e0fe2ec90
commit 06cac68ae3

View File

@ -16,6 +16,9 @@ class Reddit(IntervalModule):
submission directly. Depends on the Python Reddit API Wrapper (PRAW)
<https://github.com/praw-dev/praw>.
PRAW must be configured for this module to work.
https://praw.readthedocs.io/en/latest/
.. rubric:: Available formatters
* {submission_title}
@ -39,9 +42,11 @@ class Reddit(IntervalModule):
("format", "Format string used for output."),
("username", "Reddit username."),
("password", "Reddit password."),
('keyring_backend', 'alternative keyring backend for retrieving credentials'),
('keyring_backend', 'alternative keyring backend for retrieving \
credentials'),
("subreddit", "Subreddit to monitor. Uses frontpage if unspecified."),
("sort_by", "'hot', 'new', 'rising', 'controversial', or 'top'."),
("time_filter", "'all', 'day','hour', 'month', 'week', 'year'"),
("color", "Standard color."),
("colorize", "Enable color change on new message."),
("color_orangered", "Color for new messages."),
@ -56,6 +61,7 @@ class Reddit(IntervalModule):
keyring_backend = None
subreddit = ""
sort_by = "hot"
time_filter = "all"
color = "#FFFFFF"
colorize = True
color_orangered = "#FF4500"
@ -106,7 +112,8 @@ class Reddit(IntervalModule):
def connect(self):
if not self.reddit_session:
self.reddit_session = praw.Reddit(user_agent='i3pystatus', disable_update_check=True)
self.reddit_session = praw.Reddit(user_agent='i3pystatus',
disable_update_check=True)
return self.reddit_session
def get_redditor(self, reddit):
@ -129,45 +136,42 @@ class Reddit(IntervalModule):
"message_subject": "",
"message_body": ""
}
if self.password:
self.log_in(reddit)
unread_messages = sum(1 for i in reddit.get_unread())
if unread_messages:
d = vars(next(reddit.get_unread()))
message_info = {
"message_unread": unread_messages,
"message_author": d["author"],
"message_subject": d["subject"],
"message_body": d["body"].replace("\n", " "),
"status": self.status["new_mail"]
}
unread_messages = sum(1 for i in reddit.inbox.unread())
if unread_messages:
d = vars(next(reddit.inbox.unread()))
message_info = {
"message_unread": unread_messages,
"message_author": d["author"],
"message_subject": d["subject"],
"message_body": d["body"].replace("\n", " "),
"status": self.status["new_mail"]
}
return message_info
def log_in(self, reddit):
if not reddit.is_logged_in():
reddit.login(self.username, self.password, disable_warning=True)
def get_subreddit(self, reddit):
fdict = {}
subreddit_dict = {}
if self.subreddit:
s = reddit.subreddit(self.subreddit)
else:
s = reddit
s = reddit.front
if self.sort_by == 'hot':
if not self.subreddit:
subreddit_dict = vars(next(s.get_front(limit=1)))
else:
subreddit_dict = vars(next(s.get_hot(limit=1)))
subreddit_dict = vars(next(s.hot(limit=1)))
elif self.sort_by == 'new':
subreddit_dict = vars(next(s.get_new(limit=1)))
subreddit_dict = vars(next(s.new(limit=1)))
elif self.sort_by == 'rising':
subreddit_dict = vars(next(s.get_rising(limit=1)))
try:
subreddit_dict = vars(next(s.rising(limit=1)))
except StopIteration:
return
elif self.sort_by == 'controversial':
subreddit_dict = vars(next(s.get_controversial(limit=1)))
subreddit_dict = vars(next(s.controversial(
time_filter=self.time_filter,
limit=1))
)
elif self.sort_by == 'top':
subreddit_dict = vars(next(s.get_top(limit=1)))
subreddit_dict = vars(next(s.top(limit=1)))
fdict["submission_title"] = subreddit_dict["title"]
fdict["submission_author"] = subreddit_dict["author"]
fdict["submission_points"] = subreddit_dict["ups"]
@ -194,8 +198,3 @@ class Reddit(IntervalModule):
def open_link(self):
user_open(self._url)
if __name__ == "__main__":
reddit = Reddit()
reddit.username = "stay_at_home_daddy"
pprint.pprint(reddit.get_redditor(reddit.connect()))