谷歌图书API通过ISBN检索 [英] Google books API searching by ISBN

查看:901
本文介绍了谷歌图书API通过ISBN检索的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找出如何通过国际标准书号使用谷歌图书API搜索一本书。我需要写一个程序,对于一个ISBN检索,然后打印出标题,作者和编辑。我试着用列表volumesList = books.volumes.list(); 但是这并没有让我通过ISBN进行搜索,我没有看到一个方法来获取信息我需要(当ISBN被放置在它没有结果)。我现在所拥有的是:

  JsonFactory jsonFactory =新JacksonFactory();
    最终书籍书=新的图书(新NetHttpTransport(),jsonFactory);
    列表volumesList = books.volumes.list(9780262140874);    volumesList.setMaxResults((长)2);    volumesList.setFilter(电子书);
    尝试
    {
        卷册= volumesList.execute();
        对于(卷volume:volumes.getItems())
        {
            VolumeVolumeInfo volumeInfomation = volume.getVolumeInfo();
            的System.out.println(标题:+ volumeInfomation.getTitle());
            的System.out.println(ID:+ volume.getId());
            的System.out.println(作者:+ volumeInfomation.getAuthors());
            的System.out.println(发布日期:+ volumeInfomation.getPublishedDate());
            的System.out.println();
        }    }赶上(例外前){
        // TODO自动生成catch块
        的System.out.println(剪掉wrork+ ex.toString());
    }

如果任何人有关于如何使这种更有效的让我知道的任何建议。
新的code:

 字符串titleBook =;    ////////////////////////////////////////////////
    尝试
    {
        BooksService booksService =新BooksService(UAH);
        字符串ISBN =9780262140874
        网址URL =新的URL(http://www.google.com/books/feeds/volumes/?q=ISBN%3C+ ISBN +%3E);
        VolumeQuery volumeQuery =新VolumeQuery(URL);
        VolumeFeed volumeFeed = booksService.query(volumeQuery,VolumeFeed.class);
        VolumeEntry的BookInfo = volumeFeed.getEntries()得到(0);        的System.out.println(标题:+ bookInfo.getTitles()得到(0));
        的System.out.println(ID:+ bookInfo.getId());
        的System.out.println(作者:+ bookInfo.getAuthors());
        的System.out.println(版本:+ bookInfo.getVersionId());
        的System.out.println(描述:+ bookInfo.getDescriptions()+\\ n);
        。titleBook = bookInfo.getTitles()得到(0)的ToString();
        titleBook =(字符串)titleBook.subSequence(titleBook.indexOf(=),titleBook.length() - 1);
    }赶上(例外前){的System.out.println(ex.getMessage());}
    /////////////////////////////////////////////////
    JsonFactory jsonFactory =新JacksonFactory();
    最终书籍书=新的图书(新NetHttpTransport(),jsonFactory);
    清单volumesList = books.volumes.list(titleBook);
    尝试
    {
        卷册= volumesList.execute();
        卷bookInfomation = volumes.getItems()得到(0);        VolumeVolumeInfo volumeInfomation = bookInfomation.getVolumeInfo();
        的System.out.println(标题:+ volumeInfomation.getTitle());
        的System.out.println(ID:+ bookInfomation.getId());
        的System.out.println(作者:+ volumeInfomation.getAuthors());
        的System.out.println(发布日期:+ volumeInfomation.getPublishedDate());
        的System.out.println();    }赶上(例外前){
        的System.out.println(剪掉wrork+ ex.toString());
    }


解决方案

您使用的德precated数据API

使用书籍API V1 (从实验室),你可以使用查询

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

例如:

<一个href=\"https://www.googleapis.com/books/v1/volumes?q=isbn:0735619670\">https://www.googleapis.com/books/v1/volumes?q=isbn:0735619670

其ISBN来查询一本书。

您可能想看看谷歌的例子code:<一href=\"http://$c$c.google.com/p/google-api-java-client/source/browse/books-cmdline-sample/src/main/java/com/google/api/services/samples/books/cmdline/BooksSample.java?repo=samples\">BooksSample.java

I am trying to figure out how to search for a book by ISBN using the Google Books API. I need to write a program that searches for an ISBN then prints out the title, author, and edition. I tried using List volumesList = books.volumes.list(""); but that did not allow me to search by ISBN and I did not see a way to get the information I needed(when an ISBN was placed in it had no results) . What I have right now is:

    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());
    }

If anyone has any suggestions about how to make this more efficient let me know. New Code:

    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());
    }

解决方案

Are you using the deprecated data API?

With Books API v1 (from Labs) you could use the query

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

for example

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

to query a book by its ISBN.

You may want to look at Googles example code: BooksSample.java

这篇关于谷歌图书API通过ISBN检索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