rendered paste bodydef GetFeed(self, url, target):
self.feed = twisted.web.client.getPage(url,timeout=10,followRedirect=0)
#print 'url: %s' % url
self.feed2 = self.feed.addCallback(self.parse_feed, url)
self.feed.addErrback(self.feed_error,url)
self.feed2.addCallback(self.output_feed,target,url)
def feed_error(self, data, url):
print 'error: %s' % data
# FeedMe Callback, Result processing. FIXME, blocking sorta.
def parse_feed(self, data, url):
url = url.split("?")[0]
#print 'url is: ', url
once = 0
link = {}
doc = libxml2dom.parseString(data, html=1)
items = doc.getElementsByTagName('item')
top = items[0]
bottom = items[len(items)-1]
title_top = top.getElementsByTagName('title')[0].childNodes[0].value
title_bottom = bottom.getElementsByTagName('title')[0].childNodes[0].value
if title_top > title_bottom:
item = top
elif title_bottom > title_top:
item = bottom
title = item.getElementsByTagName('title')[0].childNodes[0].value
guid = item.getElementsByTagName('guid')[0].childNodes[0].value
latesturl = MakeMeTiny(url +'%s' % guid)
# print 'result feed me: %s' % latesturl
d = defer.Deferred()
if not latesturl is None:
result = latesturl
else:
result = 'Fail'
reactor.callLater(1,d.callback,result)
return d
def output_feed(self,data, channel, url):
self.msg(channel,'url: %s link to latest kill: %s' % (url.strip('/?a=feed'),data))
#print 'output_feed: %s' % data