import requests, datetime, os, wget, bs4, docx
import Utill.VK.Log as Log
def GetSiteStatus():
try:
requests.get("https://college.ru")
return True
except:
return False
def GetDateTime(Day):
Month = {1 : "января", 2 : "февраля", 3 :"марта", 4 : "апреля", 5 : "мая", 6 : "июня", 7 : "июля", 8 : "августа", 9 : "сентября", 10 : "октября", 11 : "ноября", 12 : "декабря"}
if (Day == "зм"):
ThisDateTime = datetime.date.today()
TomorrowDateTime = ThisDateTime + datetime.timedelta(days = 1)
if (datetime.datetime.today().isoweekday() == 6):
TomorrowDateTime = ThisDateTime + datetime.timedelta(days = 2)
if (datetime.datetime.today().isoweekday() == 7):
TomorrowDateTime = ThisDateTime + datetime.timedelta(days = 1)
ThisDay = TomorrowDateTime.strftime("%d")
ThisMonth = int("%d"% TomorrowDateTime.month)
else:
ThisDateTime = datetime.datetime.now()
ThisDay = str("%02d" % ThisDateTime.day)
ThisMonth = int("%d"% ThisDateTime.month)
return f"Замена на {ThisDay} {Month[ThisMonth]}"
def SearchFile(Day):
Request = requests.get("https://college.ru/students/schedule", verify = False)
Site = bs4.BeautifulSoup(Request.text, "lxml").html
for Link in Site.findAll("img"):
if (GetDateTime(Day)) in str(Link):
FileLink = Link["title"].replace("Скачать ", "").replace(" ", "_")
try:
wget.download(f"http://college.ru/upload/price/postoynnoe_spo/para/{FileLink}.docx")
return {"status": True, "Folder": FileLink}
except:
return {"status": False, "Message": "Не удалось скачать файл."}
return {"status": False, "Message": "Файла с заменами нет."}
def Normalize(Message):
return str(Message).replace("\n", " ")
def GetLastRow(File, Index):
LastIndex = len(File.tables[0].rows[Index].cells) - 1
return Normalize(str(File.tables[0].rows[Index].cells[LastIndex].text))
def ParceDOCXFile(Folder):
File = docx.Document(Folder + ".docx")
os.remove(Folder + ".docx")
ReplaceForMyGroup = False
GroupNameList = ["3ИСП-9-1", "3ИСП9-1"]
for Table in File.tables:
for Index, Row in enumerate(Table.rows):
Group = str(File.tables[0].rows[Index].cells[0].text).replace(" ", "").upper()
if (Group in GroupNameList):
ReplaceForMyGroup = True
break
if (ReplaceForMyGroup):
AllReplace = ""
for Table in File.tables:
for Index, Row in enumerate(Table.rows):
Group = str(File.tables[0].rows[Index].cells[0].text).replace(" ", "").upper()
if (Group in GroupNameList):
ReplaceOld = "[СТАРОЕ] > "
ReplaceNew = "[НОВОЕ] > "
OldNum = Normalize(File.tables[0].rows[Index].cells[1].text)
OldItem = Normalize(File.tables[0].rows[Index].cells[2].text)
OldPoint = Normalize(File.tables[0].rows[Index].cells[3].text)
NewItem = Normalize(File.tables[0].rows[Index].cells[4].text)
NewPoint = Normalize(GetLastRow(File, Index))
if ("НБ" in OldItem.upper() or "Н/Б" in OldItem.upper()):
if (len(OldNum) > 0): ReplaceOld += "№ " + OldNum
if (len(OldItem) > 0): ReplaceOld += " НБ"
else:
if (len(OldNum) > 0): ReplaceOld += "№" + OldNum
if (len(OldItem) > 0): ReplaceOld += " " + OldItem + " "
if (len(OldPoint) > 0): ReplaceOld += f"({OldPoint})"
if ("НБ" in NewItem.upper() or "Н/Б" in NewItem.upper()):
if (len(NewItem) > 0): ReplaceNew += " НБ"
else:
if (len(NewItem) > 0): ReplaceNew += NewItem + " "
if (len(NewPoint) > 0): ReplaceNew += f"({NewPoint})"
AllReplace += f"{ReplaceOld}\n{ReplaceNew}\n"
return AllReplace
else:
return "Замен нет."
def GetReplace(Day):
if (GetSiteStatus()):
Request = SearchFile(Day)
if (Request["status"]):
print()
return ParceDOCXFile(Request["Folder"])
else:
return Request["Message"]
else:
return "Сайт не доступен."