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.

110 lines
3.0KB

  1. #!/usr/bin/php
  2. <?php
  3. /**
  4. * Um die Werte für kommune und strasse zu erfahren, rufe https://www.egst.de/de/abfallabholung/ per
  5. * Browser auf und ermittle die gesendeten Daten in der Entwicklerkonsole deines Browsers.
  6. *
  7. * Die Angaben hier im Skript stehen für Hörstel als Kommune und Im Wiesengrund als Strasse
  8. *
  9. * Um die Daten an Telegram zu senden, musst du dir ein Skript/Programm schreiben, dass die API
  10. * von Telegram verwendet und Daten an dich oder deine Gruppe senden kann!
  11. *
  12. * Beispiel für eine Konfigurationsdatei:
  13. * tgReceiver: <hier die ID der Gruppe/ des Teilnhemers eintragen>
  14. * kommune: 2601
  15. * strasse: 2146
  16. * pathBot: '~/bin/YMBot'
  17. * tgBotOwner: <hier DEINE Telegram-ID eintragen>
  18. */
  19. function worker(string $response, array $config)
  20. {
  21. $tomorrow = (new DateTime('tomorrow'))->format('d.m.Y');
  22. $trashArr = str_getcsv($response, "\n");
  23. foreach($trashArr as $row) {
  24. $rowArr = str_getcsv($row, ';');
  25. $index = array_search($tomorrow, $rowArr);
  26. if ($index !== false) {
  27. $what = '';
  28. switch ($index) {
  29. case 0:
  30. case 1:
  31. $what = "werden Biomüll und gelbe Tonne";
  32. break;
  33. case 2:
  34. $what = "wird Restmüll";
  35. break;
  36. case 3:
  37. $what = "wird Papier";
  38. break;
  39. }
  40. if ($what !== '') {
  41. shell_exec(sprintf("echo Morgen %s abgeholt | %s -u %d", $what, $config['pathBot'], $config['tgReceiver']));
  42. }
  43. }
  44. }
  45. }
  46. // Main part
  47. $currentYear = date('Y');
  48. $dateRange = sprintf('%s0101-%s1231', $currentYear, $currentYear);
  49. $muellFile = sprintf('%s/muell.csv', __DIR__);
  50. $key = 'e21758b9c711463552fb9c70ac7d4273';
  51. $home = getenv('HOME');
  52. $configFilePath = sprintf('%s/.muell.yaml', $home);
  53. // Read the config file if existing
  54. if (!file_exists($configFilePath)) {
  55. echo "Bitte .muell.yaml im Homeverzeichnis anlegen!\n";
  56. return 1;
  57. }
  58. $config = yaml_parse_file($configFilePath);
  59. $url = sprintf('https://api.abfall.io/?key=%s&modus=d6c5855a62cf32a4dadbc2831f0f295f&waction=export_csv', $key);
  60. $ch = curl_init($url);
  61. $data = [
  62. 'f_id_kommune' => $config['kommune'],
  63. 'f_id_strasse' => $config['strasse'],
  64. 'f_id_abfalltyp_0' => 50,
  65. 'f_id_abfalltyp_1' => 161,
  66. 'f_id_abfalltyp_2' => 53,
  67. 'f_id_abfalltyp_3' => 187,
  68. 'f_abfallarten_index_max' => 5,
  69. 'f_abfallarten' => '50,161,53,187',
  70. 'f_zeitraum' => $dateRange,
  71. 'f_export_als' => json_encode([
  72. 'action' => $url,
  73. 'target' => '',
  74. ]),
  75. ];
  76. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  77. curl_setopt($ch, CURLOPT_POST, 1);
  78. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  79. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla 70');
  80. $response = curl_exec($ch)."\n";
  81. curl_close($ch);
  82. if ($response !== false) {
  83. // If result file does not exist, write it to have a copy
  84. file_put_contents($muellFile, $response);
  85. // Go on with checking the result data
  86. worker($response, $config);
  87. } else {
  88. if (file_exists($muellFile)) {
  89. worker(file_get_contents($muellFile), $config);
  90. } else {
  91. shell_exec(sprintf("echo Müllbot konnte keine Daten empfangen | %s -u %d", $config['pathBot'], $config['tgBotOwner']));
  92. }
  93. }