import os, smtplib, time
class coupons:
def __init__(expiration_min, expiration_hour, time_of, expiration_day,
expiration_month, expiration_year, today_min, today_hour,
today_day, today_month, today_year, validity,
address, password, keyword, sent):
"""__init__ function"""
self.all_months_long = ["January", "February", "March",
"April", "May", "July", "August",
"September", "October", "November", "December"]
self.all_months_short = ["Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"]
self.expiration_min = expiration_min
self.expiration_hour = expiration_hour
self.time_of = time_of
self.expiration_day = expiration_day
self.expiration_month = expiration_month
self.expiration_year = expiration_year
self.today_min = today_min
self.today_hour = today_hour
self.today_day = today_day
self.today_month = today_month
self.today_year = today_year
self.validity = validity
self.address = address
self.password = password
self.keyword = keyword
self.sent = sent
def getExpirationMonth(self):
"""Get expiration month"""
try:
index = self.all_months_long.index(self.expiration_month)
index += 1
except ValueError:
try:
index = self.all_months_short.index(self.expiration_month)
index += 1
except ValueError:
print("\nThat is not a month.")
time.sleep(1)
os.system('cls')
coupons.getExpirationMonth(self)
else:
self.expiration_month = index
self.expiration_month = int(self.expiration_month)
else:
self.expiration_month = index
self.expiration_month = int(self.expiration_month)
def correctExpirationMin_value(self):
"""Corrects expiration_min value"""
try:
self.expiration_min = int(self.expiration_min)
except ValueError or TypeError:
if self.expiration_min == "none":
pass
else:
os.system('cls')
self.expiration_min = input("Enter minute: ")
coupons.correctExpirationMin_value(self)
else:
pass
def correctExpirationHour_value(self):
"""Corrects expiration_hour value"""
try:
self.expiration_hour = int(self.expiration_hour)
except ValueError or TypeError:
if self.expiration_hour == "none":
pass
else:
os.system('cls')
self.expiration_hour = input("Enter hour: ")
coupons.correctExpirationHour_value(self)
else:
pass
def correctExpirationHour_time(self):
"""Corrects expiration_hour"""
if self.expiration_min == "none" and self.expiration_hour == "none":
self.time_of = None
elif self.expiration_hour != "none":
if self.time_of == "AM":
pass
elif self.time_of == "PM":
self.expiration_hour += 12
else:
print("Please enter AM or PM")
time.sleep(1)
os.system('cls')
self.time_of = input("AM or PM: ")
os.system('cls')
coupons.correctExpirationHour(self)
else:
pass
if self.expiration_hour == 12:
if self.time_of == "AM":
self.expiration_hour = 0
def getUserMessage(self):
print("If you would like to receive an email",
"when your coupon expires, leave this",
"program running. Thank you!")
def testCoupon_date(self):
"""Evaluates expiration information"""
if (self.today_year > self.expiration_year):
self.validity = False
elif (self.today_year == self.expiration_year):
if (self.today_month > self.expiration_month):
self.validity = False
elif (self.today_month == self.expiration_month):
if (self.today_day > self.expiration_day):
self.validity = False
elif (self.today_day == self.expiration_day):
if (self.expiration_hour == "none"):
self.validity = False
elif (self.expiration_min == "none"):
self.validity = False
else:
if (self.today_hour > self.expiration_hour):
self.validity = False
elif (self.today_hour == self.expiration_hour):
if (self.today_min > self.expiration_min):
self.validity = False
elif (self.today_min == self.expiration_min):
print("This coupon expires this minute.")
self.validity = True
else:
print("This coupon is still valid.")
self.validity = True
coupons.getUserMessage(self)
else:
print("This coupon is still valid.")
self.validity = True
coupons.getUserMessage(self)
else:
print("This coupon is still valid.")
self.validity = True
coupons.getUserMessage(self)
else:
print("This coupon is still valid.")
self.validity = True
coupons.getUserMessage(self)
else:
print("This coupon is still valid.")
self.validity = True
coupons.getUserMessage(self)
if (self.validity == False):
print("This coupon has expired.")
def waitForExpiration(self):
if self.sent is True:
exit(None)
self.today_min = getattr(time.localtime(time.time()), "tm_min")
self.today_hour = getattr(time.localtime(time.time()), "tm_hour")
self.today_day = getattr(time.localtime(time.time()), "tm_mday")
self.today_month = getattr(time.localtime(time.time()), "tm_mon")
self.today_year = getattr(time.localtime(time.time()), "tm_year")
if self.today_year == self.expiration_year:
if self.today_month == self.expiration_month:
if self.today_day == self.expiration_day:
if self.today_hour != "none":
if self.today_hour == self.expiration_hour:
if self.today_min != "none":
if self.today_min == self.expiration_min:
coupons.createList(self)
coupons.email_createMessage(self, val="Your coupon has expired.")
self.sent = True
coupons.waitForExpiration(self)
elif ((self.today_min+5) == self.expiration_min):
coupons.createList(self)
coupons.email_createMessage(self, val="Your coupon expires in 5 minutes!")
coupons.waitForExpiration(self)
elif ((self.today_min+1) == self.expiration_min):
coupons.createList(self)
coupons.email_createMessage(self, val="Your coupon expires in 1 minute!")
coupons.waitForExpiration(self)
else:
pass
else:
coupons.waitForExpiration(self)
else:
coupons.createList(self)
coupons.email_createMessage(self, val="Your coupon expires in 1 hour.")
coupons.waitForExpiration(self)
else:
coupons.waitForExpiration(self)
else:
coupons.createList(self)
coupons.email_createMessage(self, val="Your coupon expires in 1 day.")
coupons.waitForExpiration(self)
else:
coupons.waitForExpiration(self)
else:
coupons.waitForExpiration(self)
# This is the beginning of the email functions
def createList(self):
global message
message = []
def email_createMessage(self, val):
"""Adds previous input to self.message"""
global message
message.append(val)
coupons.email_checkMessage(self)
def email_checkMessage(self):
"""Sees if self.keyword is in self.message"""
global message
try:
index = message.index(self.keyword)
except ValueError:
coupons.email_createMessage(self, val=self.keyword)
else:
del message[index]
coupons.email_transformMessage(self)
def email_transformMessage(self):
"""Joins all elements of self.message"""
global message
message = ' '.join(message[0 : len(message)])
coupons.email_sendMessage(self)
def email_sendMessage(self):
"""Sends message"""
global message
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login(self.address, self.password)
server.sendmail(self.address, self.address, message)
server.quit()
def main():
user = coupons(expiration_min = input("Enter minute \n(Enter 'none' if there is no minute): "),
expiration_hour = input("Enter hour \n(Enter 'none' if there is no hour): "),
time_of = input("AM or PM: "),
expiration_day = int(input("Enter day: ")),
expiration_month = input("Enter month: "),
expiration_year = int(input("Enter year: ")),
today_min = getattr(time.localtime(time.time()), "tm_min"),
today_hour = getattr(time.localtime(time.time()), "tm_hour"),
today_day = getattr(time.localtime(time.time()), "tm_mday"),
today_month = getattr(time.localtime(time.time()), "tm_mon"),
today_year = getattr(time.localtime(time.time()), "tm_year"),
validity = False,
address = input("Enter your email: "),
password = input("Enter your password: "),
keyword = input("Enter a keyword: "), sent=False)
user.correctExpirationMin_value()
user.correctExpirationHour_value()
user.correctExpirationHour_time()
user.getExpirationMonth()
user.testCoupon_date()
user.waitForExpiration()
coupons.main()
当我运行它时,这是结果错误: TypeError: init ()为参数' expiration_min'
获取了多个值我可以帮忙解决这个问题吗?我不知道它是如何接收多个值的。我三倍检查我的代码,无法搞清楚。所有帮助表示赞赏!谢谢!
答案 0 :(得分:0)
尝试使用$_REQUEST
rstrip()