Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]google books api
Forum PHP.pl > Forum > Przedszkole
terrence
Witam,
problem jest taki..

Posiadam listę paru numerów EAN/ISBN, do których chciałbym przypisać tytuły wraz z autorami.
Wymyśliłem sobie, że wykorzystam do tego Google Books... niestety...
szukam już od jakiegoś czasu i nie znalazłem nic konkretnego co mogło by mnie zainteresować.

Obecnie plan mam taki aby za pomocą linka
https://www.googleapis.com/books/v1/volumes...n:9788375790252
dobrać się do interesujących mnie danych. niestety nie bardzo wiem jak to ugryźć.

Ktoś pomoże i nakieruje mnie trochę ?
ber32
Może to
google książki

wpisujesz np "isbn:9788375790252" i masz co potrzeba
terrence
No tyle to wiem wink.gif
tylko chodzi o to, że tych EANów mam dobrze ponad 1tyś wink.gif
bedzie nieco czasochłonne każdy z kolei ręcznie wpisywać...

jak do tej pory mam formularz, do którego wpisuje EAN i jako wynik dostaje to co chce..
teraz pozostało mi tylko połączyć to z moją bazą danych żeby z automatu wylistowało wszystkie EANy z autorami

  1. <?php
  2.  
  3. $v = isset($_GET['v']) ? $_GET['v'] : '1';
  4. $key = isset($_GET['key']) ? $_GET['key'] : 'AIzaSyDLhjkHg2KdetBHt6KZcoVDjaBUO-kGW3M';
  5. $ip = isset($_GET['ip']) ? $_GET['ip'] : $_SERVER['REMOTE_ADDR'];
  6. $query = isset($_GET['q']) ? $_GET['q'] : '0307387941';
  7. $params = 'q=isbn:'.urlencode($query).'';
  8.  
  9.  
  10.  
  11. if(isset($_GET['q'])) {
  12.  
  13. $url = 'https://www.googleapis.com/books/v'.$v.'/volumes?key='.$key.'&userIp='.$ip.'&'.$params.'';
  14.  
  15. $request = file_get_contents($url);
  16. $data = json_decode($request,true);
  17. $totalItems = $data['totalItems'];
  18.  
  19. if ($totalItems > 0) {
  20.  
  21. echo '<center>
  22. <form id="searchForm" name="searchForm" action="'.basename(__FILE__).'" method="get">
  23. <fieldset id="searchBox">
  24. <label>ISBN:</label>
  25. <input class="text" id="q" name="q" type="text" value="" placeholder="Podaj ISBN lub EAN" />
  26. <input class="submit" id="submit" name="submit" type="submit" value="Szukaj" />
  27. </fieldset>
  28. </form>
  29. </center>';
  30.  
  31. foreach ($data['items'] as $item) {
  32. echo $_GET['q'].' - '.$item['volumeInfo']['authors'][0].' - '.$item['volumeInfo']['title'];
  33. }
  34. } else {
  35. echo 'Brak Wyników';
  36. }
  37.  
  38. } else {
  39.  
  40. echo '<center>
  41. <form id="searchForm" name="searchForm" action="'.basename(__FILE__).'" method="get">
  42. <fieldset id="searchBox">
  43. <label>ISBN:</label>
  44. <input class="text" id="q" name="q" type="text" value="" placeholder="Podaj ISBN lub EAN" />
  45. <input id="type" name="type" type="hidden" value="isbn">
  46. <input class="submit" id="submit" name="submit" type="submit" value="Szukaj" />
  47. </fieldset>
  48. </form>
  49. </center>';
  50. }
  51.  
  52. ?>


jak ktoś ma jakieś propozycje to jestem otwarty wink.gif
pozdr.
Michael2318
To co podałeś, czyli: https://www.googleapis.com/books/v1/volumes...n:9788375790252
+file_get_contents + wyrażenia regularne i tyle smile.gif
ber32
zobacz co to wyświetla

  1. $request = file_get_contents($url);
  2. $data = json_decode($request,true);
  3. $totalItems = $data['totalItems'];
  4. echo $data['items'];
  5. print_r($data['items']);
  6. echo $data['authors'];

terrence
hmm no i zonk... 2 sprawy..
pierwsza raczej błącha ale trzeźwo już nie myśle...
jak pominąć wyświetlanie tytułu $item['volumeInfo']['title'].'
lub autora .$item['volumeInfo']['authors'][0].
w sytuacji kiedy nie są podani ?

if (!isset($item['volumeInfo']['title']) ) { $item['volumeInfo']['title'] = 'BRAK TYTUŁU'; } ?

niestety nie mam jak sprawdzić, gdyż pojawia się drugi problem..

[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in ....

Domyślam się ze jakieś zabezpieczenie anty-botowe... pewnie nie da się tego jakoś łatwo obejść ?

  1. while ($arrRow = mysql_fetch_array($objRst))
  2. { $i++;
  3.  
  4.  
  5. $url = 'https://www.googleapis.com/books/v1/volumes?q=isbn:'.$arrRow['EAN'].'';
  6.  
  7. $request = file_get_contents($url);
  8. $data = json_decode($request,true);
  9. $totalItems = $data['totalItems'];
  10.  
  11. if ($totalItems > 0) {
  12.  
  13. foreach ($data['items'] as $item) {
  14. echo $i.' - '.$arrRow['SYM'].' - '.$arrRow['EAN'].' - '.$item['volumeInfo']['authors'][0].' - '.$item['volumeInfo']['title'].'</br>';
  15. }
  16. } else {
  17. echo $i.' - '.$arrRow['SYM'].' - '.$arrRow['EAN'].' - BRAK WYNIKÓW</br>';
  18. }
  19.  
  20.  
  21.  
  22. }


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.