Advertisement
nai1ka

Untitled

Jan 18th, 2022
2,281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.85 KB | None | 0 0
  1. import requests
  2.  
  3. import datetime
  4. from datetime import date
  5. from flask import Flask
  6. import xml.etree.ElementTree as et
  7. from dateutil.relativedelta import relativedelta, MO, WE, TH, TU, SU, FR, SA
  8.  
  9. app = Flask(__name__)
  10.  
  11. login = {}
  12. password = {}
  13.  
  14. #Enter Telegram Token here
  15. TOKEN = "1022172563:AAH5HGKAjscE5bOmjVmUHq-RxnzIAPp-b0U"
  16.  
  17.  
  18. URL = "https://api.telegram.org/bot" + TOKEN + "/"
  19. now = datetime.datetime.now()
  20. today = date.today()
  21. monday = (today + relativedelta(weekday=MO(-1))).day
  22. tuesday = (today + relativedelta(weekday=TU(-1))).day
  23. wednesday = (today + relativedelta(weekday=WE(-1))).day
  24. thursday = (today + relativedelta(weekday=TH(-1))).day
  25. friday = (today + relativedelta(weekday=FR(-1))).day
  26. saturday = (today + relativedelta(weekday=SA(-1))).day
  27.  
  28. last_update_id = 0
  29.  
  30. now = datetime.datetime.now()
  31. mon = now.month
  32. moth = ""
  33. last_update_id = 0
  34. r = requests.models.Response
  35. ismonth = False
  36. user_login = {}
  37. user_password = {}
  38. proxies = {
  39.     'https': 'https://91.208.39.70:8080'
  40. }
  41.  
  42. if mon == 1:
  43.     moth = "Январь"
  44. if mon == 2:
  45.     moth = "Феварль"
  46. if mon == 3:
  47.     moth = "Март"
  48. if mon == 4:
  49.     moth = "Апрель"
  50. if mon == 5:
  51.     moth = "Май"
  52. if mon == 6:
  53.     moth = "Июнь"
  54. if mon == 7:
  55.     moth = "Июль"
  56. if mon == 8:
  57.     moth = "Август"
  58. if mon == 9:
  59.     moth = "Сентябрь"
  60. if mon == 10:
  61.     moth = "Октябрь"
  62. if mon == 11:
  63.     moth = "Ноябрь"
  64. if mon == 12:
  65.     moth = "Декабрь"
  66.  
  67. urok = []
  68. dz = []
  69. och = []
  70. headers = {
  71.     'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36',
  72.     'referer': 'https://edu.tatar.ru/logon'
  73. }
  74.  
  75.  
  76. # -----------------------------------------------------------------------------------
  77.  
  78. def auth(login, password, user_id):
  79.     headers = {
  80.         'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36',
  81.         'referer': 'https://edu.tatar.ru/logon'
  82.     }
  83.  
  84.  
  85.  
  86.     params = {
  87.         'main_login2': str(login[user_id]["login"]),
  88.         'main_password2': str(password[user_id]["password"])
  89.     }
  90.     session = requests.Session()
  91.     session.post("https://edu.tatar.ru/logon", params, headers=headers)
  92.  
  93.     return session
  94.  
  95.  
  96. # --------------------------------------------------------------------------------------
  97.  
  98. def collect(login, passwd, user_id, dayforcol):
  99.     r = auth(login, passwd, user_id).get("https://edu.tatar.ru/user/diary.xml")
  100.     # print(r.text)
  101.     if (r.text != "Restricted IP"):
  102.         data = dict.fromkeys(['Lesson', 'Homework', 'Mark'])
  103.         finish_lesson = []
  104.         homework = []
  105.         mark = []
  106.         root = et.XML(r.text)
  107.         for elem in root:
  108.             for day1 in elem:
  109.                 if (day1.attrib["date"] == str(dayforcol)) and (elem.attrib["month"] == moth):
  110.                     for lesson in day1.find("classes"):
  111.                         if lesson.text != None:
  112.  
  113.                             finish_lesson.append(lesson.text)  # УРОК
  114.                         else:
  115.                             finish_lesson.append("None")
  116.  
  117.                     for task in day1.find("tasks"):
  118.  
  119.                         if task.text != None and task.text != "  " and task.text != " ":
  120.                             homework.append(task.text)  # Задание
  121.                         else:
  122.                             homework.append("Нет ДЗ")
  123.                     for marks in day1.find("marks"):
  124.                         if marks.text != None:
  125.                             mark.append(marks.text)  # Домашка
  126.                         else:
  127.                             mark.append("Нет оценки")
  128.         data["Lesson"] = finish_lesson
  129.         data["Homewrok"] = homework
  130.         data["Mark"] = mark
  131.         return data
  132.  
  133.  
  134. def get_updates():
  135.     url = URL + "getupdates"
  136.     r = requests.get(url)
  137.  
  138.     return r.json()
  139.  
  140.  
  141. def get_message():
  142.     global last_update_id
  143.     current_update_id = 0
  144.     data = get_updates()
  145.     if len(data["result"]) > 0:
  146.         last_object = data["result"][-1]
  147.         current_update_id = last_object["update_id"]
  148.     if last_update_id != current_update_id and "text" in last_object["message"]:
  149.         last_update_id = current_update_id
  150.         chat_id = last_object["message"]["chat"]["id"]
  151.  
  152.         message_text = last_object["message"]["text"]
  153.         message = {
  154.             "chat_id": chat_id,
  155.             "text": message_text
  156.         }
  157.  
  158.         return message
  159.  
  160.  
  161. def send_message(chat_id, text="", parse_mode=""):
  162.     url = URL + "sendmessage?chat_id={}&text={}&parse_mode={}".format(chat_id, text, parse_mode)
  163.     requests.get(url)
  164.  
  165.  
  166. def main():
  167.     isFirstLaunch = True
  168.     input_login = False
  169.     input_passwd = False
  170.     while True:
  171.         answer = get_message()
  172.  
  173.  
  174.         if answer != None:
  175.             chat_id = answer["chat_id"]
  176.             text = answer["text"]
  177.             if "/start" in text or isFirstLaunch:
  178.                 isFirstLaunch = False
  179.                 send_message(chat_id,
  180.                              "Здравствуйте! Для подробной информации введите /help")
  181.                 send_message(chat_id, "Введите логин от вашего дневника.")
  182.                 input_login = True
  183.             elif len(text) == 10 and input_login == True:
  184.                 user_login[chat_id] = {"login": text}
  185.                 input_login = False
  186.                 send_message(chat_id, "Введите Ваш пароль от EduTatar")
  187.                 input_passwd = True
  188.             elif input_passwd == True:
  189.                 user_password[chat_id] = {"password": text}
  190.                 send_message(chat_id, "Авторизация прошла успешно. Введите день для получения оценок.")
  191.                 input_passwd = False
  192.             elif "Понедельник" in text or "/monday" in text:
  193.                 data = collect(user_login, user_password, chat_id, monday)
  194.                 send_message(chat_id, "*Понедельник*" + "\n" + "-----------------", parse_mode="Markdown")
  195.                 for i in range(len(data["Lesson"])):
  196.                     if (data["Lesson"][i] != "None"):
  197.                         send_message(chat_id,
  198.                                      "[" + str(i + 1) + "]" + "Урок: " + data["Lesson"][i] + "\nДомашняя работа: " +
  199.                                      data["Homewrok"][i] + "\nОценка: " + data["Mark"][i])
  200.                 send_message(chat_id, "-----------------", parse_mode="Markdown")
  201.             elif "Вторник" in text or "/tuesday" in text:
  202.                 data = collect(user_login, user_password, chat_id, tuesday)
  203.                 send_message(chat_id, "*Вторник*" + "\n" + "-----------------", parse_mode="Markdown")
  204.                 for i in range(len(data["Lesson"])):
  205.                     if (data["Lesson"][i] != "None"):
  206.                         send_message(chat_id,
  207.                                      "[" + str(i + 1) + "]" + "Урок: " + data["Lesson"][i] + "\nДомашняя работа: " +
  208.                                      data["Homewrok"][i] + "\nОценка: " + data["Mark"][i])
  209.                 send_message(chat_id, "-----------------", parse_mode="Markdown")
  210.             elif "Среда" in text or "/wednesday" in text:  # ЭТО
  211.                 data = collect(user_login, user_password, chat_id, wednesday)
  212.                 send_message(chat_id, "*Среда*" + "\n" + "-----------------", parse_mode="Markdown")  # ЭТО
  213.  
  214.                 for i in range(len(data["Lesson"])):
  215.                     if (data["Lesson"][i] != "None"):
  216.                         send_message(chat_id,
  217.                                      "[" + str(i + 1) + "]" + "Урок: " + data["Lesson"][i] + "\nДомашняя работа: " +
  218.                                      data["Homewrok"][i] + "\nОценка: " + data["Mark"][i])
  219.                 send_message(chat_id, "-----------------", parse_mode="Markdown")
  220.             elif "Четверг" in text or "/thursday" in text:  # ЭТО
  221.                 data = collect(user_login, user_password, chat_id, thursday)
  222.                 send_message(chat_id, "*Четверг*" + "\n" + "-----------------", parse_mode="Markdown")  # ЭТО
  223.                 for i in range(len(data["Lesson"])):
  224.                     if (data["Lesson"][i] != "None"):
  225.                         send_message(chat_id,
  226.                                      "[" + str(i + 1) + "]" + "Урок: " + data["Lesson"][i] + "\nДомашняя работа: " +
  227.                                      data["Homewrok"][i] + "\nОценка: " + data["Mark"][i])
  228.                 send_message(chat_id, "-----------------", parse_mode="Markdown")
  229.             elif "Пятница" in text or "/friday" in text:  # ЭТО
  230.                 data = collect(user_login, user_password, chat_id, friday)
  231.                 send_message(chat_id, "*Пятница*" + "\n" + "-----------------", parse_mode="Markdown")  # ЭТО
  232.                 for i in range(len(data["Lesson"])):
  233.                     if (data["Lesson"][i] != "None"):
  234.                         send_message(chat_id,
  235.                                      "[" + str(i + 1) + "]" + "Урок: " + data["Lesson"][i] + "\nДомашняя работа: " +
  236.                                      data["Homewrok"][i] + "\nОценка: " + data["Mark"][i])
  237.                 send_message(chat_id, "-----------------", parse_mode="Markdown")
  238.             elif "Суббота" in text or "/saturday" in text:  # ЭТО
  239.                 data = collect(user_login, user_password, chat_id, saturday)
  240.                 send_message(chat_id, "*Суббота*" + "\n" + "-----------------", parse_mode="Markdown")  # ЭТО
  241.                 for i in range(len(data["Lesson"])):
  242.                     if (data["Lesson"][i] != "None"):
  243.                         send_message(chat_id,
  244.                                      "[" + str(i + 1) + "]" + "Урок: " + data["Lesson"][i] + "\nДомашняя работа: " +
  245.                                      data["Homewrok"][i] + "\nОценка: " + data["Mark"][i])
  246.                 send_message(chat_id, "-----------------", parse_mode="Markdown")
  247.             elif "Завтра" in text or "/tommorow" in text:
  248.                 if (datetime.date.today() + datetime.timedelta(days=1)).isoweekday() != 7:
  249.                     data = collect(user_login, user_password, chat_id,
  250.                                    (datetime.date.today() + datetime.timedelta(days=1)).day)
  251.  
  252.                     send_message(chat_id, "*Завтра*" + "\n" + "-----------------", parse_mode="Markdown")  # ЭТО
  253.  
  254.                     for i in range(len(data["Lesson"])):
  255.                         if (data["Lesson"][i] != "None"):
  256.                             send_message(chat_id,
  257.                                          "[" + str(i + 1) + "]" + "Урок: " + data["Lesson"][i] + "\nДомашняя работа: " +
  258.                                          data["Homewrok"][i] + "\nОценка: " + data["Mark"][i])
  259.                     send_message(chat_id, "-----------------", parse_mode="Markdown")
  260.                 else:
  261.                     send_message(chat_id, "Завтра воскресенье!", parse_mode="Markdown")
  262.             elif "Сегодня" in text or "/today" in text:
  263.                 data = collect(user_login, user_password, chat_id, (datetime.date.today()).day)
  264.                 send_message(chat_id, "*Сегодня*" + "\n" + "-----------------", parse_mode="Markdown")  # ЭТО
  265.                 for i in range(len(data["Lesson"])):
  266.                     if (data["Lesson"][i] != "None"):
  267.                         send_message(chat_id,
  268.                                      "[" + str(i + 1) + "]" + "Урок: " + data["Lesson"][i] + "\nДомашняя работа: " +
  269.                                      data["Homewrok"][i] + "\nОценка: " + data["Mark"][i])
  270.                 send_message(chat_id, "-----------------", parse_mode="Markdown")
  271.             elif "/help" in text:
  272.                 send_message(chat_id, "Для обновления журнала используйте /update")
  273.                 send_message(chat_id,
  274.                              "Выберите день недели для получения оценок:" + "\n /today - сегодня \n /tommorow - завтра \n /monday - понедельник \n /tuesday - вторник \n /wednesday - среда \n /thursday - четверг \n /friday - пятница \n /saturday - суббота")
  275.  
  276.  
  277.             else:
  278.                 send_message(chat_id,
  279.                              "К сожалению, у меня нет такой команды. Введите /help для получения списка комманд", )
  280.         else:
  281.             continue
  282.  
  283.  
  284. main()
  285.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement