예제 #1
0
 def test__send_mod_mail_not_enabled(self):
     mock_response_handler = Mock(send_mod_mail=Mock())
     sub_monitor = SubMonitor(MagicMock(), MagicMock(), MagicMock(), MagicMock(), mock_response_handler,
                              config=MagicMock())
     mock_monitored_sub = Mock(send_repost_modmail=False)
     sub_monitor._send_mod_mail(mock_monitored_sub, 'test')
     mock_response_handler.send_mod_mail.assert_not_called()
예제 #2
0
 def test__send_mod_mail_not_enabled(self, mock_len):
     mock_len.return_value = 5
     mock_response_handler = Mock(send_mod_mail=Mock())
     sub_monitor = SubMonitor(MagicMock(), MagicMock(), MagicMock(), MagicMock(), mock_response_handler,
                              config=MagicMock())
     monitored_sub = MonitoredSub(name='testsubreddit', send_repost_modmail=True)
     sub_monitor._send_mod_mail(monitored_sub, Mock(matches=[], checked_post=Mock(post_id='abc123')))
     expected_message_body = 'Post [https://redd.it/abc123](https://redd.it/abc123) looks like a repost. I found 5 matches'
     mock_response_handler.send_mod_mail.assert_called_with('testsubreddit', 'Repost found in r/testsubreddit', expected_message_body)
예제 #3
0
 def test__should_check_post__already_checked_reject(self):
     sub_monitor = SubMonitor(MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              config=Config(redis_host='dummy'))
     post = Post(left_comment=True)
     self.assertFalse(sub_monitor.should_check_post(post, True, True))
예제 #4
0
 def test__should_check_post__title_filter_accept(self):
     sub_monitor = SubMonitor(MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              config=Config(redis_host='dummy',
                                            supported_post_types=['image']))
     post = Post(left_comment=False, post_type='image', title='some post')
     self.assertTrue(sub_monitor.should_check_post(post, True, True))
예제 #5
0
 def test__should_check_post__reject_crosspost(self):
     sub_monitor = SubMonitor(MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              MagicMock(),
                              config=Config(redis_host='dummy',
                                            supported_post_types=['image']))
     post = Post(left_comment=False,
                 post_type='image',
                 crosspost_parent='dkjlsd')
     self.assertFalse(sub_monitor.should_check_post(post, True, True))
 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)
예제 #7
0
from redditrepostsleuth.submonitorsvc.submonitor import SubMonitor

if __name__ == '__main__':
    config = Config()
    event_logger = EventLogging(config=config)
    uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(config))
    response_builder = ResponseBuilder(uowm)
    reddit = get_reddit_instance(config)
    reddit_manager = RedditManager(reddit)
    dup = DuplicateImageService(uowm, event_logger, reddit, config=config)
    monitor = SubMonitor(dup,
                         uowm,
                         reddit_manager,
                         response_builder,
                         ResponseHandler(reddit_manager,
                                         uowm,
                                         event_logger,
                                         source='submonitor',
                                         live_response=config.live_responses),
                         event_logger=event_logger,
                         config=config)
    redis = get_redis_client(config)
    while True:
        while True:
            queued_items = redis.lrange('submonitor', 0, 20000)
            if len(queued_items) == 0:
                log.info('Sub monitor queue empty.  Starting over')
                break
            log.info('Sub monitor queue still has %s tasks', len(queued_items))
            time.sleep(60)
        with uowm.start() as uow:
config = Config(
    r'/home/barry/PycharmProjects/RedditRepostSleuth/sleuth_config.json')
reddit = get_reddit_instance(config)
uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(config))
reddit_manager = RedditManager(reddit)
event_logger = EventLogging(config=config)
response_handler = ResponseHandler(reddit_manager,
                                   uowm,
                                   event_logger,
                                   source='submonitor')
dup_image_svc = DuplicateImageService(uowm, event_logger, config=config)
response_builder = ResponseBuilder(uowm)
sub_monitor = SubMonitor(dup_image_svc,
                         uowm,
                         reddit_manager,
                         response_builder,
                         response_handler,
                         event_logger=event_logger,
                         config=config)

with uowm.start() as uow:
    post = uow.posts.get_by_post_id('iirpkm')
    target_hashes = get_image_hashes(post.searched_url, hash_size=32)

with uowm.start() as uow:
    monitored_subs = uow.monitored_sub.get_all()
    for sub in monitored_subs:
        #sub.target_image_match = 100 - (sub.target_hamming / 64) * 100
        sub.target_image_meme_match = 92
        uow.commit()