Für viele eventuell noch unbekannt, aber es gibt sie: Die Google Wetter-API.

Komischerweise scheint diese XML-Schnittstelle keine öffentliche API von Google zu sein, sondern eher sowas wie ein Nebenprodukt für die Personalisierte Startseite von Google.

Wie kann man diese API nun Ansprechen und wie genau funktioniert das?

Eigentlich sehr simpel: Es braucht im Prinzip nichts ausser einer URL, z.B. wie folgt: http://www.google.com/ig/api?weather=Magdeburg

Wie man sieht kann man in der URL den Namen einer Stadt hinterlegen. Leerzeichen im Stadtnamen können durch ein + ersetzt werden, also z.B. New+York. Alternativ kann man auch die Postleitzahl angeben, das kann dann so aussehen: 39120+Germany. Und was erhält man da nun?

Ganz simpel: Eine XML-Datei mit vielen Infos zum Wetter. Unter anderem aktuelle Temperaturen, Windgeschwindigkeiten, Luftfeuchtigkeit, Regenwahrscheinlichkeit, Bewölkung, etc. pp.

Zudem gibt es eine Vorhersage für die nächsten 3 Tage. Da das ganze als XML daher kommt können wir es natürlich auch vielseitig einsetzen und ausgeben. Egal ob nun als HTML, Grafik oder Flash.

Mit PHP5 geht es zudem sehr einfach, da dieses auch direkt XML-Dateien verarbeiten kann. Dazu mal ein kleines Code-Beispiel, welches allerdings auch ein aktiviertes cURL-Modul voraussetzt:

<?php
	header('content-type: text/html; charset=utf-8');
	$city = "New+York";
	$str  = array('Accept-Language: '.$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/ig/api?weather='.$city);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $str);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	$weather = simplexml_load_string(utf8_encode(curl_exec($ch)));
	$weather = $weather->weather;
?>

Da Google das XML als UTF-8 ausliefert, sollte unsere Seite das möglichst auch tuen, daher also header() setzen, sofern euer Webserver das nicht schon automatisch macht. Was ansonsten noch wichtig wäre ist

$str  = array('Accept-Language: '.$_SERVER["HTTP_ACCEPT_LANGUAGE"]);

Da die Wetter-API von Google im Normalfall immer die Sprache im Output verwendet, die der Browser im Header mitschickt, müssen wir der cURL-Anweisung natürlich den richtigen Header auch wieder übergeben. Würden wir das nicht tuen, bekämen wir per Standard englischen Output. Hier wird jedoch die bevorzugte Sprache des Browsers “kopiert”, so das der Spanier spanischen Output bekommt, und der Klingone natürlich Klingonisch ;) Man kann den Wert für die eigene Seite natürlich auch selber festlegen.

Zuletzt holen wir uns den Inhalt des XML in die Variable $weather und können diese nun nach Belieben abrufen bzw. ausgeben.

So gibt uns z.B. echo $weather->current_conditions->humidity["data"]; die aktuelle Luftfeuchtigkeit aus.

Was man natürlich nicht vergessen sollte ist die zeitliche Verzögerung die wie immer entsteht wenn Dateien von einem anderen Server bezieht. Ein Caching der Datei auf dem lokalem Webserver macht wohl durchaus Sinn, denn die Wetterdaten werden werden eh nicht minütlich aktualisiert. Zu diesem Thema habe ich vor einiger Zeit schonmal etwas geschrieben.

Ich denke diese API lässt sich sehr flexibel und unkompliziert einsetzen. Für weitere Anregungen bin ich natürlich wie immer zu haben :)

Update #1:

Man muss zum festlegen der Sprache nicht zwingend den Header beeinflussen. Leichter geht es durch ein anhängen von z.B. &hl=de an die URL.

Tags: , , , ,


Kommentare zum Thema Google Wetter-API:

1 | Tobi schrieb am 22.05.2008 um 19:03
Gravatar dieses Kommentators

Wie sieht es denn hier mit der rechtlichen Seite aus? Darf man das einfach so verwenden?!

2 | Christian schrieb am 22.05.2008 um 19:32
Gravatar dieses Kommentators

Tobi, das ist ne gute Frage. Ich hab gerade mal geguckt, also im HowTo der Google Toolbar wird unter anderem erklärt wie man die Wetterdaten abgreifen kann, allerdings im Zusammenhang mit der Verwendung in der Google Toolbar.

Ich denke wer die API wirklich in produktiven Gebieten einsetzen will sollte vorher bei Google nochmal kurz anfragen. Wer da vielleicht mehr Informationen hat möge sich doch bitte melden.

3 | Karsten schrieb am 22.05.2008 um 21:05
Gravatar dieses Kommentators

Die Daten könnte man schön in Plugins und Addons verarbeiten. Wäre super, wenn da jemand was rechtliches zu finden könnte.

Auf jeden Fall ein toller Fund, respekt.

4 | John schrieb am 22.05.2008 um 22:12
Gravatar dieses Kommentators

Sehr geil. Ich liebe APIs. Gebookmarked.

Tempelhof morgen wolkig, na ja. ;-)

5 | macx schrieb am 23.05.2008 um 09:23
Gravatar dieses Kommentators

Ich hab die API letzten Monat auch schon für eine Kundenseite benutzt und bin damit sehr zufrieden. Leider gab es, wie du bemerkst, keine Doku. Also war meine Arbeit eher Try and Error.

6 | SonicHedgehog schrieb am 23.05.2008 um 10:17
Gravatar dieses Kommentators

Super! Danke für den Tipp, könnt’ ich evtl. auch bald brauchen :-)

7 | Patrick schrieb am 28.05.2008 um 21:39
Gravatar dieses Kommentators

Vielen Dank fuer diesen Tipp, hab mir da gleich mal was feines zusammengeschustert.

Greetings

8 | Muckel schrieb am 29.05.2008 um 11:59
Gravatar dieses Kommentators

Ich find auch super – das sollte google als richtigen Service ausbauen, wie ich finde. Wenn jemand was weiß zum rechtlichen Hintergrund, würde mich das sehr interessieren, da ich das für ein PlugIn sehr gut gebrauchen könnte. Gruß Muckel

9 | Michel schrieb am 06.06.2008 um 17:44
Gravatar dieses Kommentators

Das hört sich doch alles ganz gut an. Wir wollen das kundenseitig auch einbinden.Rechtlich gibt es da noch nichts Neues , oder? Christian, du meintest, wer mehr Infos braucht, solle sich gern melden. Hast du einen Kontakt zu Google? Ich würd mich da schon ganz gern absichern.

10 | Christian schrieb am 06.06.2008 um 23:29
Gravatar dieses Kommentators

Hi Michel, nein ich meinte eher: Wer mehr Infos hat, der kann sich bei mir/uns melden und diese Infos preisgeben. Da ich selber die API noch nicht produktiv im Einsatz habe, musste ich bisher auch noch nicht bei Google anklopfen. Wäre schön wenn sich dafür mal jemand opfern würde :)

11 | Muckel schrieb am 07.06.2008 um 12:03
Gravatar dieses Kommentators

Guten Tag zusammen,

