Michael Beccaria wrote:
We will be switching over to VuFind this summer and I will likely use GB in a similar way with that interface as well. I plan (hopefully this summer) to build a web service that uses OCLC Web Services, Open Library, Hathi Trust, and Google Books to search for and return similar items from those resources to display in our catalog. I really like the service overall.
Incidentally, my Umlaut software can provide just such a web service. Umlaut is intended to do a lot more (it’s intended to be an OpenURL link resolver front-end), so it _might_ be overkill for that purpose, but it might still make sense to use it even without the link resolver just for it’s ability to provide a web service aggregating these (and other) services.
Umlaut has an architecture allowing plugins that consult other web sources in real time, like OpenLibrary, Amazon, Google Books, and HathiTrust. (All those are included as plugins right now; OCLC isn’t; some of the current plugins will only search on identifiers like ISBN, LCCN; others will do keyword searches. This could be changed). Plugins can run in parallel using threads, or can have specified order to run one after another (with the possibility of not running later ones if earlier ones returned results).
Results can be returned in HTML “link resolver” interface, or in XML or Json. Response includes information on plugins that are still “in progress”, if you’ve set it up for “waves” of execution, and client can keep polling until complete. (This waves/polling feature may be overkill for just what you want to do, but Umlaut supports it because I needed it for my more complicated use case). There is also the option to return an XML or Json response that has escaped rendered HTML embedded in the response, so the client can just plop already consistently rendered HTML in it’s own page somewhere, instead of re-rendering.
So, while intended as a “link resolver front-end”, what Umlaut has turned into is a pretty powerful framework for hosting external web service plugins, and aggregating them into a single web service. Might be overkill for what you want, but might come in handy. (Umlaut does NOT currently support any generic ‘caching’ architecture, which is something you’d want in a “general purpose framework for aggregating third party web services”. So I guess it’s missing that, I didn’t really need it enough to spend time on it, yet.)
I was gonna give you some examples, but I’m having trouble finding any that actually result in a GBS or HT or OL hit!