-
Notifications
You must be signed in to change notification settings - Fork 0
/
newsletter.py
87 lines (62 loc) · 2.64 KB
/
newsletter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import requests
import praw
import smtplib
import datetime
import os
from dotenv import load_dotenv
load_dotenv()
def get_movie_detail():
reddit = praw.Reddit(client_id="BSxCJm9uPRKkwQ",
client_secret="ZOTBhDsxqxL4_UJWZn4pLVdM4ek",
user_agent="u/ShahJr")
subreddit = reddit.subreddit('MovieSuggestions')
movie_detail = {'title': None, 'text': None, 'author':None}
for submission in subreddit.search('flair:"SUGGESTING"',sort='top',time_filter='week',limit=1):
movie_detail['title'] = submission.title
movie_detail['text'] = submission.selftext
movie_detail['author'] = str(submission.author)
return movie_detail
def get_subscribed_users():
api_key = os.environ.get("MAILGUN_API_KEY")
url = f"https://api:{api_key}@api.mailgun.net/v3/lists/[email protected]/members"
response = requests.get(url).json()
print(requests.get(url).raise_for_status)
data_list = response["items"]
email_list = []
for dict in data_list:
email_list.append(dict["address"])
return email_list
def send_mail():
email = '[email protected]'
password = 'Herald54321@##'
print("Fetching email of subscirbed users")
send_to = get_subscribed_users()
print("Fetching the highest rated movie from r/MovieSuggestions")
movie_detail = get_movie_detail()
subject = f"[Suggestion Bot] {movie_detail['title']} - r/MovieSuggestions"
# body = f"Hi {send_to.split(sep='@')[0]},\n\n{movie_detail['text']}"
body = f"Hi there,\n\n{movie_detail['text']}"
mail = f"Subject: {subject}\n\n{body} - by {movie_detail['author']}.\n\nThanks,\nWeekly top rated movie\nAutomated email using python"
print("Establishing a SMTP connection")
conn = smtplib.SMTP('smtp.gmail.com',587)
conn.ehlo()
conn.starttls()
conn.ehlo()
conn.login(email, password)
for user in send_to:
print("Sending email to " + user)
conn.sendmail(email, user, mail.encode("utf-8"))
print("Sucessful, check your inbox!")
conn.quit()
today = datetime.date.today()
if today.isoweekday() == 5:
print("Sending weekly newsletter.")
send_mail()
# send_time = datetime.datetime.utcnow()
# interval = datetime.timedelta(minutes=1)
# while True:
# send_time = send_time + interval
# time.sleep((send_time.timestamp()) - time.mktime(time.gmtime(time.time())))
# print('Sending email')
# send_mail()
# print('email sent')