mit einem guten Freund zusammen, habe ich ein Projekt vor ( http://jurtenrunde.de/blog/?p=124 ), in dem wir das ggf mit einbauen werde. Aus diesem Grund werde ich diese Woche einmal offiziell bei google Anfragen. Und euch dann berichten, was sie sagten. Gruß Muckel

12 | Explofish schrieb am 24.06.2008 um 11:34
Gravatar dieses Kommentators

Hallo alle zusammen.
Ich möchte diesen Service gerne mit Längen und Breitengraden nutzen. d.h. statt in der URL Den Ort zu übergeben die längen und breitengrade.
Wisst ihr ob das möglich ist?

Vielen dank schoneinmal

13 | Hores schrieb am 30.08.2008 um 10:52
Gravatar dieses Kommentators

API ist perfekt. Gibt es eine dokumentce die API?

14 | Eddie schrieb am 03.09.2008 um 15:12
Gravatar dieses Kommentators

Hallo zusammen,

gibt es denn jetzt schon irgendwelche Infos bzgl. der rechtlichen Situation, inwiefern man das auf privaten/kommerziellen Seiten einsetzen darf?

Lieben Gruß aus Ostfriesland,
Eddie

15 | Manu schrieb am 03.11.2008 um 22:29
Gravatar dieses Kommentators

Gibts was neues zu der rechtlichen Situation?

MFG
Manu

16 | thorsten schrieb am 04.11.2008 um 15:40
Gravatar dieses Kommentators

Heute hab ich gemerkt das ich keine Daten mehr aus der Schnittstelle lesen kann.
Wie siehts bei euch aus?
Oder blockt google mich jetzt?

17 | Christian schrieb am 05.11.2008 um 08:27
Gravatar dieses Kommentators

Ich vermute mal stark, das sie den Traffic von “Bots” bzw. API-Aufrufen unterbunden haben. Als normaler User kann man auf die Daten ja noch ohne Probleme zugreifen. Versuch doch mal über cURL sowas wie einen realen Useragent mitzuschicken, evtl. hilft das ja schon?

18 | thorsten schrieb am 05.11.2008 um 09:21
Gravatar dieses Kommentators

curl_setopt hatte ich schon vorher drinne.
Aber heute geht es wieder. Sehr komisch.
Naja wer weiß an was es lag… hauptsache es geht wieder.

19 | thilo schrieb am 19.11.2008 um 23:43
Gravatar dieses Kommentators

Google hält es wieder mal mit der Rechtlichen Seite etwas unklar. Die Nutzung der GoogleMap und auch die anderen Services werden unterstützt aber Google gibt keine Sicherheiten. So kann zB die API jederzeit verändert werden, was dann beim Kunden schwer zu vermitteln ist.

20 | Mario schrieb am 02.12.2008 um 22:26
Gravatar dieses Kommentators

Das cURL-Modul ist bei mir nicht installiert.
Ist es möglich das Ergebnis der Abfrage als XML auf dem eigenen Server zur weiteren Verwendung zu speichern?

21 | Christian schrieb am 02.12.2008 um 22:45
Gravatar dieses Kommentators

Hi Mario,

ohne cURL sieht es leider schlecht aus. Man könnte mit curl natürlich schon einen Cache einbauen (und sollte das auch) damit die Daten nur in bestimmten Intervallen abgerufen werden, ohne cURL kannst du aber erst garnicht auf die API zugreifen…

Du könntest aber einen anderen Server der evtl. curl kann, damit beauftragen diesen Job zu übernehmen und das XML-File per FTP auf den anderen Server zu schieben, das ganze dann per CronJob, aber das ist natürlich etwas unfein.

22 | keydon schrieb am 03.01.2009 um 20:27
Gravatar dieses Kommentators

geht auch wunderbar ohne curl^^ (sofern “allow_url_fopen” in de rphp.ini true ist)
zb mit print_r(simplexml_load_string(utf8_encode(file_get_contents(‘http://www.google.com/ig/api?weather=Pforzheim’))));

23 | Floppy schrieb am 27.03.2009 um 10:35
Gravatar dieses Kommentators

Hey! Super Artikel. Hat mir wirklich sehr weiter geholfen. Ich bin noch nicht so gut in der Verarbeitung, deshalb wollte ich fragen, wie man die weiteren ‘forecast_conditions’ verarbeiten kann. Für mich ist es nicht möglich die Daten für heute und morgen zu unterscheiden.
Könnt ihr mir einen Tipp geben? Danke =)

24 | halskrause schrieb am 01.04.2009 um 01:00
Gravatar dieses Kommentators

und wieder die Frage:
Darf man diese API nutzen????

25 | Claudia schrieb am 19.06.2009 um 16:05
Gravatar dieses Kommentators

Ich frage eben auch wieder mal… darf man oder darf man nicht? :)
Doku gibts natürlich immer noch keine…

26 | Stefan schrieb am 21.06.2009 um 17:52
Gravatar dieses Kommentators

Mich würde auch die rechtliche Situation interessieren, da ich die API seit gestern auf meiner privaten Seite einsetze und auch keine Alternative zur Anzeige der aktuellen Wetterdaten kenne. (Entsprechende Services anderer Anbieter zum Einbinden der Wetterdaten in die eigene HP zeigen leider alle nur eine Prognose an, aber nicht die aktuellen Werte).

27 | unknown schrieb am 24.06.2009 um 18:04
Gravatar dieses Kommentators

Hi ich hab mal ne Frage, ist es möglich dass bei current_conditions der aktuelle Wert angezeigt wird, also ich meine in deutscher zeit? denn bei mir ist das aktuelle datum der xml immer die usa zeit und damit wird nachmittags die temperatur von morgens angezeigt. ich hoffe jemand weiß rat

28 | Thomas schrieb am 07.07.2009 um 20:55
Gravatar dieses Kommentators

Die API ist wirklich gut, hier ist noch ein schönes Beispiel, bei dem auch die von Google gelieferten Grafiken verwendet werden:
http://www.keepaneye.de/wetterdaten-aus-xml-api-verwenden/

29 | Martin schrieb am 13.07.2009 um 02:11
Gravatar dieses Kommentators

Super Sache, danke für die Anleitung!
Habe mir das ganze auch in Kombination mit dem Caching zu sammen gebastelt und es funktioniert ohne Probleme. Ich würde aber gerne eigene Icons benutzen, dazu müsste ich aber erstmal wissen wie die von Google alle heißen…
cloudy.gif; chance_of_rain.gif; mostly_sunny.gif; mostly_cloudy.gif … kennt jemand noch die restlichen? Oder muss ich auf besseres Wetter hoffen? ;-)

Mfg Martin

30 | Judith schrieb am 30.07.2009 um 11:45
Gravatar dieses Kommentators

komische Sache:
ich habe die API auch über CURL eingebunden, hat auch super funktioniert. Leider nur ein paar Tage lang. Ich hab mir den Fehler genauer angeschaut. Die Funktion curl_exec hat den Fehler 302 “object moved” hervorgerufen und in dieser Fehlerausgabe war ein Links auf eine Google Fehlerseite (403). Anscheinend blockt Google meine Abfrage, warum auch immer.

Ich habe mir dann die XML per file_get_contents geholt. Lief aber auch nur ein paar Tage…

Jetzt hab ich eine Kombination aus beiden.

Woran kann es liegen, dass Google die Anfrage blockiert?

31 | Sabine schrieb am 31.07.2009 um 23:01
Gravatar dieses Kommentators

Hallo Thomas,
danke für den Link zu http://www.keepaneye.de/wetterdaten-aus-xml-api-verwenden/ (warum kann ich das eigentlich nicht verlinken?), hier ist ja sogar eine Beschreibung, wie man damit ein Bild rendert. Toll…
Grüße
Sabine

32 | detommy schrieb am 29.08.2009 um 14:42
Gravatar dieses Kommentators

Danke für die Tipps. Funktioniert super.
An der Klärung der rechtlichen Seite hat sich auch weiterhin nix getan. Ich habe dazu aber auch das Gefühl, dass Google daran nichts liegt:
http://groups.google.com/group/google-de-google-forum/browse_thread/thread/fd402497517237b6
Auf jeden Fall habe ich im Netz nix gefunden, dass irgendjemand aufgrund der Datennutzung Probleme mit Google bekommen hat – das stimmt mich (ein wenig) zuversichtlich.

Grüße!

33 | Martin schrieb am 27.03.2010 um 10:58
Gravatar dieses Kommentators

Super Beschreibung, was aber interessant wäre ist, ob das ganze auch per Latitude und Longitude ausgelesen werden kann.

Ich hab es direkt über die Get-Variable versucht, was aber nicht funktionierzte.

34 | Oliver schrieb am 27.03.2010 um 15:57
Gravatar dieses Kommentators

Bei mir erscheint eine Fehlermeldung:
“Fatal error: Call to undefined function curl_init() in wetter.php on line 5”
entspricht der Zeile: $ch = curl_init();
Kann mir jemand helfen?

35 | Alex schrieb am 30.03.2010 um 16:50
Gravatar dieses Kommentators

@Martin: Latitude und Longitude geht folgendermaßen
http://www.google.de/ig/api?weather=,,,50334722,6944444&hl=de
Wichtig die drei Kommas vor den Werten. Lat und Lng selbst fehlt aber ein Dezimaltrennzeichen. Der Beispiel Link ist übrigens der Nürburgring (50.334722,6.944444)

36 | c0de schrieb am 25.09.2010 um 19:53
Gravatar dieses Kommentators

Der Spass geht auch mit SimpleXML und man benötigt nicht zwingend cURL. Auf meinen Blog ist ein Beispiel hierzu. http://c0de.at/tutorials/api/die-versteckte-google-wetter-api/

Kommentar-Feed für diesen Artikel


Kommentarfunktion für diesen Artikel geschlossen.



Blogsuche

RSS-Feeds

Plaste & Plastik

plasteundplastik.de - Das Geocaching-Weblog

Die Kategorien


Netz-Fundstücke


Meta / Propaganda