123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- import asyncio
- import requests
- import time
- import random
- import argparse
- from rich.console import Console
- from rich.table import Table
- from scraper import Parser
- from proxy import ParserProxy
- import config
- def get_input_parameters():
- """ Получаем входные аргументы """
- parser = argparse.ArgumentParser()
- parser.add_argument('-b', dest='display_browser', default='no', required=False) # Отображение браузера для основного парсинга
- parser.add_argument('-bp', dest='display_browser_for_proxy', default='no', required=False) # Отображение браузера для парсинга прокси
- parser.add_argument('-l', dest='link', default='link') # Ссылка на страницу для парсинга
- parser.add_argument('-np', dest='number_pages', default='15') # Ссылка на страницу для парсинга
- arguments = parser.parse_args()
- display_browser = arguments.display_browser
- display_browser_for_proxy = arguments.display_browser_for_proxy
- link = arguments.link
- number_pages = int(arguments.number_pages)
- data = (display_browser, display_browser_for_proxy, link, number_pages)
- return data
- def notify_about_order_search_result(orders):
- """ Уведомляем о результате поиска заказов """
- if orders:
- for order in orders:
- message = order[0]
- link = 'https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}'.format(config.token, config.admin_id, message)
- requests.get(link)
- if len(orders) == 1:
- return 'Появился новый заказ'
- else:
- return 'Появились новые заказы ({})'.format(len(orders))
- else:
- message = 'Новых заказов нет'
- link = 'https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}'.format(config.token, config.admin_id, message)
- requests.get(link)
- return 'Новых заказов нет'
- def make_pause(data, count, well_what, launch_time):
- """ Сообщаем информацию """
- current_time = str(time.ctime(time.time()))
- waiting_time_seconds = random.uniform(250, 300)
- waiting_time_minutes = str(waiting_time_seconds / 60)
- waiting_time_seconds = str(random.uniform(250, 300))
- number_pages = str(data[-1])
- table = Table(title='Weblancer ({})'.format(number_pages))
- table.add_column('#', justify='left', style='green')
- table.add_column('Message', justify='left', style='green')
- table.add_column('Waiting time', justify='left', style='green')
- table.add_column('Current time', justify='left', style='green')
- table.add_column('Launch time', justify='left', style='green')
- table.add_row(str(count), well_what, waiting_time_minutes, current_time, launch_time)
- console = Console()
- print()
- console.print(table)
- print()
- time.sleep(float(waiting_time_seconds))
- def main():
- """ Запуск бота """
- count = 0
- launch_time = time.ctime(time.time())
- while True:
- final_result = []
- data = get_input_parameters()
- parser = Parser(data)
- asyncio.run(parser.start_parsing(final_result))
- well_what = notify_about_order_search_result(final_result)
- make_pause(data, count, well_what, launch_time)
- count += 1
- # ТОЧКА ВХОДА
- if __name__ == '__main__':
- main()
|