www online isbndb google docs developer books book java api isbn google-books

java - online - isbn api



Búsqueda de API en Google books por ISBN (2)

¿Está utilizando la API de datos en desuso ?

Con Books API v1 (de Labs) puede usar la consulta

https://www.googleapis.com/books/v1/volumes?q=isbn:<your_isbn_here>

por ejemplo

https://www.googleapis.com/books/v1/volumes?q=isbn:0735619670

Para consultar un libro por su ISBN.

Es posible que desee ver el código de ejemplo de BooksSample.java : BooksSample.java

Estoy tratando de averiguar cómo buscar un libro por ISBN utilizando la API de Google Books. Necesito escribir un programa que busque un ISBN y luego imprima el título, el autor y la edición. Intenté usar List volumesList = books.volumes.list(""); pero eso no me permitió buscar por ISBN y no vi una manera de obtener la información que necesitaba (cuando se colocó un ISBN no tenía resultados). Lo que tengo ahora es:

JsonFactory jsonFactory = new JacksonFactory(); final Books books = new Books(new NetHttpTransport(), jsonFactory); List volumesList = books.volumes.list("9780262140874"); volumesList.setMaxResults((long) 2); volumesList.setFilter("ebooks"); try { Volumes volumes = volumesList.execute(); for (Volume volume : volumes.getItems()) { VolumeVolumeInfo volumeInfomation = volume.getVolumeInfo(); System.out.println("Title: " + volumeInfomation.getTitle()); System.out.println("Id: " + volume.getId()); System.out.println("Authors: " + volumeInfomation.getAuthors()); System.out.println("date published: " + volumeInfomation.getPublishedDate()); System.out.println(); } } catch (Exception ex) { // TODO Auto-generated catch block System.out.println("didnt wrork "+ex.toString()); }

Si alguien tiene alguna sugerencia sobre cómo hacer esto más eficiente, hágamelo saber. Nuevo código:

String titleBook=""; //////////////////////////////////////////////// try { BooksService booksService = new BooksService("UAH"); String isbn = "9780262140874"; URL url = new URL("http://www.google.com/books/feeds/volumes/?q=ISBN%3C" + isbn + "%3E"); VolumeQuery volumeQuery = new VolumeQuery(url); VolumeFeed volumeFeed = booksService.query(volumeQuery, VolumeFeed.class); VolumeEntry bookInfo=volumeFeed.getEntries().get(0); System.out.println("Title: " + bookInfo.getTitles().get(0)); System.out.println("Id: " + bookInfo.getId()); System.out.println("Authors: " + bookInfo.getAuthors()); System.out.println("Version: " + bookInfo.getVersionId()); System.out.println("Description: "+bookInfo.getDescriptions()+"/n"); titleBook= bookInfo.getTitles().get(0).toString(); titleBook=(String) titleBook.subSequence(titleBook.indexOf("="), titleBook.length()-1); }catch(Exception ex){System.out.println(ex.getMessage());} ///////////////////////////////////////////////// JsonFactory jsonFactory = new JacksonFactory(); final Books books = new Books(new NetHttpTransport(), jsonFactory); List volumesList = books.volumes.list(titleBook); try { Volumes volumes = volumesList.execute(); Volume bookInfomation= volumes.getItems().get(0); VolumeVolumeInfo volumeInfomation = bookInfomation.getVolumeInfo(); System.out.println("Title: " + volumeInfomation.getTitle()); System.out.println("Id: " + bookInfomation.getId()); System.out.println("Authors: " + volumeInfomation.getAuthors()); System.out.println("date published: " + volumeInfomation.getPublishedDate()); System.out.println(); } catch (Exception ex) { System.out.println("didnt wrork "+ex.toString()); }


¿No puedes intentar esto como se dice en la guía para desarrolladores? ¿ Si entendí tu tarea? Puedes hacer así:

BooksService booksService = new BooksService("myCompany-myApp-1"); myService.setUserCredentials("[email protected]", "secretPassword"); String isbn = "9780552152679"; URL url = new URL("http://www.google.com/books/feeds/volumes/?q=ISBN%3C" + isbn + "%3E"); VolumeQuery volumeQuery = new VolumeQuery(url); VolumeFeed volumeFeed = booksService.query(volumeQuery, VolumeFeed.class); // using an ISBN in query gives only one entry in VolumeFeed List<VolumeEntry> volumeEntries = volumeFeed.getEntries(); VolumeEntry entry = volumeEntries.get(0);

Ahora, utilizando la api VolumeEntry busque el getXXXX deseado () y utilícelo en su código. Espero que le ayude a resolver su problema.