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()
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)