У ЭлЖура есть API. Решил сначала через ТП все пробить что да как, а они говорят: Вам надо идти в школу, просить чтоб директор написал нам официальный запрос на получение ключа разработчика, затем уж мы его выдадим и там пойдет работа. Но мы ж любим все упростить не вставая с дивана. Порывшись в инете нашел Телеграмм-бота, который разработали ребята и выложили код (правда в питоне) на гите https://github.com/samplec0de/eljur-bot, где и присутствовал наш необходимый ключик, да целых два даже. Наковырял необходимую документацию по API http://eljur.ru/api/.
Оказалось даже все проще, чем я думал. Посылаем запросик и в ответ получим необходимый токен для дальнейшей авторизации без логина и пароля. Вроде как токен дается на 3 месяца, но это не точно.
Получим токен:
Код: Выделить всё
$username = 'Логин';
$password = 'Пароль';
$devkey = '9235e26e80ac2c509c48fe62db23642c'; // ключ разработчика
$vendor = 'school'; // домен Вашей школы
$student = '9999'; // Идентификатор, который можно найти в ЛК, нажав на кнопку с вопросиком
echo '<!DOCTYPE html><html lang="ru"><head><meta charset="utf-8"/></head><body><br>';
// Авторизуемся
$header = [
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'Content-Type: application/json'
];
$post_data = [
'devkey' => $devkey,
'vendor' => $vendor,
'login' => $username,
'password' => $password,
'out_format' => 'json'
];
$post_data = json_encode($post_data);
$page = getData('https://$vendor.eljur.ru/api/auth', $header, $post_data);
$json = json_decode($page);
// Токен
if (empty($json->response->result->token)) {
die('ОШИБКА: Не найден токен!');
}
$token = $json->response->result->token;
echo "<strong>Токен:</strong> $token<br><br>\r\n";
// Функция CURL-запроса
function getData($url, $header = false, $post_data = false)
{
global $dir;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__ . '/elgur_cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__ . '/elgur_cookie.txt');
if ($header) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
if ($post_data) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt(
$ch,
CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0'
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$ret = curl_exec($ch);
usleep(300000);
return $ret;
}
Накидал быстро код корявый (прошу не бить сильно), но рабочий и закинул в сценарий. Вот бы кто взялся бы сделал качественный модуль...
Код: Выделить всё
$days1 = gg('ThisComputer.DateNow'); // День сегодня
$days2 = implode('.', array_reverse(explode('.', $days1))); // Переворачиваем день месяц год наоборот до 23.09.2022
$days = str_replace('.','',$days2); // убрали точку из даты
$students = '9999';
$devkey = '9235e26e80ac2c509c48fe62db23642c';
$vendor = 'school';
$token = 'e58efc7f70d873fvbjrgo5lu9gh3gd98y93gpxl03r4liy7igf3p306579a690bc___26385';
$name = gg('Nastya.fullName'); // Имя мученика
$getg = file_get_contents("https://$vendor.eljur.ru/api/getassessments?auth_token=$token&devkey=$devkey&vendor=$vendor&student=$students&days=$days"); //получаем данные методом get
$arr = json_decode($getg, true); //декодируем
//Собираем показания с json файла. Уроков вроде больше семи не бывает и создал 7 позиций. Некоторые комментарии к оценкам отмечены как lesson_comment, другие как comment и из-за этого пришлось делать две позиции
$ocenka1 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["value"];
$comment1 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["lesson_comment"];
$lcomment1 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["comment"];
$name1 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["name"];
$ocenka2 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["2"]["assessments"]["0"]["value"];
$comment2 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["2"]["assessments"]["0"]["lesson_comment"];
$lcomment2 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["comment"];
$name2 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["2"]["name"];
$ocenka3 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["3"]["assessments"]["0"]["value"];
$comment3 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["3"]["assessments"]["0"]["lesson_comment"];
$lcomment3 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["comment"];
$name3 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["3"]["name"];
$ocenka4 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["4"]["assessments"]["0"]["value"];
$comment4 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["4"]["assessments"]["0"]["lesson_comment"];
$lcomment4 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["comment"];
$name4 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["4"]["name"];
$ocenka5 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["5"]["assessments"]["0"]["value"];
$comment5 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["5"]["assessments"]["0"]["lesson_comment"];
$lcomment5 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["comment"];
$name5 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["5"]["name"];
$ocenka6 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["6"]["assessments"]["0"]["value"];
$comment6 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["6"]["assessments"]["0"]["lesson_comment"];
$lcomment6 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["comment"];
$name6 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["6"]["name"];
$ocenka7 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["7"]["assessments"]["0"]["value"];
$comment7 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["7"]["assessments"]["0"]["lesson_comment"];
$lcomment7 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["1"]["assessments"]["0"]["comment"];
$name7 = $arr["response"]["result"]["students"]["$students"]["days"]["$days"]["items"]["7"]["name"];
//Если стоит "н", то значит урок пропущен
if ($ocenka1 == 'н') {
$ocenka1 = 'пропустила урок';
}
if ($ocenka2 == 'н') {
$ocenka2 = 'пропустила урок';
}
if ($ocenka3 == 'н') {
$ocenka3 = 'пропустила урок';
}
if ($ocenka4 == 'н') {
$ocenka4 = 'пропустила урок';
}
if ($ocenka5 == 'н') {
$ocenka5 = 'пропустила урок';
}
if ($ocenka6 == 'н') {
$ocenka6 = 'пропустила урок';
}
if ($ocenka7 == 'н') {
$ocenka7 = 'пропустила урок';
}
//Если оценок нет, то скажем, что оценок не было
if (($name1 == '') && ($ocenka1 == '') && ($comment1 == '') && ($lcomment1 == '') && ($name2 == '') && ($ocenka2 == '') && ($comment2 == '') && ($lcomment2 == '') && ($name3 == '') && ($ocenka3 == '') && ($comment3 == '') && ($lcomment3 == '') && ($name4 == '') && ($ocenka4 == '') && ($comment4 == '') && ($lcomment4 == '') && ($name5 == '') && ($ocenka5 == '') && ($comment5 == '') && ($lcomment5 == '') && ($name6 == '') && ($ocenka6 == '') && ($comment6 == '') && ($lcomment6 == '') && ($name7 == '') && ($ocenka7 == '') && ($comment7 == '') && ($lcomment7 == '')) {
$vstup = ''.$name.' сегодня оценок не получала';
}
else {
$vstup = 'Сегодня '.$name.' в школе получила следующие оценки:';
}
//Соберем say
$bodytext=$vstup;
$bodytext.=$name1." ";
$bodytext.=$ocenka1." ";
$bodytext.=$comment1." ";
$bodytext.=$lcomment1." ";
$bodytext.=$name2." ";
$bodytext.=$ocenka2." ";
$bodytext.=$comment2." ";
$bodytext.=$lcomment2." ";
$bodytext.=$name3." ";
$bodytext.=$ocenka3." ";
$bodytext.=$comment3." ";
$bodytext.=$lcomment3." ";
$bodytext.=$name4." ";
$bodytext.=$ocenka4." ";
$bodytext.=$comment4." ";
$bodytext.=$lcomment4." ";
$bodytext.=$name5." ";
$bodytext.=$ocenka5." ";
$bodytext.=$comment5." ";
$bodytext.=$lcomment5." ";
$bodytext.=$name6." ";
$bodytext.=$ocenka6." ";
$bodytext.=$comment6." ";
$bodytext.=$lcomment6." ";
$bodytext.=$name7." ";
$bodytext.=$ocenka7." ";
$bodytext.=$comment7." ";
$bodytext.=$lcomment7." ";
say($bodytext,6);
echo "<strong>$bodytext</strong><br><br>\r\n";
Домашнее задание на любой день тоже можно получать, но это в будущем. Чуток попозже.
Всем пятак!