Anmelden
Tipp von eurobuch.de
Aktuelles
Get it on iTunesJetzt bei Google Play

Affiliateprogramm - technische Beschreibung

Hier finden Sie Informationen zum Einbau des Affiliateprogramms von eurobuch.de im Design Ihrer Website.
Anfragen bitte an db.dev@eurobuch.de.

Was ist das eurobuch.de Affiliateprogramm?
Ihr Profit
  • Sie profitieren von der Suchgeschwindigkeit von eurobuch.de
  • Sie profitieren von dezeit 150 Millionen durchsuchter Bücher, die in Eurobuch.de enthalten sind.
  • Sie profitieren von bis zu 30% Umsatzbeteiligung an den verkauften Büchern.
  • Sie können die Eurobuch.de Buchdaten beliebig weiterverarbeiten und zusätzliche, auf Eurobuch.de nicht vorhandene, Dienste den Usern anbieten.
Was müssen Sie tun?
  • Damit Sie die Eurobuch.de Suchergebnisse auf Ihrer Website sehen, muss Ihr Webprogrammierer ein Programm schreiben, das unsere Buchdaten per XML oder CSV abruft.
  • Diese Programmierarbeit ist nicht aufwändiger (in der Regel weniger aufwändig) als die Suche und Darstellung der Suchergebnisse in Ihren eignen Buchdaten auf Ihrer Website (falls Sie dies bereits anbieten).
    Sehr aufwändig ist die Programmierung im gesamten nicht.
  • Wir stellen Ihrem Programmierer hier auf dieser Website gute Tipps und Ausschnitte aus Quellcodes (der Programmiersprache PHP) zur Verfügung, die das Programmieren dieser Abfrage stark vereinfachen.
    Anfragen dazu richten Sie bitte an db.dev@eurobuch.de.
  • Weiter unten ist ein einfaches und ein etwas komplexeres Beispielprogramm angegeben, das auch zum Download zur Verfügung steht. Damit könnnen Sie eine Suche in einfachster Weise direkt in Ihre Website einbinden. Diese Beispielprogramme können von Ihrem Programmierer leicht modifiziert werden, damit Sie Ihren Anforderungen an Layout und Funktionalität genügen.
Wie funktioniert das?
  • Sie fordern bei uns einen Benutzernamen und ein Passwort für das Affiliateprogramm an.
  • Sie testen dies durch den Aufruf der Abfrage-URL auf unserer Website (siehe unten).
  • Ihr Programmierer liest sich diese Seiten durch und implementiert die Suche nach Ihren Wünschen.
  • Fertig.

Technische Anfragen richten Sie bitte an db.dev@eurobuch.de.

Informationen für Ihren Programmierer
Wir verwenden folgende Begriffe:
  • Affiliate-Website: Website unseres Eurobuch.de Affiliates, d.h. Ihre Website oder die Website für die Sie als Programmierer die Suche einbinden wollen.
  • Buchplattformen: Sind Websiten, die Eurobuch.de Ihre Buchdaten zur Verfügung stellen (z.B. Amazon, Antbo, Booklooker, Abebooks etc.)
  • Benutzer: Ist der User der Affiliate-Website, der z.B. ein Buch sucht und die Daten eingibt und dann die Ergebnisse sehen will
Was muss ich tun?

Einzige zentrale Stelle ist folgende URL:

https://www.eurobuch.de/extreq/meta/extquery.php?platform=<Your Username>&
password=<Your Password>&author=<Autor>&title=<Titel>
&search=<Schluesselwort>&isbn=<ISBN>&&mediatype=0&clientip=<Enduser-IP-Adresse>&format=xml

Wenn Sie diese URL in einem Browser (z.B. IE) aufrufen (Username, Passwort bekommen Sie von uns resp. dem Affiliate mitgeteilt) und bei beispielsweise "Holl" angeben, bei "Jesus" und die anderen Parameter leer (oder weg) lassen, so sehen Sie z. B. folgende Ausgabe (die spitzen Klammern sind Teil des Parameters und in der URL dann nicht mehr enthalten!):

