Mercurial > hg > Feedworm
view backend/sqlalchemy/FeedUpdater.py @ 259:304917762618 default tip
implementation of feed updates
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Tue, 12 Mar 2019 02:41:22 +0100 |
parents | bb3c851b18b1 |
children |
line wrap: on
line source
# -*- coding: utf-8 -*- from Feed import Feed from FeedEntry import FeedEntry from backend.AbstractFeedUpdater import AbstractFeedUpdater, FeedUpdateException from datetime import datetime import logging log = logging.getLogger("FeedUpdater") def _findFeedsToUpdate(session): return session.query(Feed).filter(Feed.next_update < datetime.now()) class FeedUpdater(AbstractFeedUpdater): @staticmethod def updateAllFeeds(preferences, session): allFeeds = _findFeedsToUpdate(session) for feed in allFeeds: try: FeedUpdater(preferences, session).update(feed) except FeedUpdateException, fue: log.warn("problems while updating feed " + feed.rss_url + ": " + str(fue)) session.commit() def __init__(self, preferences, session): AbstractFeedUpdater.__init__(self, preferences) self.session = session def _processEntry(self, entry): feedEntry = FeedEntry.findById(entry.id, self.session) if feedEntry is None: self._createFeedEntry(entry) def _createFeedEntry(self, entry): new = FeedEntry.create(entry) new.feed = self.feed self.session.add(new) log.info("new feed entry: " + entry.title) def _incrementFeedUpdateDate(self): self.feed.incrementNextUpdateDate()