Filmsuche

Als erstes muss natürlich die entsprechende Klassen-Datei der API eingebunden werden. Dies kann auf vier verschiedene Arten geschehen - welche davon zum Einsatz kommen soll, obliegt dem Programmierer (und Details dafür finden sich in der  PHP Dokumentation:

<?php
include("imdb.class.php");
include_once("imdb.class.php");
require("imdb.class.php");
require_once("imdb.class.php");
?>

Für eine Suche müssen so die Klassen imdbsearch.class.php und imdb.class.php (bzw. pilotsearch.class.php und pilot.class.php) eingebunden werden.

Wie können wir jetzt nach einem Film suchen? Entweder haben wir den Namen (oder zumindest einen signifikannten Teil davon) - oder wir kennen bereits seine IMDB-ID. Im letzteren Fall entfällt natürlich die Suche, und man kann sich gleich an die Details machen: "Filmsuche" heißt hier nämlich "Suche nach der IMDB ID" (auch im Falle von Moviepilot). Und so besteht das Suchergebnis dann schließlich auch aus einer "Auflistung" von Filmen mit der zugehörigen IMDB-ID.

Suche ausführen

Um die notwendigen Schritte zu beschreiben, nehmen wir am Besten ein Beispiel zur Hand: Sagen wir, wir suchen nach dem Film "Keine halben Sachen". Und sagen wir weiterhin, wir erinnern uns nicht an den richtigen Namen - wissen aber, dass der Titel "halbe Sachen" enthält:

<?php
$name = "halbe Sachen";         // der Name wird gewöhnlich dynamisch gesetzt
require_once("imdb.class.php"); // Klassendatei einbinden. Für Moviepilot: pilot.class.php
require_once("imdbsearch.class.php"); // Für Moviepilot: pilotsearch.class.php
$search = new imdbsearch();     // eine Instanz der Such-Klasse erstellen. Für Moviepilot: $search = new pilotsearch();
$search->setsearchname($name);  // der Klasse mitteilen, wonach wir suchen
                                // (keine Groß-kleinschreibungs-Unterscheidung)
$results = $search->results();  // Suche abschicken
?>

Ergebnisse parsen

Nachdem die Suche abgeschlossen ist, finden wir etwaige Ergebnisse in der Variable $results. Die API beschreibt den Rückgabewert der Methode results() als ein Array[0..n] von Objekten, wobei jedes Objekt eine Instanz der Klasse imdb ist (auf die wir bei den Film-Details noch näher eingehen werden) - im Prinzip können wir also jetzt bereits auf alle Details zugreifen. Was aber noch nicht sinnvoll ist - wir wissen ja noch gar nicht, ob unser gesuchter Film überhaupt in der Ergebnismenge enthalten ist (oder wir uns nicht einmal an den Teil seines Namens richtig erinnert haben). Also wandern wir zunächst durch unser Array, um uns die wichtigsten "Erkennungsdaten" anzusehen:

<?php
foreach ($results as $res) {
  $mid  = $res->imdbid();
  $name = $res->title();
  $year = $res->year();
  // now do something with these data
  echo "$mid: $name ($year)<br>\n";
}
?>

Aus dieser Liste ist dann der richtige Film auch an seinem vollen Namen (und Erscheinungsjahr) recht klar zu erkennen (und steht in unserem Beispiel sogar an erster Stelle). Der Besucher unserer Seite kann also nun die passende IMDB-ID auswählen. Wir könnten es ihm auch einfacher machen, für einen detaillierteren Vergleich direkt auf die IMDB-Site zuzugreifen, indem wir ihm auch den passenden Link mit anbieten: http://'".$search->imdbsite."/title/tt".$res->imdbid() - für Moviepilot wäre dies 'http://'.$search->pilotsite.'/movies/imdb-id-'.(int)$res->imdbid().

Da wir die IMDB-ID nun kennen, können wir uns um die gewünschten Details kümmern. Wie das geht, ist hier beschrieben.

Last modified by izzy, 04/26/10 20:25:06 (3 years ago)