Beispiel #1
0
    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)