#/usr/bin/env python # -*- coding: utf-8 -*- import time, random, sys, os, smtplib if sys.version < '3': from Tkinter import * else: from tkinter import * randommsgnext="randommsgnext.txt" # delay between two msg is 2-5 hours mydelayfrom=2 * 3600 # mydelayto=5 * 3600 #which time to call me up, 0 is Monday timesOn=((0,"07:00","09:55"), (0,"11:40","22:00"), (1,"07:00","11:30"), (1,"15:15","22:00"), (2,"07:00","10:45"), (2,"14:20","22:00"), (3,"14:20","22:00"), (4,"07:00","12:30"), (4,"14:20","22:00"), ) def sendMail(): # sends mail s = smtplib.SMTP(smtp) s.login(name, password) subject="Reminder" fromaddr=fromadr toaddrs= [toadr] text= "Do what you should do.\n%s" % time.ctime() msg = ("Subject: %s\nFrom: %s\nTo: %s\n\n%s" % (subject, fromaddr, ", ".join(toaddrs), text)) s.sendmail(fromaddr, toaddrs, msg) s.quit() def sendSMS(): # sends sms message={'user': user, 'password': password, 'sender': fromnumber, 'recipient': tonumber, 'message': "goodbye"} if sys.version < '3': import urllib params = urllib.urlencode(message) f=urllib.urlopen(http, params) else: import urllib.parse import urllib.request params = urllib.parse.urlencode(message) f = urllib.request.urlopen(http % params) def showMessage(): # show tkinter box root=Tk() x = (root.winfo_screenwidth() - root.winfo_reqwidth()) / 2 y = (root.winfo_screenheight() - root.winfo_reqheight()) / 2 root.geometry("+%d+%d" % (x, y)) root.protocol('WM_TAKE_FOCUS', root.update ) root.wait_visibility(root) root.attributes('-topmost',1) label=Label(root, text="S bohem", width="10").pack({"side": "left"}) button=Button(text="OK", width="10", command=lambda:root.destroy()).pack() root.mainloop() def hours2dec(what): # convert 5:30 to 5.5 if type(what)==type(""): what=what.split(":") return int(what[0])+int(what[1])/60.0 def checktime(nowtime): # send msg only at timesOn for day, timefrom, timeto in timesOn: timefromdec= hours2dec(timefrom) timetodec=hours2dec(timeto) timenowdec=hours2dec([nowtime.tm_hour,nowtime.tm_min]) if nowtime.tm_wday == day and timefromdec<=timenowdec<=timetodec: return True return False def timenextwritef(): # write the next time to file f=open(randommsgnext,"w") timenext=time.mktime (nowtime)+delaysec f.write(time.ctime(timenext)+"\n") f.close() os.utime(randommsgnext, None) nowtime=time.localtime() os.chdir(os.path.dirname(sys.argv[0])) while True: # run indefinitely delaysec=random.randint(mydelayfrom,mydelayto) timenextwritef() time.sleep(delaysec) # sleep nowtime=time.localtime() if checktime(nowtime): print (str(nowtime.tm_hour)+":"+str(nowtime.tm_min)+":"+str(nowtime.tm_sec)) # sendMail() # sendSMS() # showMessage()