def feed(self, rssid, text): RssDb.init(Globals.rss_dbfile) # b = r.match(text) # if b: # text = text[b.end():] # encoding = b.groups()[0] # if encoding.lower() == 'gb2312': # encoding = 'gbk' # text = unicode(text, encoding).encode('utf-8') d = feedparser.parse(text) new = 0 RssDb.objectstore.begin() feed = RssDb.Feed.get(rssid) for i in d.entries: if not i.has_key('modified_parsed'): date = datetime.datetime.now() else: date = datetime.datetime(*i.modified_parsed[:-2]) if not i.has_key('comments'): i.comments = '' if not i.has_key('guid'): i.guid = i.link data = RssDb.Data.get_by(feed_id=rssid, guid=i.guid) if data: if i.title != data.title or i.description != data.description: data.title = i.title data.description = i.description data.pubDate = date data.read = False new += 1 else: data = RssDb.Data(guid=i.guid, title=i.title, comments=i.comments, description=i.description, link=i.link, pubDate=date, read=False, feed_id=rssid) new += 1 RssDb.objectstore.commit() if Globals.mainframe.pref.rss_auto_dig: self.parse_feed(feed, d.feed)