ZVO - Gelber Sack / Blaue Tonne auslesen

Dieses Skript jeden Tag irgendwann Nachts ausführen.

Die benötigte ‚snoopy.class.php‘ runterladen und in den ‚scripts‘ Ordner kopieren.
SourceForge.net: Snoopy

XXX gegen die Nummer des eigenen Ortes austauschen. Diese bekommt ihr, wenn ihr euch den Quelltext der folgenden Seite anseht und den Namen eures Ortes sucht:
http://www.zvo.com/content/entsorgung/abfuhrkalender_2009.php


<option value=[b]766[/b] style="color:#000000;">Seelust</option>

include("snoopy.class.php");

$snoopy = new Snoopy;
$snoopy->cookies["PHPSESSID"]=md5(rand());
$snoopy->referer="http://www.zvo.com/content/entsorgung/abfuhrkalender_".date("Y").".php";

$submit_url = "http://www.zvo.com/content/entsorgung/abfuhrkalender_".date("Y").".php";
$submit_vars["form_city[]"] = "XXX";
$submit_vars["buttonSelectCity"] = "Ort Auswählen";

//Session reaktivieren
$snoopy->submit($submit_url,$submit_vars);
//Daten holen
$snoopy->submit($submit_url,$submit_vars);

$buffer = $snoopy->results;
$buffer = stristr($buffer, "Ihre nächsten Abfuhrtermine für<br>Gelber Sack, Biotonne, Restmülltonne:");
$buffer = stristr($buffer, "<span class=\"Content1\">");
$buffer = stristr($buffer, ">");
$date1 = substr($buffer, 1, strpos($buffer, "</span>")-1);
SetValueString(CreateVariableByName($IPS_SELF, "Datum_GelberSack", 3), $date1);

$buffer = stristr($buffer, "Blaue Tonne:");
$buffer = stristr($buffer, "<span class=\"Content1\">");
$buffer = stristr($buffer, ">");
$date2 = substr($buffer, 1, strpos($buffer, "</span>")-1);
SetValueString(CreateVariableByName($IPS_SELF, "Datum_Papier", 3), $date2);

function CreateVariableByName($id, $name, $type)
{
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "This Variable was created by Script #$IPS_SELF");
   }
   return $vid;
}

Hallo paresy,

ich sag erstmal Danke.

Mal sehen was geht. :wink:

… geht viel und gut :slight_smile:
… nur wer bringt den Müll am kommenden Montag vor die Tür :rolleyes:

MST

zvo_muell_tree.png

So war das nicht gemeint :slight_smile:

eher bezogen auf Nidda usw…

Es brödelt ja jede Gemeinde(Kommune) oder wer auch immer sein eigenens Süppchen.

Deswegen mal sehen was geht so allgemein :smiley:

So sieht es z.B. bei uns aus im Halbjahr.

Als ich mich nun wundern musste, dass Sereetz das Datum von Sarkwitz bekam, kam mir die Idee, dass da ja die Session von paresy mitgeliefert worden ist. Daher habe ich mal oben md5(rand()) ins Cookie reineditiert und das Problem ist gelöst ;).

sehr hilfreiches Script…

leider wohne ich weiter im Süden … bei uns bekomme ich nur eine Tabelle zurück…


<table width="580" cellspacing="0" cellpadding="2" style="border-collapse:collapse; border : 0px solid #E8FFEC;"><tr>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Fr. 09.01.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Di. 10.02.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Mi. 11.03.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Do. 09.04.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Di. 12.05.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Fr. 12.06.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Di. 14.07.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Mi. 12.08.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Do. 10.09.</td>
</tr>
<tr>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Fr. 09.10.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Fr. 06.11.</td>
<td valign="top" style="border : 1px solid #5FBB49; background-color : #E8FFEC">
Di. 08.12.</td>
<td><br></td>
</tr>
</table>

Hat jemand einen Tip wie ich die Daten sinnvoll verarbeiten kann…
Tabelle in ein Array und mit dem aktuellen Datum vergleichen?

DANKE!!

Da muss paresy jetzt durch.

Das kommt davon :wink:

Hatte ich mir ja schon gedacht.

:wink: … ist ja nur ne Frage :wink:
soweit ich gesehen habe gibts im Forum aber noch mehr Leute die fit im programmieren sind!

Hallo HaSc,

das geht alles auf meine Kappe. sorry.

Das ganze ist, wie man lesen kann und die Links verfolgt, für eine Region erdacht welche die Versorgung und Entsorgung übernimmt.

Für den Rest kann ich nichts. Deswegen meine Aussage.

Sicher gibt es fähige Leute. Da wie schon geschrieben, braut jede Sippe ihre eigene Suppe :slight_smile:

Hallo RWN,

das Script an sich war schon hilfreich … ich kann mir auch die Daten soweit aus der HTML Seite ziehen … bis ich die Tabelle habe … dann fehlts mir leider an PHP Kenntnissen :frowning:

Aus dem Forum hab ich mir schon viele Anregungen und script - schnippsel geholt und angepasst … Das ist das schöne am IPS und vor allem an der klasse „IPS-Gemeinde“.

@HaSc: Mit Regex-Kenntnissen kein Problem:

<?
$content = "<table width=\"580\" cellspacing=\"0\" cellpadding=\"2\" style=\"border-collapse:collapse; border : 0px solid #E8FFEC;\"><tr>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Fr. 09.01.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Di. 10.02.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Mi. 11.03.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Do. 09.04.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Di. 12.05.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Fr. 12.06.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Di. 14.07.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Mi. 12.08.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Do. 10.09.</td>
</tr>
<tr>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Fr. 09.10.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Fr. 06.11.</td>
<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">
Di. 08.12.</td>
<td><br></td>
</tr>
</table>";

$pattern = "!<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">[\r]?
(.*)</td>!isU";
preg_match_all($pattern, $content, $result);
$result = $result[1];
print_r($result);

?>

Hallo Horst, oder auch Moin,

das versteht keiner.

Den Rest hab ich grad verschluckt.

Weiter so. Nicht falsch verstehen. :slight_smile:

… vielleicht schubst ihr mich mal vom Schlauch :smiley:

Bei einer PHP-Seite kann ich die Auswertung ja noch „logisch“ nachvollziehen (auch wenn ich ein solches Script alleine nie hin bekommen würde), aber bei mir veröffentlicht die AWG einen Jahreskalender als PDF (wie bei Rainer). Der ist auch noch für die Samtgemeinde und ich müsste ein farbiges Kästchen und eine darinstehende Zahl definieren um auf die Termine von Asendorf zu gelangen.

Wegen meiner Begriffsstutzigkeit die Frage:
Geht das überhaupt, s.h. macht es Sinn sich damit auseinanderzusetzen?

Hallo Uwe,

Wegen meiner Begriffsstutzigkeit die Frage:
Geht das überhaupt, s.h. macht es Sinn sich damit auseinanderzusetzen?

Nein, geht nicht. Zumindest wüsste ich nicht wie, da pdf .

Das ist ja wie ein Blatt Papier an den Monitor genagelt.

Danke für die schnelle Antwort Rainer.

Auch wenn der Schlauch damit für mich eigentlich am falschen Ende geplatzt ist :smiley:
Da nehm ich eben weiterhin die Nägel … (nein, mir ist schon klar das ich die Termine natürlich von Hand eingeben kann) :wink:

Hier ein Erweiterung von Horsts Script.


$content = file_get_contents("URL");

$pattern = "!<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">[\r]?
(.*)</td>!isU";
preg_match_all($pattern, $content, $result);
$result = $result[1];

foreach($result as $date)
{
 if(strtotime(substr($date, 4, 6).date("Y")) > time())
 {
  $datum = substr($date, 4, 6).date("Y");
  echo $datum;
  //SetValueString("NAME/ID", $datum);

  break;
 }
}

IHR SEID KLASSE!!!

Vielen Dank für Eure Unterstützung mit den richtigen Code-Schnipsel funzt mein Script jetzt (anscheinend):
(sicherlich nicht optimal …aber klappt)


<?

include("snoopy.class.php");

$snoopy = new Snoopy;
//$snoopy->cookies["zvogruppe"]=md5(rand());
$snoopy->referer="http://www.entsorgungsdaten.de/lkr.php";

//$submit_url = "http://www.zvo.com/content/entsorgung/abfuhrkalender_".date("Y").".php";
$submit_url = "http://www.entsorgungsdaten.de/lkr.php";
$submit_vars["gemeinde_id"] = "23"; // 23=Neutraubling
/* Entsorgungsart_ID aus dem Quelltext der submit_url
	<option>Alle</option>
	<option value="1">Restmüll</option>
	<option value="2">Papiertonne</option>
	<option value="3">Altreifen</option>
	<option value="4">Umweltmobil</option>
	<option value="7">Sperrmüll</option>
	<option value="10">Kühlgeräte</option>
*/
$submit_vars["entsorgungsart_id"] = "Alle"; 
$submit_vars["aktJahr"] = "".date("Y");
$submit_vars["search"] = " jetzt suchen ";

//Session reaktivieren
$snoopy->submit($submit_url,$submit_vars);
//Daten holen
$snoopy->submit($submit_url,$submit_vars);

$buffer = $snoopy->results;

$buffer = stristr($buffer, "<br><h1>Abfuhrtermine");
//-----------------------------------
// Leerung der Papiertonne auslesen:
//-----------------------------------
$buffer = stristr($buffer, "Papiertonne");
//echo $buffer;
$buffer = stristr($buffer, "Neutraubling");
$buffer = stristr($buffer, "<table");
$Tabelle = substr($buffer, 1, strpos($buffer, "</table>")-1);

//$content = file_get_contents("URL");
$content=$buffer;
$pattern = "!<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">[\r]?
(.*)</td>!isU";
preg_match_all($pattern, $content, $result);
$result = $result[1];
foreach($result as $date)
{
 if(strtotime(substr($date, 4, 6).date("Y")) > time())
 {
  $datum = substr($date, 4, 6).date("Y");
  echo "Nächste Leerung der Papiertonne  :".$datum;
  //SetValueString("NAME/ID", $datum);

  break;
 }
}
Echo "<BR>";

//-----------------------------------
// Leerung der Restmülltonne auslesen:
//-----------------------------------
$buffer = stristr($buffer, "Restmüll");
//echo $buffer;
$buffer = stristr($buffer, "Neutraubling");
$buffer = stristr($buffer, "<table");
$Tabelle = substr($buffer, 1, strpos($buffer, "</table>")-1);

//$content = file_get_contents("URL");
$content=$buffer;
$pattern = "!<td valign=\"top\" style=\"border : 1px solid #5FBB49; background-color : #E8FFEC\">[\r]?
(.*)</td>!isU";
preg_match_all($pattern, $content, $result);
$result = $result[1];
foreach($result as $date)
{
 if(strtotime(substr($date, 4, 6).date("Y")) > time())
 {
  $datum = substr($date, 4, 6).date("Y");
  echo "Nächste Leerung der Restmülltonne:".$datum;
  //SetValueString("NAME/ID", $datum);

  break;
 }
}


?>

Jetzt noch die Variablen befüllen und dann kann ich ein Mail an den Nachbar schicken, dass er meine Tonne rausfährt :slight_smile:
oder SMS an das Handy meiner Frau :rolleyes:

oder SMS an das Handy meiner Frau :rolleyes:

Sei mal froh daß sie das hoffentlich nicht mitliest, ansonsten könnte Putztime angesagt sein :smiley:

Schön das es läuft bei dir.

ist ja nur dafür gedacht wenn ich mal nicht zuhause bin :wink:

Hi,

der Kreis Plön in Schleswig-Holstein kocht natürlich auch sein eigenes Süppchen.

Zumindest wird der Abfuhrplan jetzt mittels php dargestellt und nicht mehr, wie früher, als pdf.

Gibt es eine Möglichkeit das Script für folgende Seite umzubauen:

http://www.abfallwirtschaft-ploen.de/ploen_abfuhr_new.php?next=true

Ich würde „Schönkirchen“ auswählen und dann auf der nächsten Seite alle Toggle gesetzt lassen bis auf Restmüll 4-wöchentlich und RM-Container.

Ich habe nur leider wenig Ahnung von Programmierung. Es wäre klasse, wenn mir einer der Pro´s helfen könnte.

Schönen Abend und Gruß

Jimmy