Финальные штрихи

This commit is contained in:
lulzette 2023-05-13 17:26:49 +03:00
parent 25f65f7680
commit 909cd91c2b

51
main.py
View File

@ -9,14 +9,19 @@
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import re import re
import requests import requests
import sys
useragent = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0" useragent = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0"
stud_group = "3131"
if __name__ == '__main__': if __name__ == '__main__':
print("Hello, fucker") fucker_name = "Тебя"
print("Hello, fucker, what is ur name?")
fucker_name = input()
print("Your group?")
stud_group = input()
if stud_group == '':
print("Введи группу")
sys.exit(1)
init_url = "https://guap.ru/rasp/" init_url = "https://guap.ru/rasp/"
init_headers = { init_headers = {
'User-Agent': useragent 'User-Agent': useragent
@ -24,12 +29,6 @@ if __name__ == '__main__':
init_html = requests.get(init_url, headers=init_headers) init_html = requests.get(init_url, headers=init_headers)
soup = BeautifulSoup(init_html.text.strip(), 'html.parser') soup = BeautifulSoup(init_html.text.strip(), 'html.parser')
# print(soup.prettify())
# print(soup.findAll('группа:'))
# print(soup.getText())
# crypted_shit = soup.find('div', class_="aspNetHidden")
# Реверс инжиринг __doPostBack # Реверс инжиринг __doPostBack
# #
@ -82,8 +81,6 @@ if __name__ == '__main__':
val = soup.find('input', {"id": i['name']}) val = soup.find('input', {"id": i['name']})
i['value'] = val.get('value') i['value'] = val.get('value')
# print(cryptshits)
# Теперь нам надо распарсить список групп и найти нужную # Теперь нам надо распарсить список групп и найти нужную
rasp = soup.find('div', {"class": "rasp"}) rasp = soup.find('div', {"class": "rasp"})
@ -99,7 +96,6 @@ if __name__ == '__main__':
break break
else: else:
for group in group_html_block.parent.findAll('option'): for group in group_html_block.parent.findAll('option'):
# print(group.contents, group.get('value'))
if group.get('value') != "-1": if group.get('value') != "-1":
groups.append({ groups.append({
"name": group.contents[0], "name": group.contents[0],
@ -119,7 +115,6 @@ if __name__ == '__main__':
post_data["&ctl00%24cphMain%24ctl06"] = -1 post_data["&ctl00%24cphMain%24ctl06"] = -1
post_data["&ctl00%24cphMain%24ctl07"] = -1 post_data["&ctl00%24cphMain%24ctl07"] = -1
post_data["&ctl00%24cphMain%24ctl08"] = -1 post_data["&ctl00%24cphMain%24ctl08"] = -1
# print(post_data)
post_headers = {"Content-Type": "application/x-www-form-urlencoded", 'User-Agent': useragent} post_headers = {"Content-Type": "application/x-www-form-urlencoded", 'User-Agent': useragent}
post_url = "https://guap.ru/rasp/?g={}".format(post_data['ctl00%24cphMain%24ctl05']) post_url = "https://guap.ru/rasp/?g={}".format(post_data['ctl00%24cphMain%24ctl05'])
@ -131,8 +126,6 @@ if __name__ == '__main__':
# В переменную записываем само расписание, без остальной страницы # В переменную записываем само расписание, без остальной страницы
rasp_html = soup_result.find('div', {'class', 'result'}) rasp_html = soup_result.find('div', {'class', 'result'})
# print(result_html.prettify())
rasp_summary = list() rasp_summary = list()
# Пример rasp_summary # Пример rasp_summary
# ( # (
@ -151,16 +144,15 @@ if __name__ == '__main__':
# 1012 # 1012
# ), # ),
# "place": " Б.Морская 67, ауд. спортзал*", # "place": " Б.Морская 67, ауд. спортзал*",
# "up_or_down": None # "up_or_down": 'none'
# } # }
# ) # )
# } # }
# ) # )
# Верхняя - нечетная неделя
# Нижняя - четная неделя
# Верстка сайта на высоте. Придется использовать next_siblings. Хвататься не за что. # Верстка сайта на высоте. Придется использовать next_siblings. Хвататься не за что.
# print(rasp_html.prettify())
rasp_html_inside = rasp_html.find('div') rasp_html_inside = rasp_html.find('div')
# Это будет ужасно... # Это будет ужасно...
cur_day = "" cur_day = ""
@ -191,9 +183,9 @@ if __name__ == '__main__':
# Верхняя или нижняя? # Верхняя или нижняя?
up_or_down = 'none' up_or_down = 'none'
if cur_sibl.find('b', {'class':'up'}): if cur_sibl.find('b', {'class': 'up'}):
up_or_down = 'up' up_or_down = 'up'
if cur_sibl.find('b', {'class':'dn'}): if cur_sibl.find('b', {'class': 'dn'}):
up_or_down = 'down' up_or_down = 'down'
# Тип пары (лекция) # Тип пары (лекция)
@ -209,14 +201,12 @@ if __name__ == '__main__':
for prep in preps_block.findAll('a'): for prep in preps_block.findAll('a'):
preps.append(prep.text) preps.append(prep.text)
# Группы # Группы
groups = list() groups = list()
group_block = cur_sibl.find('span', {'class': 'groups'}) group_block = cur_sibl.find('span', {'class': 'groups'})
for group in group_block.findAll('a'): for group in group_block.findAll('a'):
groups.append(group.text) groups.append(group.text)
# место, аудитория # место, аудитория
place = cur_sibl.find('em') place = cur_sibl.find('em')
@ -239,13 +229,18 @@ if __name__ == '__main__':
case _: case _:
print('wtf') print('wtf')
# print(rasp_summary)
from datetime import date from datetime import date
import locale import locale
locale.setlocale(locale.LC_TIME, "ru_RU.UTF-8") locale.setlocale(locale.LC_TIME, "ru_RU.UTF-8")
today_weekday = date.today().strftime('%A') today_weekday = date.today().strftime('%A')
print("Сегодня {}".format(today_weekday)) today_week = date.today().strftime('%U')
print("Сегодня {}, {} ебали на:".format(today_weekday, fucker_name))
for para in rasp_summary: for para in rasp_summary:
if para['date'] == today_weekday: if para['date'] == today_weekday:
print(para['value']['name']) if para['value']['up_or_down'] == 'up' and today_week % 2 != 0:
print(para['value']['type'], para['value']['name'])
elif para['value']['up_or_down'] == 'down' and today_week % 2 == 0:
print(para['value']['type'], para['value']['name'])
elif para['value']['up_or_down'] == 'none':
print(para['value']['type'], para['value']['name'])