En IRC, j'envoie une mise à jour de redmine à ikachan et je la notifie, mais j'ai écrit un script en python après un long moment car je voulais aussi le laisser couler dans hipchat. La bibliothèque qui accède à l'API de HipChat est officiellement organisée. python est dans PyPI, vous pouvez donc l'installer avec pip install python-hipchat.
Je pense que vous pouvez lancer tout ce qui peut être analysé avec RSS.
# -*- 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()
J'ai pensé qu'il fallait un certain temps pour trouver l'équivalent de Cache :: FileCache en Perl, et j'ai oublié d'écrire python après un long moment.
Recommended Posts