|
|
- import requests
- from html.parser import HTMLParser
- import sys
- import json
- import re
- import datetime
- from urllib3.exceptions import InsecureRequestWarning
- import selenium
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
-
- requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
- now = datetime.datetime.now()
-
- proxies = {"http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080"}
- headers = {
- "Host":"portal.tedankara.k12.tr",
- "User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0",
- "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
- "Accept-Language":"en-US,en;q=0.5",
- "Accept-Encoding":"gzip, deflate",
- "Content-Type":"application/x-www-form-urlencoded",
- "Origin":"https://portal.tedankara.k12.tr",
- "Connection":"close",
- "Referer":"https://portal.tedankara.k12.tr/login",
- "DNT":"1"
- }
-
- class JDParser(HTMLParser):
- def handle_starttag(self, tag, attrs):
- self.attributes = {}
- for attr in attrs:
- self.attributes[attr[0]] = attr[1]
-
-
- def get_meetings(uname, passwd):
- url = "https://portal.tedankara.k12.tr/login"
- r = requests.get(url,verify=False)
-
- cookies = r.cookies
- content = r.content
-
- lines = content.splitlines()
- line = list(filter(lambda x: b'_token' in x, lines))[0].decode("utf-8")
-
- parser = JDParser()
- parser.feed(line)
-
- parser.feed(line)
- parser.close()
- _token = parser.attributes["content"]
-
- data = "_token={}&kimlikno={}&sifre={}".format(_token,uname,passwd)
- r = requests.post(url,data=data,cookies=cookies,headers=headers,verify=False)
- cookies = r.cookies
- r = requests.get("https://portal.tedankara.k12.tr/veli/zoom",cookies=cookies,verify=False, headers=headers)
- content = r.json()
- data = {"current_day": content["current_day"],
- "current_class": content["current_class"],
- "current_student": content["current_student"]}
-
- headers2 = {"Host":"portal.tedankara.k12.tr",
- "User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0",
- "Accept":"application/json, text/plain, */*",
- "Accept-Language":"en-US,en;q=0.5",
- "Accept-Encoding":"gzip, deflate",
- "X-Requested-With":"XMLHttpRequest",
- "Content-Type":"application/json;charset=utf-8",
- "Origin":"https://portal.tedankara.k12.tr",
- "Connection":"close",
- "Referer":"https://portal.tedankara.k12.tr/",
- "DNT":"1"}
- headers2["X-XSRF-TOKEN"] = r.cookies["XSRF-TOKEN"]
- headers2["X-CSRF-TOKEN"] = _token
-
- r = requests.post("https://portal.tedankara.k12.tr/veli/zoom",cookies=r.cookies,verify=False, json=data, headers=headers2)
- classes = r.json()
- options = webdriver.ChromeOptions()
- options.add_argument('--headless')
- try:
- client = webdriver.Chrome(options=options)
- except:
- pass
- meetings = []
- for i in classes["meetings"]:
- data = "_token={}&student={}&id={}".format(_token, content["students"][0],i["meeting_id"])
- r = requests.post("https://portal.tedankara.k12.tr/veli/yoklama",allow_redirects=False, cookies=cookies,verify=False, data=data, headers=headers)
- if "Location" not in r.headers:
- continue
- invitation = r.headers["Location"]
- client.get(invitation)
- meeting_url = client.find_element_by_css_selector("a[launch='']").get_attribute("href")
- meetings.append({"meeting_url": meeting_url,
- "class": i["topic"],
- "time":i["meeting_time"]})
- return meetings
-
-
|