University of Michigan School of Information
One of the popular destinations in any library that is regularly acquiring new books is the shelving where they are placed before they make their way into the stacks. These new books collections are usually placed in high traffic areas, and I’ve seen them highlight featured books or otherwise do much more in the way of attractively displaying what’s available than standard dense spine-out stacks shelving.
Library online catalogs, sadly, don’t often do this display justice. A long list of new titles is hard to make your way through if you don’t know really what you’re looking for, and it’s tough to display enough text on a small screen to come anywhere close to the visual impact of well displayed covers. This is an account of how I recreated the “wall of books” that I don’t see quite often enough at the Ann Arbor District Library.
RSS feeds from the catalog
I was fortunate in starting out with this project because a lot of the data was available to me as a patron without requiring any new coding by tech librarians or any new development on the catalog. The Ann Arbor catalog has a list of new books and popular books available on its web page, and you can readily page through it 10 or 20 at a time. More interesting and ultimately more useful was the availability of this same information as an RSS feed, with full information about author and titles and even links to book cover images.
I won’t go into RSS as a format, but for the purposes of this discussion it’s useful to know two things about what made it so helpful. First, it’s relatively easy to parse, and doesn’t require lots of code to untangle session IDs or tables or other display formatting codes that are necessary for an online catalog display. Grabbing an RSS feed from the catalog is one line of code from the Unix shell (use “curl” or “wget”) once you have located the source of it.
The second and ultimately even more important part of the equation is that every book search in the Ann Arbor catalog has an RSS feed associated with it. This allows for novel combinations not anticipated by the site designers. I can construct a URL that points to new books on knitting and have that collection returned. It depends on good cataloging, and some tasks (like returning only non-fiction) are harder than you’d like, but generally as long as you’re trying to get a slice of the bookshelves that are already well described it’s easy.
The direction that’s visible in the search area which will hopefully show up in more library catalogs is support for OpenSearch, a format built up around RSS that standardizes how search terms get put into URLs so that RSS formatted results come back. If the Ann Arbor catalog had supported OpenSearch from the start, the tools I built could have been the start of a solution for any similar catalog independent of vendor.
Assembling a page of books
Identifying the appropriate search string and getting RSS formatted results back is only the first step in this process. The task remained to format the results neatly on the page to get the appropriate visual impact of having a screen full of book covers.
I cheated here, and rather than building proper tools that unpacked the HTML inside of the RSS in some clean and elegant way, I resorted to writing a few lines of obscure but powerful Unix regular expressions. The actual code is very simple - it looks for image links in the RSS stream, and deletes everything else in each entry until just the image and a link to the catalog entry remain. The alternative approach, which is on the docket for this code’s rewrite, is to use an HTML library that goes through the “document object model” or DOM in each entry and picks up the right page elements. That would have been 40 or 50 lines of code instead of 4, so it’s best left for the start of something more ambitious.
In some sense the current approach is much too simple, and comments from low vision readers of my Superpatron blog (who view pages with a screen reader and who are interested in what’s new) suggest that keeping a lot more text information hidden away for access will be useful. Given a book image there’s all kinds of catalog information that you could have pop up when you mouse over the cover, and with Yahoo’s new user interface library it isn’t even as hard as you’d think to imagine a nifty catalog interface where you drag books that you want over to the checkout area. But that’s also not 4 lines of code, so it didn’t get done in one evening.
From prototype to service
The final piece of this effort is getting it into the hands of people who might actually want to check out books. The initial tools and prototypes I built on my Mac iBook laptop, and while I was content to get that done for the sake of doing it, it seemed reasonable to want to make it more visible.
The first thing I did once I had something that was worth showing off was to post an image to Flickr and link to it from my blog Superpatron. That had the immediate impact of being something that people could see even without me writing any more lines of code. Getting images of work in progress into the hands of a wider audience is very helpful in gaining feedback, and that particular screen capture has been seen 500+ times to date.
A second part of the process is to secure server space on my personal web site and to automate the build process for updated collection snapshots so that it would be a single command to push out the current set of new issues and not a long series of half-remembered cryptic commands. I’m most of the way there in turning that into a one line process, which could then be added to a Unix “cron” script and done completely automatically.
It would be possible to update the new books list in real time every time someone visited the page, but that seems to be a bad direction to follow and I’m not planning that tack. For one thing, it really doesn’t change more than a few times a week as catalog changes are loaded, and it would be a waste of time and effort and bandwidth to refresh the page from scratch just in case it changed. Serving up the page from a cache is more reliable and takes a lot less overhead.
Book image sources
The images in the Ann Arbor wall of books are linked from Syndetics, the vendor who provides them to the Ann Arbor District Library. In general they are of good quality, and I use them only because the AADL has licensed them already.
A second source for cover art that may be more accessable to someone building this outside of a library context is Amazon. Amazon’s artwork is neatly retrievable by ISBN and is available on reasonable terms as long as you make a link to their store for purchasing the items.
A noticable omission in my efforts is a total inability to get a good new DVD wall in place because of missing cover art. The best source for movie artwork is the Internet Movie Database (IMDB), which is owned by Amazon; so far, however, I have not been able to come up with a shared key between the two systems to help me go directly to the artwork from any catalog data.
Several organizations have pursued related work, and I’ll share those here.
Dave Pattern from the University of Huddersfield in the UK has pulled out information from recently circulated books from their catalog and used a display that focussed largely on cover art instead of a list of titles. He’s working in an experimental part of their catalog, and there’s a degree of fun in his approach that’s not generally what you’d expect in OPAC design.
Eli Neiburger and John Blyberg have been tremendously helpful at the Ann Arbor District Library as I nudged them into adding the data into their existing RSS feed that made this work so easy. For every line of code I write, John writes at least a hundred, but then again he’s library staff and I’m just a patron.
Eric Klooster at the AADL has written a Quartz Composer application for the Macintosh that takes these same new book feeds and animates a series of book cover images for patrons waiting at the circulation desk at the brand new Pittsfield branch of the library.
Some closing thoughts
Book covers these days are quite attractive, especially popular works - they have to be, to attract the eyes of buyers as they are piled high in bookshops for their brief shelf lives before being relegated to the stacks and then mercilessly remaindered.
By taking advantage of cover art already in library catalogs, and by using RSS and search techniques to zoom in on items of interest, I was able to put together an attractive and useful “wall of books” for the Ann Arbor District Library. The display is purely visual and does not have a word of text, and early user comments suggest that it’s useful but that more work is needed to add back in detail and accessability.
Getting reusable data from the library’s catalog was key to this effort, and it points to a proper direction for development efforts where library software starts to track popular standards efforts whenever possible.