10分前に放送アニメを通知する
サーバを入れ直して、なにがツラいって plagger の環境作り直すことですね。なんか毎回のようにハマるし悲しい限りです。今 plagger でやらせてることってのが、朝に今日の天気予報を push させるというのと、10分前に放送アニメを通知すること。天気予報はどうにでもなりそうだったので、アニメ通知のほうをなんとかできれば、いちいち plagger 入れる必要ないんじゃないかなーということで、python で書いてみた。
cron で10分間隔で回す。しょぼかるから番組情報を拾ってくる。〜10分後に放送する番組があったら im.kayac に push するという感じ。feedparser は標準じゃないので、apt-get install しよう!!!
#!/usr/bin/env python # coding: utf-8 import feedparser import datetime import urllib2, urllib import hashlib url = 'http://cal.syoboi.jp/rss2.php?usr=yutamoty&titlefmt=$(Mark)%20$(StTime)%20[$(ChName)]%20$(Title)%20$(SubTitleB)' class IMKayac: def __init__(self, id, password=None, sig=None): self.id = id self.password = password self.sig = sig def notify(self, msg): if isinstance(msg, unicode): msg = msg.encode('utf-8') path = 'http://im.kayac.com/api/post/%s' % self.id params = { 'message':msg, } if self.password: params['password'] = self.password if self.sig: params['sig'] = hashlib.sha1(msg+self.sig).hexdigest() urllib2.build_opener().open(path, urllib.urlencode(params)) d = datetime.datetime.today() d10 = d + datetime.timedelta(minutes=11) item = feedparser.parse(url) for entry in item['entries']: title = entry['title'] time = entry['updated'] t = datetime.datetime.strptime(time, '%Y-%m-%dT%H:%M:%S+09:00') if d <= t: if d10 >= t: if __name__ == '__main__': im = IMKayac('username','password','1') im.notify(title)
しょぼかるのRSSについてはヘルプを参照。ユーザ作って表示させる放送局をしぼらないと push されすぎてつらいと思う。
rss2.php - しょぼいカレンダーのヘルプ
これで、リアルタイムで見たいアニメがあった場合でも大丈夫。今期だと IS と まどかマギカ はリアルタイムで見るようにしてます。毎度、しょぼかるにはお世話になっております。