Ссылки на отдельные издания в Google Книгах

Requesting a specific entry

The following code lets you request the specific entry that you inserted in the previous example.

In the context of this series of examples, retrieving that entry isn’t really necessary, because Calendar already returned the inserted entry; but the same technique can be applied whenever you know the URL for an entry.

FeedQuery singleQuery = new FeedQuery();
singleQuery.Uri = new Uri(newEntry.SelfUri.ToString()); 
AtomFeed newFeed = service.Query(singleQuery);
AtomEntry retrievedEntry = newFeed.Entries;

The inserted entry has a property, , that returns an object that, using its method, can be used to create a new URI object.

Then we just have to call the service’s method to get a new AtomFeed object, with just one entry in its Entries collection.

The above code is equivalent to sending to Calendar, with proper authentication.

Using your own client code

Generally we recommend using our client libraries to access Cloud APIs. However, if you are an experienced developer and our client libraries don’t meet your specific needs, you can write your own custom code to access the service’s lower-level service APIs directly.

REST/HTTP APIs

All Cloud APIs expose a simple traditional JSON/REST interface. If you need to write your own custom code to directly access the REST API using a third-party HTTP client library of your choice, you can find out more about how Cloud APIs work with different HTTP versions and implementations in our HTTP Guidelines.

gRPC APIs

gRPC is a language-neutral, platform-neutral, open source, remote procedure call (RPC) system initially developed at Google: you can find out much more about it at grpc.io. gRPC-enabled Cloud APIs generally have both REST and RPC interfaces, so rather than just using JSON over HTTP to talk to the REST interface, gRPC-enabled API clients can also use protocol buffers and gRPC over HTTP2 to talk to the RPC interface. You can find out if an API is gRPC-enabled by checking its APIs and Reference section.

If a Cloud API is gRPC-enabled, you can generate your own gRPC client libraries for it in any gRPC-supported language. To do this, you’ll need the API’s protocol buffers service definition (typically available from our repository on GitHub). You can then follow the instructions for your preferred language on grpc.io to generate and use your client.

If you don’t want to generate your own gRPC code, you can still benefit from gRPC: a growing number of Cloud Client Libraries for gRPC-enabled APIs use gRPC “under the hood” to communicate with Google’s servers. This is significantly more efficient in terms of throughput and CPU usage — accessing an API using gRPC can increase throughput per CPU by as much as a factor of 10 compared to the JSON REST API. We plan to upgrade as many Cloud Client Libraries as possible to gRPC; in the meantime, you’ll still get all the other advantages of our client library code.

Books API background

Books concepts

Google Books is built upon four basic concepts:

  • Volume: A volume represents the data that Google Books hosts about
    a book or magazine. It is the primary resource in the Books API. All other
    resources in this API either contain or annotate a volume.
  • Bookshelf: A bookshelf is a collection of volumes. Google Books
    provides a set of predefined bookshelves for each user, some of which are
    completely managed by the user, some of which are automatically filled in
    based on user’s activity, and some of which are mixed. Users can create,
    modify or delete other bookshelves, which are always filled with volumes
    manually. Bookshelves can be made private or public by the user.

    Note: Creating and deleting bookshelves as
    well as modifying privacy settings on bookshelves can currently only be done
    through the Google Books site.

  • Review: A review of a volume is a combination of a star rating
    and/or text. A user can submit one review per volume. Reviews are also
    available from outside sources and are attributed appropriately.
  • Reading Position: A reading position indicates the last read
    position in a volume for a user. A user can only have one reading position per
    volume. If the user has not opened that volume before, then the reading
    position does not exist. The reading position can store detailed position
    information down to the resolution of a word. This information is always
    private to the user.

Books API data model

A resource is an individual data entity with a unique identifier. The Books
API operates on two types of resources, based on the concepts described
above:

  • Volume resource: Represents a volume.
  • Bookshelf resource: Represents a single bookshelf for a
    particular user.

The Books API data model is based on groups of resources, called collections:

