コード例 #1
0
def run_praw_tasks():
    global logger
    from bot import RedditAgent
    cfg = configparser.ConfigParser()

    r = RedditAgent(ini_section='flairbot', user_agent='Flair helper by /u/gschizas version 0.2')

    search_space = json.loads(cfg.get('tasks', 'bitcoin_flair'))

    subreddits = {s[0] for s in search_space}

    offending_users = []
    sys.exit(99)
    for subreddit in subreddits:
        sr = r.get_subreddit(subreddit)
        flair_list = list(sr.get_flair_list(limit=None))
        flair_templates = sr.get_flair_choices()
        default_flair_text = {f['flair_css_class'][6:]: f['flair_text'] for f in flair_templates['choices']}
        extended_flair_list = [dict(
            f.items() | {'is_custom': default_flair_text.get(f['flair_css_class'], '***') != f['flair_text']}.items())
                               for f in flair_list]

        with open('flair_list-{}.json'.format(subreddit), mode='w', encoding='utf-8') as f:
            json.dump(extended_flair_list, f, ensure_ascii=False, sort_keys=True)

        for flair_item in flair_list:
            flair_text = flair_item.get('flair_text')
            if flair_text:
                bitcoin_addresses = re.findall('[13][a-km-zA-HJ-NP-Z0-9]{26,33}', flair_text)
                if len(bitcoin_addresses) > 0:
                    logging.warning(bitcoin_addresses)
                if any([check_bc(bc) for bc in bitcoin_addresses]):
                    offending_users.append([subreddit, flair_item['user']])
                if check_hyperlink(flair_text):
                    offending_users.append([subreddit, flair_item['user']])

    if len(offending_users) > 0:
        logging.warning(offending_users)
        existing_users = json.loads(cfg.get('tasks', 'bitcoin_flair'))
        full_users = offending_users + existing_users

        cfg.set('tasks', 'bitcoin_flair', json.dumps(list({(x[0], x[1]) for x in full_users})))

        cfg.write(sys.stdout)

        with open('flair-bot.ini', 'w') as f:
            cfg.write(f)

    r.clear_authentication()