コード例 #1
0
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)
コード例 #2
0
 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)
コード例 #3
0
    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)
コード例 #4
0
 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)
コード例 #5
0
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)
コード例 #6
0
            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)
コード例 #7
0
                                 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()
コード例 #8
0
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()