main.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import requests # Модуль для обработки URL
  2. from bs4 import BeautifulSoup # Модуль для работы с HTML
  3. import time # Модуль для остановки программы
  4. import smtplib # Модуль для работы с почтой
  5. # Основной класс
  6. class Currency:
  7. # Ссылка на нужную страницу
  8. #DOLLAR_RUB = 'https://www.google.com/search?sxsrf=ALeKk01NWm6viYijAo3HXYOEQUyDEDtFEw%3A1584716087546&source=hp&ei=N9l0XtDXHs716QTcuaXoAg&q=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+%D0%BA+%D1%80%D1%83%D0%B1%D0%BB%D1%8E&oq=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+&gs_l=psy-ab.3.0.35i39i70i258j0i131l4j0j0i131l4.3044.4178..5294...1.0..0.83.544.7......0....1..gws-wiz.......35i39.5QL6Ev1Kfk4'
  9. DOLLAR_GRN = 'https://www.google.com/search?q=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+%D0%BA+%D0%B3%D1%80%D0%B8%D0%B2%D0%BD%D0%B5&ei=r-DMYMOEDpKVkwWon7TIAQ&oq=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+%D0%BA+&gs_lcp=Cgdnd3Mtd2l6EAEYATIMCAAQsQMQQxBGEIICMgUIABCxAzIFCAAQsQMyBQgAELEDMgIIADICCAAyAggAMgIIADICCAAyAggAOgcIABBHELADOgcIABCwAxBDOgcIABCxAxBDOgQIABAKUKgXWJcdYPwvaAFwAngAgAGcAYgBlgWSAQM0LjKYAQCgAQGqAQdnd3Mtd2l6yAEKwAEB&sclient=gws-wiz'
  10. # Заголовки для передачи вместе с URL
  11. headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
  12. current_converted_price = 0
  13. difference = 5 # Разница после которой будет отправлено сообщение на почту
  14. def __init__(self):
  15. # Установка курса валюты при создании объекта
  16. self.current_converted_price = float(self.get_currency_price().replace(",", "."))
  17. # Метод для получения курса валюты
  18. def get_currency_price(self):
  19. # Парсим всю страницу
  20. full_page = requests.get(self.DOLLAR_GRN, headers=self.headers)
  21. # Разбираем через BeautifulSoup
  22. soup = BeautifulSoup(full_page.content, 'html.parser')
  23. # Получаем нужное для нас значение и возвращаем его
  24. convert = soup.findAll("span", {"class": "DFlfde", "class": "SwHCTb", "data-precision": 2})
  25. return convert[0].text
  26. # Проверка изменения валюты
  27. def check_currency(self):
  28. currency = float(self.get_currency_price().replace(",", "."))
  29. if currency >= self.current_converted_price + self.difference:
  30. print("Курс сильно вырос, может пора что-то делать?")
  31. self.send_mail()
  32. elif currency <= self.current_converted_price - self.difference:
  33. print("Курс сильно упал, может пора что-то делать?")
  34. self.send_mail()
  35. print("Сейчас курс: 1 доллар к гривне = " + str(currency))
  36. time.sleep(3) # Засыпание программы на 3 секунды
  37. self.check_currency()
  38. # Отправка почты через SMTP
  39. def send_mail(self):
  40. server = smtplib.SMTP('smtp.gmail.com', 587)
  41. server.ehlo()
  42. server.starttls()
  43. server.ehlo()
  44. server.login('ВАША ПОЧТА', 'ПАРОЛЬ')
  45. subject = 'Currency mail'
  46. body = 'Currency has been changed!'
  47. message = f'Subject: {subject}\n{body}'
  48. server.sendmail(
  49. 'От кого',
  50. 'Кому',
  51. message
  52. )
  53. server.quit()
  54. # Создание объекта и вызов метода
  55. currency = Currency()
  56. currency.check_currency()