updated module to use PRAW 4.3.0
This commit is contained in:
parent
6e0fe2ec90
commit
06cac68ae3
@ -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()))
|
||||
|
Loading…
Reference in New Issue
Block a user