Volume collection
The volume collection, is a collection
of every volume resource managed by Google Books.
As such, you cannot list all volume resources,
but you can list all volumes that match a set of
search terms.
Bookshelf collection
A bookshelf collection consists of all
the bookshelf resources managed by Google Books.
Bookshelves must always be referenced in the context of a specific user’s library.
Bookshelves can contain zero or more volumes.

Google provides a set of pre-defined bookshelves for each user:

  • Favorites: Mutable bookshelf.
  • Purchased: Populated with volumes the user has purchased. The user cannot
    manually add or remove volumes.
  • To Read: Mutable bookshelf.
  • Reading Now: Mutable bookshelf.
  • Have Read: Mutable bookshelf.
  • Reviewed: Populated with volumes the user has reviewed. The user cannot
    manually add or remove volumes.
  • Recently Viewed: Populated with volumes the user has recently opened in
    a web reader. The user cannot manually add volumes.
  • My eBooks: Mutable bookshelf. Purchased books are automatically added,
    but can be manually removed.
  • Books For You: Populated with personalized volume recommendations. If
    we have no recommendations for the user, this bookshelf does not exist.

Example bookshelves:

  • «Favorites»

    «Harry Potter»

  • «My eBooks»
    • «Switch»
    • «Twilight»
    • «The Girl with the Dragon Tattoo»

Books API operations

You can invoke five different methods on collections and resources in the
Books API, as described in the following table.

Operation Description REST HTTP mappings
list Lists a specified subset of resources within a collection. on a collection URI.
insert Inserts a new resource into a collection (creating a new resource). on a collection URI, where you pass in data for a new resource.
get Gets a specific resource. on resource URI.
update Updates a specific resource. on resource URI, where you pass in data for the updated resource.
delete Deletes a specific resource. on resource URI, where you pass in data for the resource to be deleted.

The operations that are supported for the various types of resources are
summarized in the table below. Operations that apply to a user’s private data are
called «My Library» operations, and they all require .

list insert get update delete
Volumes yes* yes
Bookshelves yes* yes, AUTHENTICATED yes* yes, AUTHENTICATED yes, AUTHENTICATED
Reading Positions yes, AUTHENTICATED yes, AUTHENTICATED yes, AUTHENTICATED yes, AUTHENTICATED

*Both AUTHENTICATED and
unauthenticated versions of these operations are available, where the
authenticated requests operate on the user’s private «My Library» data, and
unauthenticated requests operate on public data only.

Примечания

  1. Leonid Taycher. . Блог Google Books Search (5 августа 2010). Дата обращения 3 мая 2017.
  2. James Somers. . The Atlantic (20 апреля 2017). Дата обращения 30 апреля 2017. Перевод: Вячеслав Голованов. (22 мая 2017). Дата обращения 23 мая 2017.
  3. . «Газета.Ru» (15.11.2013). Дата обращения 14 ноября 2013.
  4. . scribd.com (14.11.2013). — «The fair use analysis forth above with respect to Google Books applies here as well to the libraries use of their scans, and if there is no liability for copyright infringement on the libraries part, there can be no liability on Google’s part». Дата обращения 14 ноября 2013.

Updating an item

To update an existing item, use the following code. In the following example, we’re changing the previously retrieved entry’s title from its old text («Tennis with Beth») to «Important meeting.»

retrievedEntry.Title.Text = "Important meeting";
retrievedEntry.Update();

First we set a new title for the entry we fetched earlier. Then we just call the method to send the updated entry to the service.

The service returns the updated entry, including a new URL for this entry’s new version. (For more information on entry versions, see the section of the v1 protocol reference document.)

The above code is roughly equivalent to sending to the service, along with the new entry (in Atom format) to replace the original entry.

Before you start

Get a Google account

You need a Google account
for testing purposes. If you already have a test account, then you’re all set;
you can visit the Google Books user
interface to set up, edit, or view your test data.

Get familiar with Books

If you’re unfamiliar with Google Books concepts, you should read this
document and experiment with the user interface
before starting to code. This document assumes that you’re familiar with web
programming concepts and web data formats.

