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