<?xml version="1.0" encoding="ISO-8859-1" ?>
  <!DOCTYPE ResultList (View Source for full doctype...)>
- <ResultList id="23291123">
  <Book id="16048251" author="Holl, Adolf" title="Jesus in schlechter Gesellschaft" comment="Wien : Buchgemeinschaft Donauland; Stuttgart : Europ. Bildungsgemeinschaft; [1972]; 21 cm; 215 S.; Aufl.: Lizenzausgabe; Leinen, Schutzumschlag, gut;" year="1972" price="8.00" currency="EUR" priceeur="8.00" country="A" dealer="SFB1050" url="https://www.eurobuch.de/extreq/meta/bestellung.php?qid=16048251" platform="Booklooker.de" />
  <Book id="16048253" author="Holl, Adolf" title="Jesus in schlechter Gesellschaft. (Was Menschen bewegt)." comment="190 S. 21,5 cm. Gebunden. 318gr. Kreuz," isbn="3783118166" price="7.45" currency="EUR" priceeur="7.45" country="D" dealer="Laetare Büchermarkt" url="https://www.eurobuch.de/extreq/meta/bestellung.php?qid=16048253" picurl="https://www.booklooker.de/images/cover/user_thumb/0309/0803/bl1060.jpg" hardcover="1" platform="Booklooker.de" />
  <Book id="16048254" author="Holl, Adolf" title="Jesus in schlechter Gesellschaft" comment="Name auf Vorsatz, sehr guter Zustand #e5Leinen, Deutsche Verlags-Anstalt, 1971," year="1971" price="5.00" currency="EUR" priceeur="5.00" country="D" dealer="Bücher-Bezzel" url="https://www.eurobuch.de/extreq/meta/bestellung.php?qid=16048254" platform="Booklooker.de" />

