in Programmierung

Facebook als Veranstaltungskalender

ASurroca / Foter

Ich bin ja kein großer Fan von dem großen weißen f auf blauen Grund. Jedoch bin ich auch faul und manchmal obsiegt meine Faulheit über mein Gewissen. Das Problem: Im Erstikalender sind Veranstaltungen diverser Clubs zu finden. Bisher habe ich einen Großteil von Hand gepflegt. Wo es möglich war, habe ich ICal-Dateien oder -Schnittstellen von vereinseigenen Kalendern verwendet. Leider bieten das nur die wenigsten an. (Ein Hoch auf den HFC und den Stura-Kalender!). Nun entdeckte ich, dass viele Vereine (vor allem die Clubs) Veranstaltungen in Facebook speichern. Tja und Facebook hat eine Schnittstelle, mit der man die Veranstaltungen lesen kann.

Als erstes erstelle ich einen Array ([cci lang=“php“]$list_facebook[/cci]) mit allen relevanten Page-IDs von Facebook. Ich muss zwei verschiedene Abfragen senden. In der ersten wird eine Übersicht über alle Veranstaltungen erfragt, in der zweiten werden Details zu einzelnen Veranstaltungen erfragt. Da ich nur Interesse an den zukünftigen Veranstaltungen hege, frage ich vergangene gar nicht erst ab.

[cce lang=“php“]
// FACEBOOKSECTION
print „read facebook\n“;

$auth_token = „bindochnichtbloede“;

function facebook_events($url) {
global $auth_token;
$json = json_decode(file_get_contents($url),1);
if($json) {
// Wenn keine Daten vorhanden sind, brauchen wir nix mehr importieren
if((!isset($json[‚data‘]))||(count($json[‚data‘])==0))
return true;
foreach($json[‚data‘] as $e) {
$event = json_decode(file_get_contents(„https://graph.facebook.com/“.$e[‚id‘].“?access_token=$auth_token“),1);
if($event) {
//Einfügen in Hauseigene Datenbank
}
}
//Manchmal sind es so viele Daten, dass sie auf mehreren Seiten stehen
if(isset($json[‚paging‘][’next‘])) {
facebook_events($json[‚paging‘][’next‘]);
}
}
}

foreach($list_facebook as $v) {
facebook_events(„https://graph.facebook.com/$v/events?access_token=$auth_token“);
}
[/cce]

Es ist nicht viel Code, dafür finden sich nun viele, ungewollt vereinsgepflegte Kalender im Erstikalender wieder.