Exemple #1
0
def handle_whois_queue():
    """
    read visitors from database table and look for whois info
    :return: nothing
    """
    if is_whois_locked():
        return False
    lock_whois(True)
    try:
        visitor_lst = read_queue()
        for visitor in visitor_lst:
            ws = WhoisTracker()
            dbman = DbManager()
            dbman.connect()
            try:
                handle_whois(ws,
                             dbman,
                             visitor_ip=visitor['visitor_ip'],
                             referer_url=visitor['referer_url'],
                             page_url=visitor['page_url'],
                             datetime_of_visit=visitor['datetime_of_visit']
                )
                del_visitor_from_queue(visitor['id'], dbman.conn)
                dbman.commit_changes(True)
            except:
                dbman.commit_changes(False)
                raise
            finally:
                dbman.close(commit=None)
    finally:
        lock_whois(False)

    return True
def track_whois(visitor_id, ip):
    """

    :param visitor_id: id of the visitor table
    :param ip: visitor ip_address
    :return: nothing
    """
    dbman = DbManager()
    dbman.connect()
    org_id = dbman.find_org_by_ip(ip)
    if org_id is None:
        ws = WhoisScraper()
        whois_tuple = ws.scrape_whois(ip)
        if whois_tuple is not None:
            org_id = dbman.append_new_org(whois_tuple)
            dbman.update_visitor(visitor_id, org_id)
    else:
        dbman.update_visitor(visitor_id, org_id)

    dbman.close()
Exemple #3
0
URL = 'https://api.telegram.org/bot{BOT_API_KEY}/sendMessage?chat_id={CHANNEL_NAME}&text={MESSAGE_TEXT}'

CHANNEL_NAME = '<channel_name>'

MSG_TEMPLATE = '''На форуме новый вопрос: "{title}"
Опубликуйте ответ тут: {link}'''

if __name__ == '__main__':
    print('Start')
    posts = get_content()
    if len(posts) == 0:
        exit(0)

    db = DbManager('test.db')
    db.connect()
    for post in posts:
        title = post['title']
        link = post['link']
        result = db.find_post(title)

        if len(result) == 0:
            db.add_new_post(title, link)
            msg = MSG_TEMPLATE.format(title=title, link=link)
            url = URL.format(
                BOT_API_KEY=API_KEY,
                CHANNEL_NAME=CHANNEL_NAME,
                MESSAGE_TEXT=msg
            )

            resp = requests.post(url)