|
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()
|
|
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)
|
|
data = r.content.decode()
|
|
if "Location" not in data:
|
|
continue
|
|
for j in data.split("\n"):
|
|
items = j.split(" ")
|
|
if items[0] == "Location:":
|
|
invitation = items[-1]
|
|
try:
|
|
m = re.compile("https:\/\/zoom\.us\/j\/([0-9]*)\?.*pwd=([^#]*)")
|
|
g = m.search(invitation)
|
|
meeting_url = f"zoommtg://zoom.us/join?confno={g.group(1)}&zc=0&browser=chrome&pwd={g.group(2)}"
|
|
http_url = f"https://zoom.us/j/{g.group(1)}?pwd={g.group(2)}"
|
|
meetings.append({"meeting_url": meeting_url,
|
|
"class": i["topic"],
|
|
"time":i["meeting_time"],
|
|
"http_url":http_url})
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
return meetings
|
|
|
|
|