Learn about authorizing requests and identifying your application

When your application requests private data, the request must be authorized by an authenticated user who has access to that data.

In particular, all operations under «My Library» in the Google Books API are considered to be private and require authentication and authorization. In addition, any operation that modifies Google Books data can be performed only by the user who owns that data.

When your application requests public data, the request doesn’t need to authorized, but does need to be accompanied by an identifier, such as an API key.

For information about how to authorize requests and use API keys, see in the Using the API document.

Google Cloud Client Libraries

Google Cloud Client Libraries use our latest client library model and are our recommended option for accessing Cloud APIs programmatically, where available. Cloud Client Libraries:

  • Provide idiomatic, generated or hand-written code in each language, making the Cloud API simple and intuitive to use.
  • Handle all the low-level details of communication with the server, including authenticating with Google.
  • Can be installed using familiar package management tools such as and .
  • In some cases, give you performance benefits by using gRPC. You can find out more in the section below.

You can find installation instructions and reference material for the appropriate Cloud Client Library on your chosen Cloud API’s Client Libraries page.

For almost all our supported languages, you can also download a single client library that provides an interface to all supported Cloud APIs. You can find links to get started with these and their reference documentation on our Cloud Client Libraries page.

Available samples

To view all the samples that are available for the Google API Client Library
for Java,
browse through the
samples on GitHub.
Each sample has an instructions.html file that explains how to set up and use
the sample. (To more easily view the instructions in a browser, visit
http://htmlpreview.github.io/ and paste the URL
of the HTML file into the text box.)

We welcome contributions for samples for other APIs, as described in our guide to
becoming a contributor.

If you would like to request a sample for other APIs that are not listed here,
post your request on StackOverflow with an API-specific
tag, or see for more information.

Google sample

A complete Google+ example is given in the plus-cmdline-sample sample.

The following code snippet shows a short example of how to use the client
library with the Google+ API.

...

String APPLICATION_NAME = "PlusSample";
java.io.File DATA_STORE_DIR =
      new java.io.File(System.getProperty("user.home"), ".store/plus_sample");
FileDataStoreFactory dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);

// Set up the HTTP transport and JSON factory
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

// Load client secrets
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory,
    new InputStreamReader(PlusSample.class.getResourceAsStream("/client_secrets.json")));

// Set up authorization code flow
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
    httpTransport, jsonFactory, clientSecrets,
    Collections.singleton(PlusScopes.PLUS_ME)).setDataStoreFactory(dataStoreFactory)
    .build();

// Authorize
Credential credential =
    new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");

// Set up the main Google+ class
Plus plus = new Plus.Builder(httpTransport, jsonFactory, credential)
    .setApplicationName(APPLICATION_NAME)
    .build();

// Make a request to access your profile and display it to console
Person profile = plus.people().get("me").execute();
System.out.println("ID: " + profile.getId());
System.out.println("Name: " + profile.getDisplayName());
System.out.println("Image URL: " + profile.getImage().getUrl());
System.out.println("Profile URL: " + profile.getUrl());

Google API Client Libraries

A number of Google Cloud APIs do not yet have Google Cloud Client Libraries available in all languages. If you want to use one of these APIs and there is no Cloud Client Library for your preferred language, you can still use an older version of our client libraries called Google API Client Libraries. These libraries:

  • Provide access to the API’s REST interface only; gRPC is not supported.
  • Have autogenerated interface code that may not be as idiomatic as our newer libraries.
  • Handle all the low-level details of communication with the server, including authenticating with Google.
  • Can be installed using familiar package management tools such as and .

You’ll find links to these libraries on the relevant Cloud API’s Client Libraries page, where necessary.

Libraries

To load a hosted library, copy and paste the HTML snippet for that
library (shown below) in your web page. For instance, to load
jQuery, embed the
snippet in your web page.

We recommend that you load libraries from the CDN via HTTPS, even if your
own website only uses HTTP. Nowadays, performance is fast, and caching
works just the same. The CDN’s files are served with

and

headers and allowed to be cached for 1 year.

