main.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import asyncio
  2. import requests
  3. import time
  4. import random
  5. import argparse
  6. from rich.console import Console
  7. from rich.table import Table
  8. from scraper import Parser
  9. from proxy import ParserProxy
  10. import config
  11. def get_input_parameters():
  12. """ Получаем входные аргументы """
  13. parser = argparse.ArgumentParser()
  14. parser.add_argument('-b', dest='display_browser', default='no', required=False) # Отображение браузера для основного парсинга
  15. parser.add_argument('-bp', dest='display_browser_for_proxy', default='no', required=False) # Отображение браузера для парсинга прокси
  16. parser.add_argument('-l', dest='link', default='link') # Ссылка на страницу для парсинга
  17. parser.add_argument('-np', dest='number_pages', default='15') # Ссылка на страницу для парсинга
  18. arguments = parser.parse_args()
  19. display_browser = arguments.display_browser
  20. display_browser_for_proxy = arguments.display_browser_for_proxy
  21. link = arguments.link
  22. number_pages = int(arguments.number_pages)
  23. data = (display_browser, display_browser_for_proxy, link, number_pages)
  24. return data
  25. def notify_about_order_search_result(orders):
  26. """ Уведомляем о результате поиска заказов """
  27. if orders:
  28. for order in orders:
  29. message = order[0]
  30. link = 'https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}'.format(config.token, config.admin_id, message)
  31. requests.get(link)
  32. if len(orders) == 1:
  33. return 'Появился новый заказ'
  34. else:
  35. return 'Появились новые заказы ({})'.format(len(orders))
  36. else:
  37. message = 'Новых заказов нет'
  38. link = 'https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}'.format(config.token, config.admin_id, message)
  39. requests.get(link)
  40. return 'Новых заказов нет'
  41. def make_pause(data, count, well_what, launch_time):
  42. """ Сообщаем информацию """
  43. current_time = str(time.ctime(time.time()))
  44. waiting_time_seconds = random.uniform(250, 300)
  45. waiting_time_minutes = str(waiting_time_seconds / 60)
  46. waiting_time_seconds = str(random.uniform(250, 300))
  47. number_pages = str(data[-1])
  48. table = Table(title='Weblancer ({})'.format(number_pages))
  49. table.add_column('#', justify='left', style='green')
  50. table.add_column('Message', justify='left', style='green')
  51. table.add_column('Waiting time', justify='left', style='green')
  52. table.add_column('Current time', justify='left', style='green')
  53. table.add_column('Launch time', justify='left', style='green')
  54. table.add_row(str(count), well_what, waiting_time_minutes, current_time, launch_time)
  55. console = Console()
  56. print()
  57. console.print(table)
  58. print()
  59. time.sleep(float(waiting_time_seconds))
  60. def main():
  61. """ Запуск бота """
  62. count = 0
  63. launch_time = time.ctime(time.time())
  64. while True:
  65. final_result = []
  66. data = get_input_parameters()
  67. parser = Parser(data)
  68. asyncio.run(parser.start_parsing(final_result))
  69. well_what = notify_about_order_search_result(final_result)
  70. make_pause(data, count, well_what, launch_time)
  71. count += 1
  72. # ТОЧКА ВХОДА
  73. if __name__ == '__main__':
  74. main()