Gesammelte und von mir selbst geschriebene Skripte
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
3.0 KiB

#!/usr/bin/php
<?php
/**
* Um die Werte für kommune und strasse zu erfahren, rufe https://www.egst.de/de/abfallabholung/ per
* Browser auf und ermittle die gesendeten Daten in der Entwicklerkonsole deines Browsers.
*
* Die Angaben hier im Skript stehen für Hörstel als Kommune und Im Wiesengrund als Strasse
*
* Um die Daten an Telegram zu senden, musst du dir ein Skript/Programm schreiben, dass die API
* von Telegram verwendet und Daten an dich oder deine Gruppe senden kann!
*
* Beispiel für eine Konfigurationsdatei:
* tgReceiver: <hier die ID der Gruppe/ des Teilnhemers eintragen>
* kommune: 2601
* strasse: 2146
* pathBot: '~/bin/YMBot'
* tgBotOwner: <hier DEINE Telegram-ID eintragen>
*/
function worker(string $response, array $config)
{
$tomorrow = (new DateTime('tomorrow'))->format('d.m.Y');
$trashArr = str_getcsv($response, "\n");
foreach($trashArr as $row) {
$rowArr = str_getcsv($row, ';');
$index = array_search($tomorrow, $rowArr);
if ($index !== false) {
$what = '';
switch ($index) {
case 0:
case 1:
$what = "werden Biomüll und gelbe Tonne";
break;
case 2:
$what = "wird Restmüll";
break;
case 3:
$what = "wird Papier";
break;
}
if ($what !== '') {
shell_exec(sprintf("echo Morgen %s abgeholt | %s -u %d", $what, $config['pathBot'], $config['tgReceiver']));
}
}
}
}
// Main part
$currentYear = date('Y');
$dateRange = sprintf('%s0101-%s1231', $currentYear, $currentYear);
$muellFile = sprintf('%s/muell.csv', __DIR__);
$key = 'e21758b9c711463552fb9c70ac7d4273';
$home = getenv('HOME');
$configFilePath = sprintf('%s/.muell.yaml', $home);
// Read the config file if existing
if (!file_exists($configFilePath)) {
echo "Bitte .muell.yaml im Homeverzeichnis anlegen!\n";
return 1;
}
$config = yaml_parse_file($configFilePath);
$url = sprintf('https://api.abfall.io/?key=%s&modus=d6c5855a62cf32a4dadbc2831f0f295f&waction=export_csv', $key);
$ch = curl_init($url);
$data = [
'f_id_kommune' => $config['kommune'],
'f_id_strasse' => $config['strasse'],
'f_id_abfalltyp_0' => 50,
'f_id_abfalltyp_1' => 161,
'f_id_abfalltyp_2' => 53,
'f_id_abfalltyp_3' => 187,
'f_abfallarten_index_max' => 5,
'f_abfallarten' => '50,161,53,187',
'f_zeitraum' => $dateRange,
'f_export_als' => json_encode([
'action' => $url,
'target' => '',
]),
];
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla 70');
$response = curl_exec($ch)."\n";
curl_close($ch);
if ($response !== false) {
// If result file does not exist, write it to have a copy
file_put_contents($muellFile, $response);
// Go on with checking the result data
worker($response, $config);
} else {
if (file_exists($muellFile)) {
worker(file_get_contents($muellFile), $config);
} else {
shell_exec(sprintf("echo Müllbot konnte keine Daten empfangen | %s -u %d", $config['pathBot'], $config['tgBotOwner']));
}
}