Dojo

snippet:
site:
dojotoolkit.org
versions:
1.13.0,
1.12.3, 1.12.2, 1.12.1,
1.11.5, 1.11.4, 1.11.3, 1.11.2, 1.11.1,
1.10.9, 1.10.8, 1.10.7, 1.10.6, 1.10.5, 1.10.4, 1.10.3, 1.10.2, 1.10.1, 1.10.0,
1.9.11, 1.9.10, 1.9.9, 1.9.8, 1.9.7, 1.9.6, 1.9.5, 1.9.4, 1.9.3, 1.9.2, 1.9.1, 1.9.0,
1.8.14, 1.8.13, 1.8.12, 1.8.11, 1.8.10, 1.8.9, 1.8.8, 1.8.7, 1.8.6, 1.8.5, 1.8.4, 1.8.3, 1.8.2, 1.8.1, 1.8.0,
1.7.12, 1.7.11, 1.7.10, 1.7.9, 1.7.8, 1.7.7, 1.7.6, 1.7.5, 1.7.4, 1.7.3, 1.7.2, 1.7.1, 1.7.0,
1.6.5, 1.6.4, 1.6.3, 1.6.2, 1.6.1, 1.6.0,
1.5.6, 1.5.5, 1.5.4, 1.5.3, 1.5.2, 1.5.1, 1.5.0,
1.4.8, 1.4.7, 1.4.6, 1.4.5, 1.4.4, 1.4.3, 1.4.1, 1.4.0,
1.3.2, 1.3.1, 1.3.0,
1.2.3, 1.2.0,
1.1.1

jQuery

3.x snippet:
2.x snippet:
1.x snippet:
site:
jquery.com
versions:
3.4.1, 3.4.0, 3.3.1, 3.2.1, 3.2.0, 3.1.1, 3.1.0, 3.0.0,
2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.4, 2.1.3, 2.1.1, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0,
1.12.4, 1.12.3, 1.12.2, 1.12.1, 1.12.0, 1.11.3, 1.11.2, 1.11.1, 1.11.0, 1.10.2, 1.10.1,
1.10.0, 1.9.1, 1.9.0, 1.8.3, 1.8.2, 1.8.1, 1.8.0, 1.7.2, 1.7.1, 1.7.0, 1.6.4, 1.6.3, 1.6.2,
1.6.1, 1.6.0, 1.5.2, 1.5.1, 1.5.0, 1.4.4, 1.4.3, 1.4.2, 1.4.1, 1.4.0, 1.3.2, 1.3.1, 1.3.0,
1.2.6, 1.2.3
note:
3.3.0, 2.1.2, 1.2.5 and 1.2.4 are not hosted due to their short and unstable lives in the wild.

jQuery Mobile

snippet:
site:
jquerymobile.com
versions:
1.4.5, 1.4.4, 1.4.3, 1.4.2, 1.4.1, 1.4.0
note:
This library depends on jQuery. You must also load jQuery before loading this module.

jQuery UI

snippet:
site:
jqueryui.com
versions:
1.12.1, 1.12.0,
1.11.4, 1.11.3, 1.11.2, 1.11.1, 1.11.0, 1.10.4, 1.10.3, 1.10.2,
1.10.1, 1.10.0, 1.9.2, 1.9.1, 1.9.0, 1.8.24, 1.8.23, 1.8.22, 1.8.21,
1.8.20, 1.8.19, 1.8.18, 1.8.17, 1.8.16, 1.8.15, 1.8.14, 1.8.13,
1.8.12, 1.8.11, 1.8.10, 1.8.9, 1.8.8, 1.8.7, 1.8.6, 1.8.5, 1.8.4,
1.8.2, 1.8.1, 1.8.0, 1.7.3, 1.7.2, 1.7.1, 1.7.0, 1.6.0, 1.5.3, 1.5.2
note:
This library depends on jQuery. You must also load jQuery before
loading this module. Version 1.8.3 is not hosted due to its short
life, and the alias actually loads 1.8.4.

MooTools

snippet:
site:
mootools.net
versions:
1.6.0, 1.5.2, 1.5.1, 1.5.0, 1.4.5, 1.4.4, 1.4.3,
1.4.2, 1.4.1, 1.4.0, 1.3.2, 1.3.1, 1.3.0, 1.2.5, 1.2.4,
1.2.3, 1.2.2, 1.2.1, 1.1.2, 1.1.1
note:
For versions 1.5.1 and earlier, the filename of the minified version is called mootools-yui-compressed.js instead of mintools.min.js.

Myanmar Tools

snippet:
site:
https://github.com/googlei18n/myanmar-tools/
recommended versions:
1.1.3
all hosted versions:
1.0.1
1.1.0
1.1.1
1.1.3

script.aculo.us

snippet:
site:
script.aculo.us
versions:
1.9.0, 1.8.3, 1.8.2, 1.8.1
note:
This library depends on . Before loading this module, you must load Prototype.

Shaka Player

snippet:
site:
https://github.com/google/shaka-player/
recommended versions:
2.5.7, 2.4.7
all hosted versions:
2.5.7, 2.5.6, 2.5.5, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.5.0-beta3, 2.5.0-beta2, 2.5.0-beta, 2.4.7, 2.4.6, 2.4.5, 2.4.4, 2.4.3, 2.4.2, 2.4.1, 2.4.0, 2.3.10, 2.3.9, 2.3.8, 2.3.7, 2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.3.1, 2.3.0, 2.2.10, 2.2.9, 2.2.8, 2.2.7, 2.2.6, 2.2.5, 2.2.4, 2.2.1, 2.2.0, 2.1.9, 2.1.8, 2.1.7, 2.1.6, 2.1.5, 2.1.4, 2.1.3, 2.1.2, 2.1.1, 2.1.0, 2.0.9, 2.0.8, 2.0.6, 1.6.5

SPF

snippet:
site:
youtube.github.io/spfjs
versions:
2.4.0, 2.3.2, 2.3.1, 2.3.0, 2.2.0, 2.1.2, 2.1.1, 2.1.0, 2.0.1, 2.0.0

three.js

snippet:
site:
threejs.org
versions:
r84, r83, r82, r81, r80, r79, r78, r77, r76, r75, r74, r73, r72, r71, r70, r69, r68, r67, r49

Web Font Loader

snippet>
site:
github.com/typekit/webfontloader
versions:
1.6.26, 1.6.16, 1.5.18, 1.5.10, 1.5.6, 1.5.3, 1.5.2, 1.5.0

Inserting a new item

To insert an item into a Calendar feed, you might use the following code:

AtomEntry entry = new AtomEntry();
AtomPerson author = new AtomPerson(AtomPersonType.Author);
author.Name = "Jo March"; 
author.Email = "jo@gmail.com";
entry.Authors.Add(author);
entry.Title.Text = "Tennis with Beth"; 
entry.Content.Content = "Meet for a quick lesson.";

Uri postUri = new Uri("http://www.google.com/calendar/feeds/jo@gmail.com/private/full");

// Send the request and receive the response:
AtomEntry insertedEntry = service.Insert(postUri, entry);

After setting the URL, we construct an object.

The entry title is a , a class that holds text in various forms (plain text, HTML, or XHTML). The entry content is represented by an object, a class that can hold either plain text or other forms of content, including XML and binary data.

We’re using the same object that we created in the previous example. In this case, the method to call is , which sends an item to the specified insertion URL.

The service returns the newly created entry, which may contain additional server-generated elements, such as an edit URL for the entry.

The above code is equivalent to sending (with proper authentication) and providing an entry.

Requesting a feed

As described in the Google Calendar Data API documentation, you can request a Calendar feed by sending the following HTTP request to Calendar:

GET http://www.google.com/calendar/feeds/userID/private/full

You also have to provide appropriate authentication. Note that the authentication system we’re using here (known as «Google Authentication for Installed Applications») is appropriate only for use in installed client applications such as desktop clients, not for use in web applications. For more information about authentication, see the Google Account Authentication documentation.

