April 29, 2006

Improved OU Library Lookup Greasemonkey Script

Last weekend, I stumbled across a Talis Silkworm Greasemonkey script which offered a nice way of inlining results (in Firefox only, of course) for various ISBN lookup and linking services (the script automatically creates links to Amazon, xISBN and so on). If you haven't see the effect of running this sort of script before, they also have a screencast showing their script in action.

Anyway, I couldn't resist tweaking the script so that it was locally OUseful, so here it is: OUseful ISBN enrichment Greasemonkey script.

And here's what it'll do to an ISBN in a web page. Firstky, it'll find ISBN numbers, highlight them, and add a 'window open' button:

isbnAugmentLink.jpg

When you click on the '+' sign, the ISBN will be used to pull a book cover down from Amazon, the ISBN will be passed to the xISBN service to see if there are alternative versions of the book (with different ISBN numbers) available, and all related ISBNs will be used to seed links to the OU library catalogue, the OU library ebook subscription catalogue and, and the Google and Amazon look inside services.

isbnAugmentView.jpg

Note that at the moment, the links that are generated are done so without heed as to whether or not the book in in the OU library, the book is available for search/look inside at Amazon or Google, the the book is subscribed to in ebook form.

A fully working version of the script would therefore:

1) display whether or not the book is in the OU library (e.g. akin to the functionality provided by this Amazon/OU library lookup script);

2) display a link to the ebook directly, if it exists. An XML based search response should be easy enough to knock up, if this query for e-books is anything to go by. (Searching for ebooks via the custom ebook search form is certainly a lot easier than going via the Voyager catalogue.

3) Only display the look inside links if the book is available under that service.

As more and more web services come online, particularly via RESTful means (I'm guessing OpenSearch in IE will help drive this) the potential for client side web service orchestration can only get richer.

Just a couple of other things to note here - the above screens come from the Set books for Open University Courses pages (a service not totally dissimilar to my aging and unmaintained OUseful course book search service.

There are a couple of things worth remarking on about that page. Firstly, it's not maintained by the OU library, nor is the information provided by the OU library. (In fact, it's quite difficult getting just course book information out of the Voyager catalogue in an easy way (if at all), something that I believe is being looked at at the moment). Secondly, all the course book information is provided on a single monolithic page, with a drop down list but no search box to find the book information for a particular course - even with my limited talents, I'd love to have a go at redesigning this page just using CSS and a tiny bit of Javascript so the displayed area fits on a single screen with no scrolling. It'd be a really nice theme for a simple AJAX exercise too;-)

To that extent (AJAXifying the page) I whether the database that was used to generate the cocourse books info page is the one that feeds the course book information into the courses web pages (as reviewed in this post: OU Course Catalogue Takes Lead from Amazon?) and whether the information (and perhaps ebook links) are also fed into student's personal course pages? (Does ROUTES have links for ebook version of course books where avaialble, I wonder? I suspect not...).

Making course book information available in machine readable form through a simple URL directly (as well as via various simple URL based searches) would be a very handy way of transporting course book information around the OU and may also lead to interesting ways of using that info.

I guess I should look again at the OUseful Books Webservice to explore that area a little more.

PS The Talis script didn't work for me at first because it used the apparently broken onclick event statement. The fix was easy enough though: replace the expander.onclick=doExpander; assignment in the original
with expander.addEventListener("click", doExpander, true);

Posted by ajh59 at April 29, 2006 12:59 PM
Comments