this repo has no description
1from fnmatch import fnmatchcase 2 3from feeds.battle import BattleFeed 4from feeds.rapidfire import RapidFireFeed 5from feeds.popular import PopularFeed 6from feeds.homeruns import HomeRunsTeamFeed 7from feeds.norazone_interesting import NoraZoneInteresting 8from feeds.sevendirtywords import SevenDirtyWordsFeed 9from feeds.ratio import RatioFeed 10from feeds.mostliked import MostLikedFeed 11from feeds.outlinetags import OutlineTagsFeed 12from feeds.popqp import PopularQuotePostsFeed 13 14class FeedManager: 15 def __init__(self): 16 self.feeds = {} 17 18 def register(self, feed): 19 self.feeds[feed.FEED_URI] = feed() 20 21 def process_commit(self, commit): 22 for feed in self.feeds.values(): 23 feed.process_commit(commit) 24 25 def serve_feed(self, feed_uri, limit, offset, langs, debug=False): 26 for pattern, feed in self.feeds.items(): 27 if fnmatchcase(feed_uri, pattern): 28 break 29 else: 30 raise Exception('no matching feed pattern found') 31 32 if '*' in pattern and debug: 33 return feed.serve_wildcard_feed_debug(feed_uri, limit, offset, langs) 34 35 elif '*' in pattern and not debug: 36 return feed.serve_wildcard_feed(feed_uri, limit, offset, langs) 37 38 elif '*' not in pattern and debug: 39 return feed.serve_feed_debug(limit, offset, langs) 40 41 elif '*' not in pattern and not debug: 42 return feed.serve_feed(limit, offset, langs) 43 44 def commit_changes(self): 45 for feed in self.feeds.values(): 46 feed.commit_changes() 47 48 def stop_all(self): 49 for feed in self.feeds.values(): 50 try: 51 feed.stop_db_worker() 52 except AttributeError: 53 pass 54 55feed_manager = FeedManager() 56feed_manager.register(PopularFeed) 57feed_manager.register(MostLikedFeed)