• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

ISBN Datenbank gesucht (wenn möglich kostenlos)

Status
Für weitere Antworten geschlossen.
S

sysop

Guest
Ich würde eine Datenbank brauchen, die ISBN-Nummern auswertet und entsprechende Infos zum Buch (Autor, Titel, Verlag etc) zur Verfügung stellt.
Derzeit parse ich mit einem Quick' n Dirty-Script die Informationen von amazon, aber Dauerlösung ist das keine.

Kennt jemand eine Online-Datenbank, die man abfragen darf?
 
Werbung:
Werbung:
Hallo, Danke für die Rückmeldungen.

Die Nationalbibliothek kennt leider eine Vielzahl an ISBN-Nummern nicht, buecher-nach-isbn leider noch weniger.
Mit der API von amazon habe ich noch nicht herumgespielt, ist aber ein Ansatz, danke. Mal sehen, was die wirklich liefern.

Interessant, dass International ISBN Agency da nichts bietet...

PS Nachtrag:
[h=2]SearchIndex: Books[/h]


In an ItemSearch request, when the SearchIndex parameter equals "VALUE", only the following parameters can be used in the request.

  • Author
  • BrowseNode
  • Condition
  • Count


  • ItemPage
  • Keywords
  • MaximumPrice
  • MinimumPrice


  • Power
  • Publisher
  • Sort
  • Title



[h=2][/h]
 
Werbung:
Du könntest Informationen aus mehreren Quellen beziehen. Wenn die primäre Datenbank keine Ergebnisse liefert auf andere zurückgreifen. Ist natürlich mehr Aufwand aber ein Ansatz.
 
Werbung:
Quic and dirty, aber bitte....

PHP:
<?PHP
session_start();
// sucht daten zu einer ISBN-Nummer bei amazon heraus

unset($_SESSION['seiten']);
unset($_SESSION['verlag']);
unset($_SESSION['sprache']);
unset($_SESSION['isbn10']);
unset($_SESSION['isbn13']);
unset($_SESSION['original_titel']);
unset($_SESSION['groesse']);
unset($_SESSION['titel']);
unset($_SESSION['bildlink']);
unset($_SESSION['autor']);


function unicode_to_Utf8($string)
{
      $string = str_replace('%C4', '%C3%84', $string);
      $string = str_replace('%D6', '%C3%96', $string);
      $string = str_replace('%DC', '%C3%9C', $string);
      $string = str_replace('%E4', '%C3%A4', $string);
      $string = str_replace('%F6', '%C3%B6', $string);
      $string = str_replace('%FC', '%C3%BC', $string);
      return $string;
}

function parse_infopage($isbn="")
{
    global $bildchen;

    // Bindestriche entfernen
    $isbn = str_replace('-','',$isbn);
    $such_url = 'http://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C5M%C5Z%D5%D1&url=search-alias%3Dstripbooks&field-keywords='.$isbn.'&x=0&y=0';
    $info = file_get_contents($such_url);

    $werte = explode('result_0',$info);
    $ergebnis_a = explode('<div class="image">',$werte[1]);
    $ergebnis_b = explode('<img onload=',$ergebnis_a[1]);
    $ergebnis_c = explode('<a href="',$ergebnis_b[0]);
    $ergebnis = str_replace('">','',$ergebnis_c[1]);

    $m = explode('src=',$ergebnis_a[1]);
    $bild = explode('"',$m[1]);

    if(isset($bild[1]) and (trim($bild[1]) != ""))
    {
        $bildchen = '<img src="'.trim($bild[1]).'" style="width:150px; border:1px solid silver;">';
    }
    else
    {
        $bildchen = "";
    }

    return trim($ergebnis);
}

//<span class="contributorChevron"

function parse_ergebnispage($url="")
{
    global $buchtitel,$autor;

    $info = file_get_contents($url);
    $werte = explode('Produktinformation',$info);

    // autor extrahieren
    $au_tor = explode('<span class="contributorChevron"',$werte[0]);
    $tor = explode('class="parseasinTitle"',$au_tor[0]);
    $tor = explode('</a>',$tor[1]);
    $au_tor = explode('<a href',$tor[0]);
    $tor = explode('>',$au_tor[1]);
    $autor = utf8_encode(trim($tor[1]));

    // Buchtitel heraussuchen
    $buch_titel = explode('<meta name="description" content="',$werte[0]);
    $btitel = explode(':',$buch_titel[1]);
    $buchtitel = utf8_encode($btitel[0]);
//    $autor = utf8_encode($btitel[1]);

    // Buchinformationen heraussuchen
    $ergebnis_a = explode('Durchschnittliche Kundenbewertung', $werte[1]);
    $bla = strip_tags($ergebnis_a[0]);

    // den ganzen Mist entfernen
    for($i = 1; $i < 10; $i++)
    {
        $bla = str_replace("\n\n","\n",$bla);
    }

    $bname = explode('/',$url);
    $bla = $bname[3].$bla;
    $bla = explode("\n",$bla);

    for($f = 0; $f < count($bla); $f++)
    {
        if(trim($bla[$f]) == "") continue;
        $bla[$f] = trim($bla[$f]);
        $bla[$f] = str_replace('&nbsp;','',$bla[$f]);
        $infos[] = urldecode(unicode_to_Utf8($bla[$f]));
    }

    return $infos;
}

