Im IRC sende ich ein Update von Redmine an Ikachan und benachrichtige es, aber ich habe nach langer Zeit ein Skript in Python geschrieben, weil ich es auch an Hipchat senden wollte. Die Bibliothek, die auf die API von HipChat trifft, ist offiziell organisiert. Python ist in PyPI, also können Sie es mit pip install python-hipchat installieren.
Ich denke, Sie können alles werfen, was mit RSS analysiert werden kann.
# -*- coding: utf-8 -*-
from datetime import datetime
from fcache.cache import FileCache
import feedparser
from hypchat import HypChat
import hashlib
import os
import pytz
import time
os.environ['TZ'] = 'UTC'
room_id = 123456
feed_url = "http://redmine/issue/atom/url"
feed = feedparser.parse(feed_url)
cache_key = hashlib.sha224(feed_url).hexdigest()
cache = FileCache('/tmp/redmine')
hc = HypChat("YOUR API TOKEN")
tz_utc = pytz.timezone('UTC')
if not cache.get(cache_key):
cache[cache_key] = time.mktime(datetime.now(tz_utc).timetuple())
last_updated = cache[cache_key]
for entry in feed['entries']:
updated = time.mktime(datetime.strptime(entry.updated, '%Y-%m-%dT%H:%M:%SZ').timetuple())
if int( last_updated ) >= int( updated ):
print "continue: %s > %s" % (cache[cache_key], updated)
continue
if cache[cache_key] <= updated:
cache[cache_key] = updated
if entry.authors[0].name:
name = entry.authors[0].name
message = '<a href="%s">%s</a> (%s)' % (entry.link, entry.title, name)
hc.get_room(room_id).notification(message, color='gray')
cache.close()
Ich dachte, es dauerte eine Weile, bis ich das Äquivalent von Cache :: FileCache in Perl gefunden hatte, und vergaß nach langer Zeit, Python zu schreiben.
Recommended Posts