All pastes #985004 Raw Edit

Anonymous

public python v1 · immutable
·published 2008-04-14 18:27 UTC
rendered paste body
#!/usr/bin/pythonimport shaimport threadingimport timeimport urllibimport xml.saxpausetime = 5class Item:	def __init__(self):		self.id = None		self.description = None		self.title = None	def getId(self):		if self.id is not None:			return self.id		elif self.description is not None:			self.id = sha.sha(self.description.encode('UTF-8')).hexdigest()			return self.idclass Feed:	def __init__(self, url):		self.url = url		self.items = []	def addItem(self, item):		for it in self.items:			if it.getId() == item.getId():				# item already exists				return		self.items.append(item)		print "[ " + self.title + " > " + item.titleclass Reader:	feeds = []	def addFeed(self, feed):		self.feeds.append(feed)		#self.aggregate()	def aggregate(self):		for feed in self.feeds:			parser = xml.sax.make_parser()			parser.setContentHandler(RSSParser(feed))			parser.parse(feed.url)class Scheduler(threading.Thread):	def __init__(self, reader):		self.reader = reader		self.alive = True		threading.Thread.__init__(self)	def run(self):		print "Scheduler starting . . ."		while (self.alive):			self.reader.aggregate()			time.sleep(pausetime)	def kill(self):		self.alive = Falseclass RSSParser(xml.sax.handler.ContentHandler):	def __init__(self, feed):		self.feeed = feed		self.item = None		xml.sax.handler.ContentHandler.__init__(self)	def startElement(self, name, attr):		if name == "item":			self.item = Item()		self.data = ""	def endElement(self, name):		if self.item is None and name == "title":			self.feeed.title = self.data		if name == "item":			self.feeed.addItem(self.item)			self.item = None		if self.item is not None:			if name == "title":				self.item.title = self.data			elif name == "link":				self.item.link = self.data			elif name == "description":				self.item.description = self.data			def characters(self, c):		self.data += cala = Feed("http://www.alistapart.com/rss.xml")ajaxian = Feed("http://ajaxian.com/index.xml")quirksmode = Feed("http://www.quirksmode.org/blog/index.xml")reader = Reader()reader.addFeed(ala)reader.addFeed(ajaxian)reader.addFeed(quirksmode)sched = Scheduler(reader)sched.start()