1
0
Fork 0

Compare commits

..

No commits in common. "stable" and "1.1.0" have entirely different histories.

3 changed files with 104 additions and 158 deletions

View File

@ -1,12 +1,6 @@
# parser_from_interneturok # parser_from_interneturok
Chat-robot Telegram for parsing homeworks by subject name, grade and number of the week Chat-robot Telegram for parsing homeworks by subject name, grade and number of the week
## Funny story of development
The customer of this project **refused to pay** the second half of the payment for the work and wanted to steal my code.<br>
<br>
I managed to delete all the code from the server, then i changed passwords on all **40 accounts** that were planned to be used in this chat-robot.<br>
Thus **i destroyed the entire mini-business** of this customer.
## Dependencies ## Dependencies
1. [PHP 8.4](https://www.php.net/releases/8.4/en.php) 1. [PHP 8.4](https://www.php.net/releases/8.4/en.php)
2. [Composer](https://getcomposer.org/) (php package manager) 2. [Composer](https://getcomposer.org/) (php package manager)

View File

@ -70,17 +70,6 @@ final class interneturok extends core
*/ */
public const string USER = 'https://api-gw.interneturok.ru/api/v2/homeschool/current_user'; public const string USER = 'https://api-gw.interneturok.ru/api/v2/homeschool/current_user';
/**
* TARIFFS
*
* Method: GET
* Authrorization: Bearer
*
* @var const string TARIFFS The user tariffs API URL
*/
public const string TARIFFS = 'https://api-gw.interneturok.ru/api/v2/schedules/users/current/tariffs';
/** /**
* SCHEDULES * SCHEDULES
* *
@ -254,6 +243,7 @@ final class interneturok extends core
if ($homework->status === 'checked' && $homework->mark === 5) { if ($homework->status === 'checked' && $homework->mark === 5) {
// Homework checked and completed for a grade of 5 // Homework checked and completed for a grade of 5
// Writing into the output buffer // Writing into the output buffer
echo "Найдено домашнее задание: $homework->item_id с оценкой $homework->mark\n"; echo "Найдено домашнее задание: $homework->item_id с оценкой $homework->mark\n";
@ -483,32 +473,10 @@ final class interneturok extends core
// Initializing the user data // Initializing the user data
$user = json_decode((string) $response->getBody())?->data?->homeschool?->response?->user; $user = json_decode((string) $response->getBody())?->data?->homeschool?->response?->user;
if (!empty($user)) { if ($user->grade + 1 === $grade) {
// Initialized the user data // Matched the account grade with the grade
// Initializing the request to the user data API // Initialiint the user identifier
$request = new request(
'GET',
static::TARIFFS,
[
'Authorization' => "Bearer $this->token"
]
);
return $this->browser->sendAsync($request)
->then(function ($response) use ($grade, $week, $user) {
// Sended the request and received the response
// Initializing the tariffs data
$tariffs = json_decode((string) $response->getBody())?->data?->tariffs?->response;
foreach ($tariffs as $tariff) {
// Iterating over tariffs
if ($tariff->grade === $grade) {
// Matched the tariff grade with the target grade
// Initializing the user identifier
$identifier = $user?->id; $identifier = $user?->id;
if (!empty($identifier)) { if (!empty($identifier)) {
@ -623,13 +591,8 @@ final class interneturok extends core
// Exit (fail) // Exit (fail)
return false; return false;
} }
}
}
// Exit (fail)
return false;
});
} else { } else {
// Not initialized the user data // Not matched the account grade with the grade
// Exit (fail) // Exit (fail)
return false; return false;
@ -815,19 +778,8 @@ final class interneturok extends core
if ($attachment->uploader_role === 'student' && $attachment->attachable_type === 'Result::Homework') { if ($attachment->uploader_role === 'student' && $attachment->attachable_type === 'Result::Homework') {
// Found the homework attachment // Found the homework attachment
// Searching for number of the attachment and the file extension
preg_match('/^(\d+).*(\.\w{3,4})$/', $attachment->attach_path, $matches);
try {
// Initializing the name of the attachment file
$name = $matches[1] . $matches[2];
} catch (exception $exception) {
// Initializing the name of the attachment file
$name = uniqid() . '.jpg';
}
// Initializing path to the downloaded file // Initializing path to the downloaded file
$path = $storage . DIRECTORY_SEPARATOR . ($name ?? uniqid() . '.jpg'); $path = $storage . DIRECTORY_SEPARATOR . $attachment->attach_path;
// Downloading the file // Downloading the file
$this->browser->request('GET', $attachment->attach, ['sink' => $path]); $this->browser->request('GET', $attachment->attach, ['sink' => $path]);
@ -859,17 +811,17 @@ final class interneturok extends core
// Exit (fail) // Exit (fail)
return false; return false;
}, },
function ($exception) use ($homework) { function ($response) use ($homework) {
if ($exception->getResponse()?->getStatusCode() === 402) { if ($response->getStatusCode() === 402) {
// Fail (received the "Payment Required" status code) // Fail (received the "Payment Required" status code)
// Writing into the output buffer // Writing into the output buffer
echo "Не удалось скачать домашнее задание $homework потому, что не оплачен тариф\n"; echo "Не удалось скачать домашнее задание $homework потому, что не оплачен тариф\n";
}
// Exit (fail) // Exit (fail)
return false; return false;
} }
}
); );
} }

View File

@ -80,15 +80,8 @@ for ($i = 4; $i <= 11; ++$i) {
$robot->onCbQueryData(["grade_$i"], fn(context $context) => parser::grade(context: $context, grade: $i)); $robot->onCbQueryData(["grade_$i"], fn(context $context) => parser::grade(context: $context, grade: $i));
} }
for ($i = 32; $i <= 38; ++$i) { for ($i = 2; $i <= 9; ++$i) {
// Generating buttons from 32 to 38 numbers of weeks // Generating buttons from 2 to 9 numbers of weeks
// Initializing numbers of weeks buttons
$robot->onCbQueryData(["week_$i"], fn(context $context) => parser::date(context: $context, week: $i));
}
for ($i = 21; $i <= 30; ++$i) {
// Generating buttons from 21 to 30 numbers of weeks
// Initializing numbers of weeks buttons // Initializing numbers of weeks buttons
$robot->onCbQueryData(["week_$i"], fn(context $context) => parser::date(context: $context, week: $i)); $robot->onCbQueryData(["week_$i"], fn(context $context) => parser::date(context: $context, week: $i));
@ -101,8 +94,15 @@ for ($i = 11; $i <= 18; ++$i) {
$robot->onCbQueryData(["week_$i"], fn(context $context) => parser::date(context: $context, week: $i)); $robot->onCbQueryData(["week_$i"], fn(context $context) => parser::date(context: $context, week: $i));
} }
for ($i = 2; $i <= 9; ++$i) { for ($i = 21; $i <= 30; ++$i) {
// Generating buttons from 2 to 9 numbers of weeks // Generating buttons from 21 to 30 numbers of weeks
// Initializing numbers of weeks buttons
$robot->onCbQueryData(["week_$i"], fn(context $context) => parser::date(context: $context, week: $i));
}
for ($i = 32; $i <= 38; ++$i) {
// Generating buttons from 32 to 38 numbers of weeks
// Initializing numbers of weeks buttons // Initializing numbers of weeks buttons
$robot->onCbQueryData(["week_$i"], fn(context $context) => parser::date(context: $context, week: $i)); $robot->onCbQueryData(["week_$i"], fn(context $context) => parser::date(context: $context, week: $i));