Sie sehen Hier eine XML-Ausgabe (näheres zum XML-Format siehe https://www.w3c.org/XML/) der Suchergebnisse die Eurobuch zum Autor "Holl" und Titel "Jesus" gefunden hat. Falls Sie noch keine Erfahrung mit XML-Formaten haben, so lassen Sie sich durch die bei w3c.org vielen angegebenen Dinge nicht verwirren, es ist bei weiten nicht so kompliziert wie es aussieht. Falls Sie die Programmiersprache PHP auf der Website verwenden, so können Sie den in PHP eingebauten XML-Parser verwenden um unsere XML-Ausgabe einzulesen. Andere Programmiersprachen (Perl, Phyton, ASP etc.) haben auch eingebaute XML-Parser, die Ihnen den Großteil der Arbeit abnehmen und die Daten die wir Ihnen übermitteln schon in entsprechenden Variablen übergeben. Die Ausgabe erfolgt im ISO-8859-1 (Westeuropa, latin1) Zeichensatz. Mit "&format=xml8" können Sie die Daten im Internationalen UTF-8 Zeichensatz ausgeben lassen. In diesem Fall müssen auch die übergebenen Daten (Autor, Titel, ...) im UTF-8 Zeichensatz codiert sein! Sollte Ihnen das XML-Format (zu dem wir aber anraten) nicht recht behagen, können Sie die Daten auch per CSV abfragen, indem sie am ende statt "&format=xml" einfach "&format=csv" angeben. Das sieht dann ca. so aus (Zeilenumbrüche mit vorangestelltem Leerzeichen zur besseren Lesbarkeit eingefügt):

231932123
16079133 ~||~ Holl, Adolf ~||~ Jesus in schlechter Gesellschaft ~||~
 Wien : Buchgemeinschaft Donauland; Stuttgart :  Europ. Bildungsgemeinschaft;
 [1972]; 21 cm; 215 S.; Aufl.: Lizenzausgabe; Leinen, Schutzumschlag, gut; ~||~ ~||~
 1972 ~||~ 8.00 ~||~ EUR ~||~ 8.00 ~||~ A ~||~ SFB1050 ~||~
 https://www.eurobuch.de/extreq/meta/bestellung.php?qid=16079133 ~||~ ~||~ ~||~ ~||~ ~||~ ~||~
 Booklooker.de
16079134 ~||~ Holl, Adolf ~||~ Jesus in schlechter Gesellschaft. (Was Menschen bewegt). ~||~
 190 S. 21,5 cm. Gebunden. 318gr. Kreuz, ~||~ 3783118166 ~||~ 0 ~||~ 7.45 ~||~ EUR ~||~
 7.45 ~||~ D ~||~ Laetare Büchermarkt ~||~
 https://www.eurobuch.de/extreq/meta/bestellung.php?qid=16079134 ~||~
 https://www.booklooker.de/images/cover/user_thumb/0309/0803/bl1060.jpg ~||~
 0 ~||~ 1 ~||~ 0 ~||~ 0 ~||~ Booklooker.de
...

Es werden exakt die gleichen Daten wie im XML-Format übergeben, nur sind pro Buch eine Zeile angegeben und jedes Feld ist durch "~||~" abgeteilt.

Folgende Daten werden in der XML (oder CSV) Datei angegeben:

  • id: Ist eine eindeutige Nummer des Buches in unserer Datenbank. Diese Nummer bleibt ca. drei Stunden gültig, danach wird das Buch in unserer Datenbank gelöscht.
  • author: Autor des Buches
  • title: Titel des Buches
  • comment: Kommentartext zum Buch. Kann u.U. sehr lang sein.
  • isbn: ISBN-Nummer des Buches, kan nauch leer sein, dann wird das Attribut nicht angegeben.
  • year: Jahr des erscheinens
  • price: Preis des Buches
  • currency: Währung, in der "price" angegeben ist.
  • priceeur: Preis des Buches umgerechnet auf EUR. Falls currency ungleich "EUR" ist, so rechnen wir den "priceeur" mit Tagesaktuellen Kursen auf Euro um. Von manchen Buchplattformen erhalten wir den Buchpreis z.B. in US$, wir rechnen dies dann auf EUR nach den Tagesaktuellen Kursen um. In diesem Fall ist der Euro-Preis ein "ca."-Preis.
  • country: Land in dem das Buch physikalisch liegt. Wir geben hier Länderkurzcodes an (z.B. "D" für Deutschland, "A" für Österreich, etc.). Diese Kurzcodes sind nicht immer exakt richtig, da manche Buchplattformen dies nicht weitergeben oder selbst nicht wissen.
  • dealer: Name des Händlers. Dies kann bei manchen Buchplattformen entweder leer oder ident mit dem Namen der Buchplattform sein.
  • url: Ist jene URL, unter der das Buch bestellt oder genauer Betrachtet werden kann (Details). Der hier angegebene Link behält für ca. drei Stunden Gültigkeit, dann wird das entsprechende Buch aus unserer Datenbank gelöscht und der Link funktioniert nicht mehr.
  • picurl: Link zu einem Vorschaubild (kann auch leer/nicht angegeben sein). Das Vorschaubild ist in der Regel so klein, dass es in der Buchliste mit angezeigt werden kann. Der Link führt in der Regel nicht zu Eurobuch.de, sondern zu einem Server der Buchplattform, von der das Buch kommt.
  • paperback: Ja/Nein-Wert (0=Nein, 1= Ja), ob das Buch ein Taschenbuch ist oder nicht.
  • hardcover: Ja/Nein-Wert (0=Nein, 1= Ja), ob das Buch gebunden ist oder nicht.
  • signed: Ja/Nein-Wert (0=Nein, 1= Ja), ob das Buch signiert ist oder nicht.
  • firstedition: Ja/Nein-Wert (0=Nein, 1= Ja), ob das Buch eine Erstausgabe ist oder nicht.
  • platform: Name der Buchplattform, von der wir die Buchdaten haben.

Bitte beachten Sie, dass wir in Zukunft sowohl das XML als auch das CSV-Format erweitern können. Im XML-Format werden eventuell zusätzliche Attribute hinzukommen, beim CSV-Format werden eventuell Felder am Ende der Zeile angefügt. Ihre Programme müssen in der Lage sein, damit umzugehen, sonst werden Sie eventuell in der Zukunft nicht mehr funktionieren.

Ein Sonderfall stellt die "id" dar, die im CSV-Format in der ersten Zeile übergeben wird, bzw. im XML-Format als Attribut von "ResultList". Die hier übergebene ID bezeichnet die an Eurobuch abgesetzte Suche eindeutig, wir bezeichnen Sie als "Such-ID".

Was mache ich mit den Daten im CSV oder XML-Format?

Als Programmierer gehen Sie folgendermaßen vor:

  • Sie erstellen ein Suchformular, das in etwa unserem Suchformular entspricht (Felder für Autor/Titel/Schlüsselwort und ISBN). Das Layout des Suchformulars können Sie selbst bestimmen.
  • Das Formular schicken Sie auf eine Ergebnisseite.
  • In dieser Ergebnisseite rufen Sie unsere URL auf (extquery.php) und übergeben als Parameter die vom Benutzer im Suchformular eingegeben Werte.
  • Sie parsen unsere Ergebnisseite und schreiben die Ergebnisse in eine Datenbank (z.B. die frei und kostenlos verfügbare mySQL Datenbank). Sie merken sich die "Such-ID", auch in der Datenbank damit Sie bei erneutem Aufruf der Ergebnisseite (z.B. beim Blättern) nicht Eurobuch.de erneut abfragen, sondern die in der Datenbank zwischengespeicherten Ergebnisse anzeigen. Diese zwischengespeicherten Ergebnisse können Sie nach beliebigen Kriterien sortieren und anzeigen.
  • Nach einiger Zeit (spätestens nach drei Stunden) löschen Sie die in der Datenbank zwischengespeicherten Suchergebnisse wieder.

Beachten Sie bitte, dass Sie unsere Abfrage (extquery.php) nicht ständig bei jedem Seitenaufbau einer Abfrage aufrufen. Das hat zur Folge, das sie wieder eine neue Such-ID (und damit komplett neue Buch-IDs) bekommen. Wir können auch nicht garantieren, dass die Ergebnisse bei jedem Aufruf von extquery.php in der gleichen Reihenfolge kommen, das hängt unter anderem von der Geschwindigkeit der beteiligten Server (und das sind sehr viele, u.a. auch die der Buchplattformen selbst) ab. Sie bekommen dann auch eine wesentlich schlechtere Durchklick (Bestellklick) zu Suchrate, was uns dann auffällt und die Gewinnbeteiligung der Affiliate-Website an unserer Website verringert. Ein Aufruf von extquery.php muss einer Suche bei Ihnen entsprechen.

Für folgende Probleme bieten wir Ihnen hier ansatzweise Lösungen in der Programmiersprache PHP an:

Einparsen der Ergebnisse im XML-Format

PHP hat einen eingebauten XML-Parser (siehe http://www.php.net/manual/de/ref.xml.php)

Man kann ganz einfach

function xml_startElement($parser, $name, $attrs)
{
	if($name=="RESULTLIST") {
		print "SUCH-ID: ".$attrs["ID"]."<br><hr>";
	} else if($name=="BOOK") {
		print "ID: ".$attrs["ID"]."<br>";
		print "Autor: ".$attrs["AUTHOR"]."<br>";
		print "Titel: ".$attrs["TITLE"]."<br>";
		print "<a href='".$attrs["URL"]."' target='_blank'>Bestellen</a><br><hr>";
		flush();
	}
}
function xml_endElement($parser, $name)
{
}
function parseURL($url) {
	$fp=fopen($url,"rb");
	if(!$fp) {
		return("Could not open $url");
	}
	$xml_parser = xml_parser_create();
	xml_set_element_handler($xml_parser, "xml_startElement", "xml_endElement");
	while($data=fread($fp,4096)) {
		if (!xml_parse($xml_parser, $data,feof($fp))) {
		   $ret=sprintf("XML error: %s at line %d",
					   xml_error_string(xml_get_error_code($xml_parser)),
					   xml_get_current_line_number($xml_parser));
			xml_parser_free($xml_parser);
			return($ret);
		}
	}
	xml_parser_free($xml_parser);
	fclose($fp);
	return(false);
}
parseURL("https://www.eurobuch.de/extreq/meta/extquery.php?platform=test&password=test".
"&author=holl&title=jesus&clientip=".$_SERVER["REMOTE_ADDR"]."&format=xml");

Mit diesem kurzen Programm kann man schon Suchergebnisse in einer Wurst darstellen. Mit Username/Passwort "test" können Sie tests vornehmen, für diesen Benutzer werden keine Provisionen ausgezahlt.

In Ihrem Fall sollten Sie statt der Ausgabe via "print" in "xml_startElement()" einfach die Daten in Ihre Datenbank schreiben. Wie schon zuvor erwähnt, sollte der Aufruf an "parseURL" nur einmal pro Suche erfolgen, d.h. Sie merken sich beim Blättern auch die "SUCH-ID" und falls diese schon vorhanden ist, holen Sie die Ergebnisse aus der Datenbank, sonst rufen Sie uns auf und schreiben die Ergebnisse in die Datenbank.

Falls Die Parameter an extquery.php aus einem vom Benutzer eingegeben Suchformular kommen, vergessen Sie nicht diese HTML-Gerecht zu Quoten, d.h. "...author=".rawurlencode($author)."&title=".rawurlencode($title)."&...".

Sortierung und Seitenunterteilung

Falls Sie auf Ihrem Webserver keine Datenbank zur Verfügung haben oder den Programmieraufwand für das abspeichern in eine Datenbank vermeiden wollen aber auf Leistungsmerkmale wie Sortierung und Seitenunterteilung nicht verzichten wollen, so unterstützt Sie extquery.php wo es nur möglich ist. Sie können extquery.php noch alternativ (nach dem ersten Aufruf mit Autor/Titel etc.) mit der Such-ID aufrufen, dabei haben Sie die Möglichkeit die Ergebnisse zu sortieren und nach Buchtiteln einzuschränken.

https://www.eurobuch.de/extreq/meta/extquery.php?platform=<Ihr Username>
&password=<Ihr Passwort>&suchid=<Such-ID>&start=<Start>&end=<End>
&order=<Order>&clientip=<Enduser-IP-Adresse>&format=xml
  • Such-ID: Geben Sie hier die zurückgegebene Such-ID an.
  • Start: Geben Sie die Nummer des Buches (von 1 weg nummeriert) an, ab der Sie die Ausgabe im XML oder CSV-Format haben wollen.
  • End: Geben Sie die Nummer des Buches (von 1 weg nummeriert, dieses Buch ist nicht mehr enthalten) bis zu dem Sie die Ausgabe im XML oder CSV-Format haben wollen.
  • Order: Wird nichts angegeben, so wird nach Eintreffreihenfolge sortiert. Andere Werte sind "author", "title" und "price". Dann wird nach den entsprechenden Kriterien Sortiert.
Welche Parameter unterstützt extquery.php?
  • platform: Ihr Benutzername.
  • password: Ihr Passwort.
  • author: Gesuchter Autor (oder Interpret).
  • title: Gesuchter Titel.
  • search: Volltextsuche.
  • isbn: ISBN- oder EAN-Nummer.
  • mediatype: 0 für Bühcher, 1 für Musik.
  • suchid: Geben Sie hier die zurückgegebene Such-ID an.
  • start: Geben Sie die Nummer des Buches (von 1 weg nummeriert) an, ab der Sie die Ausgabe im XML oder CSV-Format haben wollen.
  • end: Geben Sie die Nummer des Buches (von 1 weg nummeriert, dieses Buch ist nicht mehr enthalten) bis zu dem Sie die Ausgabe im XML oder CSV-Format haben wollen.
  • order: Wird nichts angegeben, so wird nach Eintreffreihenfolge sortiert. Andere Werte sind "author", "title" und "price". Dann wird nach den entsprechenden Kriterien Sortiert.
  • clientip: Geben Sie hier die IP-Adresse des Anfragenden Endusers an. Wird diese nicht angegeben, so werden keine Suchergebnisse übermittelt. Die Angabe von "-" bewirkt, dass die Adresse des Abfragenden Computers und die des Enduser-Computers ident sind. Bedenken Sie aber das zur Abwehr von Lawinenartigen Suchanfragen die Client-IP-Adresse ausschlaggebend ist. Wird hier immer die Ihres Servers angenommen, so resultiert dies in einer relativ geringen Anzahl von möglichen Anfragen an Eurobuch.de. Teilen Sie uns daher immer die Enduser-IP-Adresse mit.
  • format: xml für XML-Format im ISO-8859-1 Zeichensatz, xml8 für XML-Format im UTF-8 Zeichensatz, csv für CSV-Format (ISO-8859-1 Zeichensatz).
Beispielprogramm

Das Beispielprogramm besteht aus zwei PHP Files, dem Formular (search.php) und der Ergebnisseite (result.php). Testweise können Sie das Formular hier aufrufen. Der Quellcode steht zum Download in einem ZIP-Archiv (3KB) zur Verfügung.

Das Beispielprogramm kommt ohne Datenbank aus und unterstützt die Eingabe aller Suchkritierien sowie die Seitenweise Ausgabe der Ergebnisse und die Sortierung nach diversen Sortierkriterien.

Asynchrone Übermittlung

Wir schicken die Ergebnisse, sobald wir sie von den Buchplattformen erhalten. D.h. es kann sein dass Sie eine reihe von Ergebnissen erhalten, dann einige Zeit keine mehr (weil keine Plattform Ergebnisse liefert) und dann wieder welche oder eben bis zum Schluss keine mehr. Daher würde es von ihrer Seite her Sinn machen, die Ergebnisse mit einem Prozess in die Datenbank zu schreiben und mit einem anderen auszulesen oder zumindest eine Warteanzeige zu machen. Dies können Sie auch leicht umsetzen, indem Sie das schreiben der Ergebnisse in einem sehr kleinen HTML-FRAME oder IFRAME durchführen, und das anzeigen in einem anderen Frame.

Bitte beachten Sie auch, dass durch diese Asychrone Übermittlung die Ergebnisse auf Ihrer Webseite schon dargestellt werden sollten, wenn Sie sie erhalten, d.h. sofort. Dabei müssen sie folgende Dinge beachten:

  • Der XML-Parser muss die Ergebnisse entweder in eine Datenbank schreiben oder sofort ausgeben.
  • Ausgaben müssen mit einem flush(); (in PHP, andere Programmiersprachen haben etwas vergleichbares) abeschlossen werden, damit diese sofort zum Client-Browser übertragen werden
  • Tabellen werden von den meisten Browsern erst gerendert (dargestellt), wenn die Tabelle per </table> abgeschlossen ist. D.h. Wenn ein Buch in einer Tabellenzeile dargestelltw wird macht es Sinn für jede Tabellenzeile (also pro Buch) eine eigene Tabelle zu machen und diese Tabelle abzuschliessen.
Referenzimplementierungen

Technische Anfragen richten Sie bitte an db.dev@eurobuch.de.