// Create a query and service object:

FeedQuery query = new FeedQuery();
Service service = new Service("cl", "exampleCo-exampleApp-1"));
// Set your credentials:
service.setUserCredentials("jo@gmail.com", "mypassword");

// Create the query object:
query.Uri = new Uri("http://www.google.com/calendar/feeds/jo@gmail.com/private/full");

// Tell the service to query:
AtomFeed calFeed = service.Query(query);

The class represents a client connection (with authentication) to a GData service. The general procedure for sending a query to a service using the client library consists of the following steps:

  1. Obtain or construct the appropriate URL.
  2. If you’re sending data to a service (for example, if you’re inserting a new entry), then transform the raw data into objects using the client library classes. (This step doesn’t apply if you’re just requesting a feed, as we’re doing in this example.)
  3. Create a new instance, setting the service name (such as for Calendar) and your application’s name (in the form ).
  4. Set the appropriate credentials.
  5. Call a method to send the request and receive any results.

The method sets the property with a standard .NET Network credentials object.
The credentials are set to the ID and password of the user on whose behalf your client is sending the query. The examples in this document use the «Authentication for Installed Applications» authentication system; for more information about other authentication systems, see the Google Account Authentication documentation.

To request an entire feed, you call the method, which takes a object and returns the entire feed found at that URL. We’ll show how to send more specific queries later in this document.

Like other methods of the class, handles authentication and redirects as necessary.

Querying by category

Note: Google Calendar doesn’t associate labels with events, so this example doesn’t work with Calendar.

To retrieve a feed consisting of all the entries that match the earlier full-text search and that are in a particular category or have a particular label, use the following code:

AtomCategory myCategory = new AtomCategory("by_jo");
QueryCategory myCategoryFilter = new QueryCategory(myCategory);
myQuery.Categories.Add(myCategoryFilter);
AtomFeed myCategoryResultsFeed = myService.Query(myQuery);

The class, of course, represents a category to be used in a category filter. The class can contain multiple categories, but in this case we’re constructing a filter with only one category.

Then we add that filter to the existing query, which still contains the full-text query string from the previous example.

We again use the method to send the query to the service.

If Calendar allowed a category search, the above code would be equivalent to sending to Calendar.

Searching for an entry

To retrieve the first match in a full-text search, use the following code:

FeedQuery myQuery = new Query(feedUrl);
myQuery.Query = "Tennis"; 
AtomFeed myResultsFeed = myService.Query(myQuery);
if (myResultsFeed.Entries.Count > 0) {
  AtomEntry firstMatchEntry = myResultsFeed.Entries; 
  String myEntryTitle = firstMatchEntry.Title.Text; 
}

This example starts by constructing a object, which consists mostly of a URL plus associated query parameters. Each of the standard GData query parameters has a property.

After constructing the , we pass it to the service’s method, which returns a feed containing the query results. An alternative approach would be to construct a URL yourself (by appending query parameters to the feed URL) and then call the method, but the method provides a useful layer of abstraction so that you don’t have to construct the URL yourself.

The feed’s collection returns a list of the entries in the feed; returns the number of entries in the feed.

In this case, if the query returned any results, we assign the first matching result to an object. Then we use the class’s property to retrieve the entry’s title.

The above code is equivalent to sending to Calendar.

Managing libraries

Gaining access to a library and including it in your project

  1. To include a library in your project you must have at least a read-level
    access to it. If you are not the author of the library that you want to
    include, you need to contact the author and request them to grant you access.
  2. You also need the project key of the library you are including. If you have
    access to the library, you can find the project key under
    File > Project Properties… Otherwise, you need to ask the author of
    the library to give you the project key.
  3. Select Resources > Libraries…
  4. Paste in the project key of the library that you want to use into the
    Add a Library text box.
  5. Click Add to add the library to your project.
  6. Click on the Version dropdown and select a version of this library that
    you want to use.
  7. Check to see if the default Identifier name is the one that you would
    like to use with this library. This is the name that your script uses to
    refer to the library. For example, if you set it to then you could
    call a method of that library as follows: .
  8. Enable Development mode if you want to override the selected version.
    For more information, see
    .
  9. Click Save to save the libraries you have added and close the dialog box.

