generated from mirzaev/pot
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
8ea9e7ef3d | |||
05143b6865 | |||
accfe5a496 | |||
53f8f3871c | |||
d2c86a6222 |
@@ -5,7 +5,7 @@ Wants=network.target
|
||||
After=syslog.target network-online.target
|
||||
|
||||
[Service]
|
||||
ExecStart=sudo -u www-data /usr/bin/php /var/www/project/mirzaev/parser_from_interneturok/system/public/telegram.php
|
||||
ExecStart=sudo -u www-data /usr/bin/php /var/www/parser_from_interneturok/mirzaev/parser_from_interneturok/system/public/telegram.php
|
||||
PIDFile=/var/run/php/parser_from_interneturok-telegram.pid
|
||||
RemainAfterExit=no
|
||||
RuntimeMaxSec=3600s
|
||||
|
@@ -184,138 +184,143 @@ final class interneturok extends core
|
||||
// Waiting for processing the request
|
||||
sleep($waiting);
|
||||
|
||||
if ($this->authentication($account)->wait()) {
|
||||
// Authenticated the account
|
||||
try {
|
||||
|
||||
// Writing into the output buffer
|
||||
echo 'Аутентифицирован: ' . $account['mail'] . "\n";
|
||||
|
||||
// Waiting for processing the request
|
||||
sleep($waiting);
|
||||
|
||||
// Initializing the user journal
|
||||
$journal = $this->journal(grade: $grade)->wait();
|
||||
|
||||
if (!empty($journal)) {
|
||||
// Initialized the user journal
|
||||
if ($this->authentication($account)->wait()) {
|
||||
// Authenticated the account
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Инициализирован журнал\n";
|
||||
echo 'Аутентифицирован: ' . $account['mail'] . "\n";
|
||||
|
||||
// Initializing the actual date
|
||||
$date = new datetime();
|
||||
// Waiting for processing the request
|
||||
sleep($waiting);
|
||||
|
||||
// Initializing the homeworks database
|
||||
$model = new homework();
|
||||
// Initializing the user journal
|
||||
$journal = $this->journal(grade: $grade)->wait();
|
||||
|
||||
// Initializing the schedule subject events
|
||||
$schedule = $journal?->schedule_events;
|
||||
if (!empty($journal)) {
|
||||
// Initialized the user journal
|
||||
|
||||
foreach ($schedule as $_subject) {
|
||||
// Iterating over scheduled subject events
|
||||
// Writing into the output buffer
|
||||
echo "Инициализирован журнал\n";
|
||||
|
||||
if ($_subject->subject?->name === $subject->value) {
|
||||
// Found the target suject
|
||||
// Initializing the actual date
|
||||
$date = new datetime();
|
||||
|
||||
foreach ($_subject->events as $event) {
|
||||
// Iterating over the target subject events
|
||||
// Initializing the homeworks database
|
||||
$model = new homework();
|
||||
|
||||
// Normalizing the event variable (events can be more than one)
|
||||
$event = $event[0] ?? null;
|
||||
// Initializing the schedule subject events
|
||||
$schedule = $journal?->schedule_events;
|
||||
|
||||
if (!empty($event)) {
|
||||
// Initialized the target subject event (the homework exists)
|
||||
foreach ($schedule as $_subject) {
|
||||
// Iterating over scheduled subject events
|
||||
|
||||
if (new datetime($event->date) <= $date && new datetime($event->date)->modify('+6 days') >= $date) {
|
||||
// Found the current event
|
||||
if ($_subject->subject?->name === $subject->value) {
|
||||
// Found the target suject
|
||||
|
||||
if ($event->subject?->name === $subject->value && $event->subject->grade === $grade) {
|
||||
// Found the target subject
|
||||
foreach ($_subject->events as $event) {
|
||||
// Iterating over the target subject events
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Найден школьный предмет: $subject->value для $grade класса (с " . new datetime($event->date)->format('d.m') . ' по ' . new datetime($event->date)->modify('+6 days')->format('d.m') . ")\n";
|
||||
// Normalizing the event variable (events can be more than one)
|
||||
$event = $event[0] ?? null;
|
||||
|
||||
// Initializing the unblock time
|
||||
$unblock = svoboda::timestamp() - 31536000;
|
||||
if (!empty($event)) {
|
||||
// Initialized the target subject event (the homework exists)
|
||||
|
||||
foreach ($event->homeworks as $homework) {
|
||||
// Iterating over scheduled event homeworks
|
||||
if (new datetime($event->date) <= $date && new datetime($event->date)->modify('+6 days') >= $date) {
|
||||
// Found the current event
|
||||
|
||||
if ($homework->status === 'checked' && $homework->mark === 5) {
|
||||
// Homework checked and completed for a grade of 5
|
||||
if ($event->subject?->name === $subject->value && $event->subject->grade === $grade) {
|
||||
// Found the target subject
|
||||
|
||||
// Checking for the block record
|
||||
$blocked = $model->database->read(
|
||||
filter: fn(record $record) => $record->identifier === $homework->item_id && $record->created > $unblock,
|
||||
amount: 1
|
||||
)[0] ?? null;
|
||||
// Writing into the output buffer
|
||||
/* echo "Найден школьный предмет: $subject->value для $grade класса (с " . new datetime($event->date)->format('d.m') . ' по ' . new datetime($event->date)->modify('+6 days')->format('d.m') . ")\n"; */
|
||||
|
||||
if ($blocked instanceof record) {
|
||||
// The account homework has been downloaded for 1 year
|
||||
// Initializing the unblock time
|
||||
$unblock = svoboda::timestamp() - 31536000;
|
||||
|
||||
continue 3;
|
||||
} else {
|
||||
// The account homework has not been downloaded for 1 year
|
||||
foreach ($event->homeworks as $homework) {
|
||||
// Iterating over scheduled event homeworks
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Найдено домашнее задание: $homework->item_id с оценкой $homework->mark\n";
|
||||
if ($homework->status === 'checked' && $homework->mark === 5) {
|
||||
// Homework checked and completed for a grade of 5
|
||||
|
||||
// Waiting for processing the request
|
||||
sleep($waiting);
|
||||
// Checking for the block record
|
||||
$blocked = $model->database->read(
|
||||
filter: fn(record $record) => $record->identifier === $homework->item_id && $record->created > $unblock,
|
||||
amount: 1
|
||||
)[0] ?? null;
|
||||
|
||||
// Initializing the homework files
|
||||
$files = $this->homework(lesson: $event->lesson->id, homework: $homework->item_id)->wait();
|
||||
if ($blocked instanceof record) {
|
||||
// The account homework has been downloaded for 1 year
|
||||
|
||||
if (!empty($files)) {
|
||||
// Initialized the homework files
|
||||
continue 3;
|
||||
} else {
|
||||
// The account homework has not been downloaded for 1 year
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Получено домашнее задание\n";
|
||||
echo "Найдено домашнее задание: $homework->item_id с оценкой $homework->mark\n";
|
||||
|
||||
// Blocking the homework downloading for 1 year
|
||||
$blocked = $model->create(identifier: $homework->item_id);
|
||||
// Waiting for processing the request
|
||||
sleep($waiting);
|
||||
|
||||
if ($blocked !== false) {
|
||||
// The homework was blocked for 1 year
|
||||
// Initializing the homework files
|
||||
$files = $this->homework(lesson: $event->lesson->id, homework: $homework->item_id)->wait();
|
||||
|
||||
if (!empty($files)) {
|
||||
// Initialized the homework files
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Заблокировано на 1 год домашнее задание\n";
|
||||
echo "Получено домашнее задание\n";
|
||||
|
||||
// Exit (success)
|
||||
return $files;
|
||||
// Blocking the homework downloading for 1 year
|
||||
$blocked = $model->create(identifier: $homework->item_id);
|
||||
|
||||
if ($blocked !== false) {
|
||||
// The homework was blocked for 1 year
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Заблокировано на 1 год домашнее задание\n";
|
||||
|
||||
// Exit (success)
|
||||
return $files;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stopping processing events and starting processing the next account
|
||||
break 2;
|
||||
// Stopping processing events and starting processing the next account
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stopping processing events and starting processing the next account
|
||||
break;
|
||||
// Stopping processing events and starting processing the next account
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Not initialized the user journal
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Аккаунт не подходит под требования\n";
|
||||
|
||||
// Proceed to processing the next account
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
// Not initialized the user journal
|
||||
// Not authenticated the account
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Аккаунт не подходит под требования\n";
|
||||
echo "Не аутентифицирован\n";
|
||||
|
||||
// Proceed to processing the next account
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
// Not authenticated the account
|
||||
|
||||
// Writing into the output buffer
|
||||
echo "Не аутентифицирован\n";
|
||||
|
||||
// Proceed to processing the next account
|
||||
} catch (exception $exception) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -900,16 +905,21 @@ final class interneturok extends core
|
||||
*/
|
||||
public static function amount(): int
|
||||
{
|
||||
// Opening the interneturok accounts file
|
||||
$file = new spl(INTERNETUROK_ACCOUNTS_FILE, 'r');
|
||||
try {
|
||||
// Opening the interneturok accounts file
|
||||
$file = new spl(INTERNETUROK_ACCOUNTS_FILE, 'r');
|
||||
|
||||
// Move the cursor to the last row
|
||||
$file->seek(PHP_INT_MAX);
|
||||
// Move the cursor to the last row
|
||||
$file->seek(PHP_INT_MAX);
|
||||
|
||||
// Initializing number of the last row
|
||||
$rows = $file->key();
|
||||
// Initializing number of the last row
|
||||
$rows = $file->key();
|
||||
|
||||
// Exit (success)
|
||||
return $rows;
|
||||
// Exit (success)
|
||||
return $rows;
|
||||
} catch (exception $exception) {
|
||||
// Exit (fail)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -17,6 +17,9 @@ use Zanzara\Context as context,
|
||||
// Framework for asynchronous PHP
|
||||
use function React\Async\await;
|
||||
|
||||
// Built-in libraries
|
||||
use Exception as exception;
|
||||
|
||||
/**
|
||||
* Telegram shcool subjects parser
|
||||
*
|
||||
@@ -205,26 +208,37 @@ final class parser extends core
|
||||
// Initializing the parser
|
||||
$parser = new interneturok();
|
||||
|
||||
// Parsing homework files
|
||||
$files = $parser->parse(subject: $subject, grade: $grade, waiting: 3);
|
||||
try {
|
||||
// Parsing homework files
|
||||
$files = $parser->parse(subject: $subject, grade: $grade, waiting: 3);
|
||||
|
||||
if (!empty($files)) {
|
||||
// Initialized homework files
|
||||
if (!empty($files)) {
|
||||
// Initialized homework files
|
||||
|
||||
foreach ($files as $file) {
|
||||
// Iterating over files in the storage
|
||||
foreach ($files as $file) {
|
||||
// Iterating over files in the storage
|
||||
|
||||
// Sending the file
|
||||
await($context->sendDocument(new file_input($file)));
|
||||
// Sending the file
|
||||
await($context->sendDocument(new file_input($file)));
|
||||
}
|
||||
|
||||
// Deleting in the telegram user buffer
|
||||
$context->deleteUserDataItem(static::PROCESS);
|
||||
} else {
|
||||
// Not initialized homework files
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('❌ *Не найдены домашние задания*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Sending the menu with subjects
|
||||
commands::menu($context);
|
||||
});
|
||||
}
|
||||
|
||||
// Deleting in the telegram user buffer
|
||||
$context->deleteUserDataItem(static::PROCESS);
|
||||
} else {
|
||||
// Not initialized homework files
|
||||
|
||||
} catch (exception $exception) {
|
||||
// Sending the message
|
||||
$context->sendMessage('❌ *Не найдены домашние задания')
|
||||
$context->sendMessage('⚠️ *Произошла ошибка при обработке домашних заданий*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
|
@@ -32,9 +32,6 @@ define('VIEWS', INDEX . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'view
|
||||
// Initializing path to the directory of settings
|
||||
define('SETTINGS', INDEX . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'settings');
|
||||
|
||||
// Initializing system settings
|
||||
require SETTINGS . DIRECTORY_SEPARATOR . 'system.php';
|
||||
|
||||
// Initializing path to the directory of the storage
|
||||
define('STORAGE', INDEX . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'storage');
|
||||
|
||||
|
@@ -5,5 +5,7 @@
|
||||
*/
|
||||
|
||||
return [
|
||||
1053489457 // Arsen Mirzaev Tatyano-Muradovich @redloser
|
||||
1053489457, // Arsen Mirzaev Tatyano-Muradovich @redloser
|
||||
6831961323, // @IU_K1LLER777
|
||||
1142807069 // @kysakapro
|
||||
];
|
||||
|
@@ -1,4 +0,0 @@
|
||||
<?php
|
||||
|
||||
// Initializing default theme for the views templater
|
||||
define('THEME', 'default');
|
Reference in New Issue
Block a user