秘書スクリプト(スケジュール編)

当日のスケジュールをメールするスクリプト


schedule.txt(スケジュール記述ファイル:日付,時刻,内容)

2005-12-13,10:00,Math
2005-12-13,13:00,English
2005-12-13,15:00,Science
2005-12-14,12:00,Education
2005-12-14,18:00,Birthday Party
2005-12-16,12:00,Shopping

Scheduler.py

#!/usr/bin/python

import time, smtplib, string
schefile = '/home/laclef/scripts/schedule.txt' # スケジュール記述ファイル
fromadd  = 'laclef@myserver.com'     # Fromに表示されるアドレス
toadd    = 'laclef@cellular.com'     # To 送り先のアドレス
smtpserv = 'smtp.myserver.com'       # SMTPサーバ
def schemail(msg):
 subj  = "Today's Schedule"          # メールタイトル
 mdata = ('From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s') %\
  (fromadd, toadd, subj, msg)
 ss = smtplib.SMTP(smtpserv)
 ss.sendmail(fromadd, toadd, mdata)
 ss.quit()
def scheduler():
 msg = ''
 nsche = []
 nowt = time.strftime('%Y-%m-%d')
 schedata = open(schefile).readlines()
 schedata.sort()
 for row in schedata:
  string.rstrip(row)
  r = string.split(row, ',')
  if r[0] == nowt:
   msg += r[1] + '  ' + r[2] + '\n'
  else:
   nsche.append(row)
 if msg != '':
  schemail(msg)
 schef = open(schefile, 'w')
 for row in nsche:
  schef.write(row)
 schef.close()
if __name__=='__main__' :
 scheduler()

メールで送信された古いスケジュールは削除される。
残りのスケジュールはソート後、保存される。
スケジュールを追加する場合は、スケジュール記述ファイルに1行ずつ追加すれば良い。
これを、cronに登録する。

$ pwd
/home/laclef/scripts
$ chmod u+x Scheduler.py
$ crontab -e
00 8 * * * /home/laclef/scripts/Scheduler.py
$ crontab -l
00 8 * * * /home/laclef/scripts/Scheduler.py

これで、毎日8時に当日のスケジュールがメールされる。
Windowsで実行する場合は、4行目のスケジュール記述ファイルのパスを変更して、「Multi Function Alarm」*1の様なソフトウェアででコマンド実行させれば出来る。
朝の仕事が1つ減った。