· 4 years ago · Sep 06, 2021, 03:00 PM
1import redditclass as rc
2import requests
3import json
4import PySimpleGUI as sg
5import textwrap
6import time
7
8CLIENT_ID = '#'
9SECRET_KEY = '#'
10USERNAME = '#'
11PASSWORD = '#'
12
13reddit = rc.Reddit(CLIENT_ID, SECRET_KEY, USERNAME, PASSWORD)
14
15reddit.connect()
16
17userinfo = reddit.user_information(reddit.headers)
18
19
20rednotifs = reddit.user_inbox(reddit.headers)
21indexnumber = -1
22
23def redditnotifications(rednotifications):
24 mdata = rednotifications
25 notifications = []
26 for i in range(len(mdata)):
27 mail_data = mdata[i]
28 mytext = f"[Subreddit: {mail_data['subreddit']}] | [Author: {mail_data['author']}]"
29 notifications.append(mytext)
30 return notifications
31
32def update_list():
33 rednotifs = reddit.user_inbox(reddit.headers)
34 window.Element('-NOTIFICATIONS-').Update(values=[a for a in redditnotifications(rednotifs)])
35 indexnumber = -1
36
37
38file_list_column = [[
39 sg.Listbox(
40 values = [a for a in redditnotifications(rednotifs)],
41 enable_events=True,
42 size=(50,10),
43 key="-NOTIFICATIONS-"
44 )],]
45
46notification_viewer_column = [[sg.Text('Please select a notification', key='ap', size=(100,None), font=('Any 11'))],
47 [sg.Multiline(size=(100, 10), key='textbox')],
48 [sg.Button('Post Reply'), sg.Button('Mark as read')]]
49
50
51layout = [[
52 sg.Column(file_list_column),
53 sg.VSeperator(),
54 sg.Column(notification_viewer_column),
55 ]]
56
57sg.theme('DarkAmber')
58window = sg.Window("Reddit Notifications", layout, location=(0,0), resizable=True).Finalize()
59#window.Maximize()
60
61
62
63while True:
64
65 event, values = window.read()
66 if event == "-NOTIFICATIONS-":
67 try:
68 indexnumber = window[event].get_indexes()[0]
69 display_text = f"From: {rednotifs[indexnumber]['author']}\n\n{rednotifs[indexnumber]['message']}"
70 window.Element('ap').Update(display_text)
71 except:
72 pass
73 if event == "Post Reply":
74 if indexnumber >= 0:
75 parent_id = rednotifs[indexnumber]['id']
76 reddit.comment_reply(reddit.headers, parent_id, values['textbox'])
77 reddit.mark_read(reddit.headers,rednotifs[indexnumber]['id'])
78 window.Element('ap').Update("Replied to comment!")
79 window.Element('textbox').Update("")
80 time.sleep(2)
81 update_list()
82 if event == "Mark as read":
83 if indexnumber >= 0:
84 reddit.mark_read(reddit.headers,rednotifs[indexnumber]['id'])
85 window.Element('ap').Update("Marked as read!")
86 time.sleep(2)
87 update_list()
88 if event == "Exit" or event == sg.WIN_CLOSED:
89
90 break