Using a library

You can use your included library just as you would use a default service. For
instance, if you have chosen as an identifier for your library, just type
immediately followed by a period to see autocomplete information listing
the methods of the library.

The reference documentation for an included library can be opened by following
these steps:

  1. Select Resources > Libraries…
  2. The name of the library that you have included is a link that opens a new
    browser tab which contains the reference documentation for this library.

Removing a library

  1. Select Resources > Libraries…
  2. Click on the X button to the right of the library to delete it.
  3. Click Save for the changes to take effect.

Из истории

В октябре 2004 года на книжной выставке во Франкфурте Google представила сервис Google Print.
17 ноября 2005 года его название было изменено на Google Book Search.
Этот сервис выполняет полнотекстовый поиск по книгам, которые Google сканирует и сохраняет в своей цифровой базе данных. В декабре того же года компания Google заключила соглашение с пятью крупнейшими библиотеками США и Великобритании о начале оцифровки их библиотечных фондов.

  • библиотека Стэнфордского университета — полностью (8 000 000 книг);
  • библиотека Мичиганского университета — полностью (7 000 000 книг);
  • библиотека Гарвардского университета — 40 000 книг;
  • библиотека Оксфордского университета — все книги, изданные до 1900 г.;
  • Нью-Йоркская публичная библиотека — незащищённый копирайтом материал для школьников и студентов.

По состоянию на 2008 год, партнёрами проекта стал ряд европейских библиотек и некоторое количество издательств.

На 2010 год в рамках проекта было доступно около 15 миллионов книг, около 1 миллиона из них — находящихся в общественном достоянии. Сотрудники проекта оценили количество существующих в мире книг (без учёта переизданий) в 130 миллионов и намеревались оцифровать все к концу десятилетия.

С мая 2011 года поиск по книгам перестал быть полнотекстовым. Если раньше в книге категории «Ограниченный просмотр» можно было находить цитаты со страниц, не включённых в общий просмотр, то теперь этих страниц в книге как бы не существует, и определить, действительно ли есть такая цитата в данном произведении, стало не всегда возможно.

Всего было оцифровано около 25 миллионов книг, после чего темпы оцифровки очень сильно уменьшились.

Working with Google Calendar feeds

The above examples outline how to use the Google Data C# API to work with generic GData feeds. When you’re working with a Google Calendar feed in particular, though, the feed contains a lot of calendar-specific data that is not easily accessible using the standard Atom-oriented objects in the base API library. To help you interact with those feeds, we provide the following extensions:

using Google.GData.Extensions;
using Google.GData.Calendar;

The Extensions namespace deals with extensions in general; the Calendar namespace gives you access to a customized calendar service, feed and query object. You can find a more elaborate example of how those extensions are used in the /Samples subdirectory of the C# API installation. The following objects are added:

EventQuery
A subclass of FeedQuery, which allows you to set two custom parameters for the Calendar service (start-min and start-max).
CalendarService
A subclass of service, which can return an event feed.
EventFeed
A subclass of AtomFeed, exposing EventEntries.
EventEntry
A subclass of AtomEntry, which has additional properties related to calendar data.

For more details about those special classes, see the API documentation and the samples program.

Troubleshooting

Seeing an outdated version? Make sure you’re not using the «automatic version» links, like
, but instead use URLs referring to exact versions.
Due to concerns over caching and lack of compatibility between even minor versions, we have
deprecated and stopped updating the automatic version aliases some time ago, so they will
forever refer to an old version (in order to not break existing sites that still use them).

If you encounter problems:

  • Look for typos. Remember that JavaScript is a case-sensitive language.
  • Use a JavaScript debugger. In Chrome, use the
    Chrome DevTools. In
    Firefox, you can use the built-in
    Firefox
    DevTools. In IE, you can use the
    F12
    developer tools.
Ссылка на основную публикацию