function make_data($text)
{
    $m = explode(':',trim($text));
    $m = array_pad($m,2,"");

    if(stristr($m[1],"seiten") == TRUE)
    {
        $b = explode(" ",$m[1]);
        $_SESSION['seiten'] = trim($b[1]);
    }

    if(stristr($m[0],"verlag") == TRUE)
    {
        $_SESSION['verlag'] = trim($m[1]);
    }

    if(stristr($m[0],"sprache") == TRUE)
    {
        $_SESSION['sprache'] = trim($m[1]);
    }

    if(stristr($m[0],"isbn-10") == TRUE)
    {
        $_SESSION['isbn10'] = trim($m[1]);
    }

    if(stristr($m[0],"isbn-13") == TRUE)
    {
        $_SESSION['isbn13'] = trim($m[1]);
    }
    if(stristr($m[0],"originaltitel") == TRUE)
    {
        $_SESSION['original_titel'] = trim($m[1]);
    }

    if(stristr($m[0],"cm") == TRUE)
    {
        $_SESSION['groesse'] = trim($m[0]);
    }
}

if(isset($_GET['isbnnummer']) and ($_GET['isbnnummer'] != ""))
{
    $link = parse_infopage($_GET['isbnnummer']);

    if($link != "")
    {
        $inhalt = parse_ergebnispage($link);

        if(count($inhalt) > 1)
        {

            $_SESSION['titel'] = $buchtitel;
            $_SESSION['autor'] = $autor;
            $_SESSION['bildlink'] = htmlspecialchars($bildchen);


            for($i = 0; $i < count($inhalt); $i++)
            {
                $data = make_data(utf8_encode(trim($inhalt[$i])));
            }
        }
    }

    if($_GET['show'] == 1)
    {
        echo "<br><br><pre>";
        print_r($inhalt);
        echo "<br><br>";
        echo '$_SESSION'."<br>";
        print_r($_SESSION);
        echo "</pre>";
    }

    if($_GET['show'] == 2)
    {
        echo "<pre>";

        $keys = array_keys($_SESSION);

        for($i = 0; $i < count($_SESSION); $i++)
        {
            echo $keys[$i].":".$_SESSION[$keys[$i]]."<br>";
        }
        echo "</pre>";
    }

}

else
{
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <link rel="Shortcut Icon" href="http://www.mn-portal.at/mnlogo.jpg">
      <title><?PHP echo $config['header']; ?></title>
    </head>
    <body>
    <form method="POST" action="<?=$_SERVER['PHP_SELF']?>">
    <input type="text" name="isbn">
    <input type="submit" name="submit" value="suchen">
    </form>
    <?PHP

    echo "<div>\n";
    if(isset($_POST['isbn']) and ($_POST['isbn'] != ""))
    {

        $link = parse_infopage($_POST['isbn']);

        if($link != "")
        {
            $inhalt = parse_ergebnispage($link);
        }

        if(count($inhalt) > 1)
        {
            $_SESSION['titel'] = $buchtitel;
            $_SESSION['autor'] = $autor;
            $_SESSION['bildlink'] = htmlspecialchars($bildchen);

            echo "<div style=\"float:left; width:160px\">".htmlspecialchars_decode($_SESSION['bildlink'])."</div>\n";

            echo "<div style=\"margin-top:30px;\">\n<pre>\n";
            echo "Titel: ".$buchtitel."<br>";
            echo "Autor: ".$autor."<br>\n";

            for($i = 1; $i < count($inhalt); $i++)
            {
                $info = explode(':',$inhalt[$i]);
                $info = array_pad($info,2,"");
                if(trim($info[1]) == "")
                {
                    if(stristr($info[0],'gewicht') == TRUE) continue;
                    echo utf8_encode(trim($info[0]))."<br>";
                }
                else
                {
                    echo $info[0]." :".utf8_encode(trim($info[1]))."<br>";
                }

            }

            echo "</pre>\n</div>\n";
            // als Datenbestand aufarbeiten
            for($i = 1; $i < count($inhalt); $i++)
            {
                $data = make_data(utf8_encode(trim($inhalt[$i])));
            }
        }
        else
        {
            echo "Kein Ergebnis";
        }
        echo "</div>\n</body>\n</html>";
    }
}
 
Danke für die Hilfe. Schon etwas älter, aber leider hat Amazon die API umgestellt und mein Code funktioniert nicht mehr. Um zu überprüfen, ob es ein Buch gibt rufe ich per REST einfach die Seite http://www.isbn-buchsuche.de/ auf. Wenn eine Fehlermeldung zurück kommt, weiß ich dass das Buch nicht existiert.
Zum Beispiel wenn ich die ISBN 9783406671234 überprüfen möchte, dann rufe ich http://www.isbn-buchsuche.de/isbn/9783406671234/ auf. Die ISBN-Nummer kann einfach ersetzt werden.
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben