Getting timetable

This commit is contained in:
Pengwius 2021-01-09 22:43:21 +01:00
parent 8c5045d2a8
commit b39108bf4b
5 changed files with 63 additions and 109 deletions

View file

@ -3,109 +3,30 @@ import requests
from bs4 import BeautifulSoup
def get_timetable(register_id, register_r, oun, s, date):
cookies = s
if oun != 'http://uonetplus-uczen.fakelog.cf/powiatwulkanowy/123458':
cookies = {
"biezacyRokSzkolny": f"{register_r.json()['data'][0]['DziennikRokSzkolny']}",
"idBiezacyDziennik": f"{register_r.json()['data'][0]['IdDziennik']}",
"idBiezacyDziennikPrzedszkole": f"{register_r.json()['data'][0]['IdPrzedszkoleDziennik']}",
"idBiezacyDziennikWychowankowie": f"{register_r.json()['data'][0]['IdWychowankowieDziennik']}",
"idBiezacyUczen": f"{register_r.json()['data'][0]['IdUczen']}"
}
cookies.update({
"biezacyRokSzkolny": f"{register_r['data'][0]['DziennikRokSzkolny']}",
"idBiezacyDziennik": f"{register_r['data'][0]['IdDziennik']}",
"idBiezacyDziennikPrzedszkole": f"{register_r['data'][0]['IdPrzedszkoleDziennik']}",
"idBiezacyDziennikWychowankowie": f"{register_r['data'][0]['IdWychowankowieDziennik']}",
"idBiezacyUczen": f"{register_r['data'][0]['IdUczen']}"
})
else:
cookies = {
"biezacyRokSzkolny": f"{register_r.json()['data'][0]['DziennikRokSzkolny']}",
"idBiezacyDziennik": f"{register_r.json()['data'][0]['IdDziennik']}",
"idBiezacyDziennikPrzedszkole": f"{register_r.json()['data'][0]['IdPrzedszkoleDziennik']}",
"idBiezacyUczen": f"{register_r.json()['data'][0]['IdUczen']}"
}
cookies.update({
"biezacyRokSzkolny": f"{register_r['data'][0]['DziennikRokSzkolny']}",
"idBiezacyDziennik": f"{register_r['data'][0]['IdDziennik']}",
"idBiezacyDziennikPrzedszkole": f"{register_r['data'][0]['IdPrzedszkoleDziennik']}",
"idBiezacyUczen": f"{register_r['data'][0]['IdUczen']}"
})
timetable = s.post(oun+'/PlanZajec.mvc/Get', headers={"User-Agent": "Wulkanowy-web :)"}, cookies=cookies, json={'data': date})
headers = {
'Accept-Encoding': 'gzip, deflate',
'Accept': '*/*',
'Connection': 'keep-alive',
"User-Agent": "Wulkanowy-web :)"
}
timetable = requests.post(oun+'/PlanZajec.mvc/Get', headers=headers, cookies=cookies, json={'data': date})
return timetable.json()
def prepare_timetable_for_display(register_id, register_r, oun, s, date):
timetable = get_timetable(register_id, register_r, oun, s, date)
json_timetable = {'hour': [], 'monday': [], 'tuesday': [], 'wednesday': [], 'thrusday': [], 'friday': [],}
hour = []
monday = []
tuesday = []
wednesday = []
thrusday = []
friday = []
a = 0
x = 0
i = 0
while True:
for x in range(6):
if x == 0:
hour.append(timetable['data']['Rows'][a][x])
elif x == 1:
monday.append(timetable['data']['Rows'][a][x])
elif x == 2:
tuesday.append(timetable['data']['Rows'][a][x])
elif x == 3:
wednesday.append(timetable['data']['Rows'][a][x])
elif x == 4:
thrusday.append(timetable['data']['Rows'][a][x])
elif x == 5:
friday.append(timetable['data']['Rows'][a][x])
if timetable['data']['Rows'][a] == timetable['data']['Rows'][-1]:
a = 0
break
a += 1
while True:
#<--------------HOURS-------------->
bs = BeautifulSoup(hour[i], 'html.parser')
hour[i] = [str.strip(x) for x in bs.strings if str.strip(x) != '']
unwanted_text = [str.strip(x.text) for x in bs.find_all()]
set(hour[i]).difference(unwanted_text)
#<--------------MONDAY-------------->
bs = BeautifulSoup(monday[i], 'html.parser')
for lesson in bs.find_all('span'):
monday[i] = lesson.text
break
#<--------------TUESDAY-------------->
bs = BeautifulSoup(tuesday[i], 'html.parser')
for lesson in bs.find_all('span'):
tuesday[i] = lesson.text
break
#<--------------WEDNESDAY-------------->
bs = BeautifulSoup(wednesday[i], 'html.parser')
for lesson in bs.find_all('span'):
wednesday[i] = lesson.text
break
#<--------------THRUSDAY-------------->
bs = BeautifulSoup(thrusday[i], 'html.parser')
for lesson in bs.find_all('span'):
thrusday[i] = lesson.text
break
#<--------------FRIDAY-------------->
bs = BeautifulSoup(friday[i], 'html.parser')
for lesson in bs.find_all('span'):
friday[i] = lesson.text
break
if hour[i] == hour[-1]:
i = 0
break
i += 1
json_timetable['hour'] = hour
json_timetable['monday'] = monday
json_timetable['tuesday'] = tuesday
json_timetable['wednesday'] = wednesday
json_timetable['thrusday'] = thrusday
json_timetable['friday'] = friday
return json_timetable

View file

@ -59,11 +59,13 @@ def get_cookies(symbol, oun, s):
if weekday == x:
now = now - datetime.timedelta(days=x)
day = str(now.day)
month = str(now.month)
year = str(now.year)
day = now.day
month = now.month
year = now.year
date = year+'-'+month+'-'+day
date = datetime.date(year, month, day).isoformat()
date = f'{date}T00:00:00'
school_year = register_r.json()['data'][0]['DziennikRokSzkolny']
@ -71,7 +73,7 @@ def get_cookies(symbol, oun, s):
'register_id': register_id,
'register_r': register_r.json(),
'oun': oun,
'date': date,
'date': str(date),
'school_year': school_year,
'symbol': symbol,
's': s.cookies.get_dict()

View file

@ -9,7 +9,7 @@ from django.contrib.sessions.models import Session
from .login import sender
from .API.grades import get_grades
from .API.exams import prepare_exams_for_display
from .API.timetable import prepare_timetable_for_display
from .API.timetable import get_timetable
from .API.notes import prepare_notes_for_display
from .API.attendance import prepare_attendance_for_display
from .API.messages import get_messages
@ -55,3 +55,18 @@ def grades(request, *args, **kwargs):
s = data['data']['s']
grades = get_grades(register_id, register_r, oun, s)
return JsonResponse(grades, safe=False)
else:
return render(request, 'index.html')
def timetable(request, *args, **kwargs):
if request.session.has_key('is_logged'):
data = json.loads(request.body)
register_id = data['data']['register_id']
register_r = data['data']['register_r']
oun = data['data']['oun']
s = data['data']['s']
date = data['data']['date']
timetable = get_timetable(register_id, register_r, oun, s, date)
return JsonResponse(timetable)
else:
return render(request, 'index.html')

View file

@ -1,7 +1,22 @@
const timetable_ = document.querySelector('#timetable_');
myStorage = window.sessionStorage;
const getTimetable = () => {
document.querySelector('#content').innerHTML = 'Here is timetable (in my imagination)';
cookies_data = sessionStorage.getItem('cookies_data');
csrfcookie_ = sessionStorage.getItem('csrfcookie');
fetch(url = '../api/timetable', {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': csrfcookie_
},
body: cookies_data
}).then(response => response.json()).then(data => {
console.log(data)
})
}
timetable_.addEventListener('click', getTimetable);

View file

@ -17,7 +17,7 @@ from django.urls import path
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from app.views import default_view, content_view
from app.views import login, grades
from app.views import login, grades, timetable
urlpatterns = [
#views
@ -26,6 +26,7 @@ urlpatterns = [
#api
path('api/login', login, name='login'),
path('api/grades', grades, name='grades'),
path('api/timetable', timetable, name='timetable'),
]
urlpatterns += staticfiles_urlpatterns()