def get_post_type_pushshift(submission: Dict) -> str: # TODO - Go over this whole function if submission.get('is_self', None): return 'text' post_hint = submission.get('post_hint', None) if post_hint: return post_hint image_exts = ['.jpg', '.png', '.jpeg', '.gif'] for ext in image_exts: if ext in submission['url']: #log.debug('Post URL %s is an image', submission['url']) return 'image' reddit = get_reddit_instance(config=Config()) is_video = submission.get('is_video', None) if is_video: #log.debug('Post %s has is_video value of %s. It is a video', submission['id'], is_video) # Since the push push obj didn't have a post hint, we need to query reddit print('Hitting Reddit API') reddit_sub = reddit.submission(id=submission['id']) post_hint = reddit_sub.__dict__.get('post_hint', None) if post_hint: #log.debug('Returning post hintg %s for post %s', post_hint, reddit_sub.id) return post_hint else: #log.debug('Unable to determine video type for post %s', reddit_sub.id) return 'video' # Last ditch to get post_hint reddit_sub = reddit.submission(id=submission['id']) return reddit_sub.__dict__.get('post_hint', None)
def __init__(self): self.config = Config() self.redlock = get_redlock_factory(self.config) self.reddit = get_reddit_instance(self.config) self.reddit_manager = RedditManager(self.reddit) self.uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(self.config)) self.event_logger = EventLogging(config=self.config) notification_svc = NotificationService(self.config) self.response_handler = ResponseHandler( self.reddit_manager, self.uowm, self.event_logger, source='summons', live_response=self.config.live_responses, notification_svc=notification_svc) dup_image_svc = DuplicateImageService(self.uowm, self.event_logger, self.reddit, config=self.config) response_builder = ResponseBuilder(self.uowm) self.summons_handler = SummonsHandler( self.uowm, dup_image_svc, self.reddit_manager, response_builder, self.response_handler, event_logger=self.event_logger, summons_disabled=False, notification_svc=notification_svc)
def __init__(self, config: Config = None): self.stats = WikiStats() if not config: self.config = Config() else: self.config = config self.reddit = get_reddit_instance(self.config)
def __init__(self): self.config = Config() self.reddit = get_reddit_instance(self.config) self.reddit_manager = RedditManager(self.reddit) self.uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(self.config)) event_logger = EventLogging(config=self.config) response_handler = ResponseHandler( self.reddit_manager, self.uowm, event_logger, source='submonitor', live_response=self.config.live_responses) dup_image_svc = DuplicateImageService(self.uowm, event_logger, self.reddit, config=self.config) response_builder = ResponseBuilder(self.uowm) self.sub_monitor = SubMonitor(dup_image_svc, self.uowm, self.reddit_manager, response_builder, response_handler, event_logger=event_logger, config=self.config)
import threading import time # TODO - Mega hackery, figure this out. import sys sys.path.append('./') from redditrepostsleuth.core.config import Config from redditrepostsleuth.core.db.db_utils import get_db_engine from redditrepostsleuth.core.db.uow.sqlalchemyunitofworkmanager import SqlAlchemyUnitOfWorkManager from redditrepostsleuth.core.util.reddithelpers import get_reddit_instance from redditrepostsleuth.summonssvc.summonsmonitor import SummonsMonitor if __name__ == '__main__': config = Config( '/home/barry/PycharmProjects/RedditRepostSleuth/sleuth_config.json') uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(config)) summons = SummonsMonitor(get_reddit_instance(config), uowm, config) threading.Thread(target=summons.monitor_for_mentions, name='mention_summons').start() #threading.Thread(target=summons.monitor_for_summons_pushshift, name='pushshift_summons').start() threading.Thread(target=summons.monitor_for_summons, name='praw_summons', args=(config.summons_subreddits, )).start() #threading.Thread(target=summons.monitor_for_summons, name='praw_summons_all').start() while True: time.sleep(10)
else: continue uow.commit() def queue_config_updates(uowm: UnitOfWorkManager, config: Config) -> NoReturn: print('[Scheduled Job] Queue config update check') redis = get_redis_client(config) if len(redis.lrange('config_update_check', 0, 20000)) > 0: log.info( 'Config update queue still has pending jobs. Skipping update queueing ' ) return with uowm.start() as uow: monitored_subs = uow.monitored_sub.get_all() for monitored_sub in monitored_subs: check_for_subreddit_config_update_task.apply_async( (monitored_sub, )) print('[Scheduled Job Complete] Queue config update check') if __name__ == '__main__': config = Config( r'/home/barry/PycharmProjects/RedditRepostSleuth/sleuth_config.json') notification_svc = NotificationService(config) reddit = get_reddit_instance(config) uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(config)) queue_config_updates(uowm, config)
comment_body=comment.body, perma_link=comment.permalink, source='toppost', comment_id=comment.id, subreddit=post.subreddit) with self.uowm.start() as uow: uow.bot_comment.add(bot_comment) try: uow.commit() except Exception as e: log.exception('Failed to save bot comment', exc_info=True) if __name__ == '__main__': config = Config() uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(config)) event_logger = EventLogging(config=config) dup = DuplicateImageService(uowm, event_logger, config=config) response_builder = ResponseBuilder(uowm) reddit_manager = RedditManager(get_reddit_instance(config)) top = TopPostMonitor(reddit_manager, uowm, dup, response_builder, ResponseHandler(reddit_manager, uowm, event_logger, source='toppost', live_response=config.live_responses), config=config) top.monitor()
from redditrepostsleuth.core.config import Config from redditrepostsleuth.core.db.db_utils import get_db_engine from redditrepostsleuth.core.db.uow.sqlalchemyunitofworkmanager import SqlAlchemyUnitOfWorkManager from redditrepostsleuth.core.services.reddit_manager import RedditManager from redditrepostsleuth.core.util.reddithelpers import get_reddit_instance from redditrepostsleuth.adminsvc.bot_comment_monitor import BotCommentMonitor def event_callback(event): print(event) if __name__ == '__main__': config = Config() uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(config)) reddit = get_reddit_instance(config) reddit_manager = RedditManager(reddit) notification_svc = NotificationService(config) comment_monitor = BotCommentMonitor(reddit_manager, uowm, config, notification_svc=notification_svc) stats_updater = StatsUpdater() activation_monitor = NewActivationMonitor( uowm, get_reddit_instance(config), notification_svc=notification_svc) event_logger = EventLogging(config=config) response_handler = ResponseHandler(reddit_manager, uowm, event_logger) inbox_monitor = InboxMonitor(uowm, reddit_manager.reddit, response_handler) #config_updater.update_configs()