1. API Hackery:
Customizing Your Library’s
Services Using APIs
Nicholas Schiller Presentation site: bit.ly/XqyzfM
WSU Vancouver Library Test the app: bit.ly/WvqAR4
Online Northwest 2013 C o d e o n G it H u b : htt p s: //
February 8, 2013 github.com/nnschiller/easy_api
Corvallis, OR
2. Desired Outcomes:
You will be able to explain how APIs work.
You’ll leave with ideas on how APIs can help
your patrons.
You’ll leave energized to make things.
3. This Talk is Not:
A step-by-step tutorial or walkthrough.
(There will be gaps.)
A coding lesson. (My role there is student or
peer not instructor.)
A technical treatment of the subject.
5. APIs are about sharing
data.
Librarians are about
sharing information.
APIs and Librarians should
be friends.
6. APIs are a key part of
library systems’
movement from closed
“black-box” tools to
truly open systems.
7. Examples:
Google Maps API
With an authentication key and latitude &
longitude coordinates, you can put a map
on your page.
WorldCat Search API
Twitter APIs
Instructions for capturing tweets and
hashtags.
8. We’ll want a guide to lead us through this.
For technology optimists:
he will be our Beatrice.
Our Beatrice
12. The relative
difficulty* of
1/6
making library
tools with
APIs.
2/3 1/6
the problem & solution the code the design
13. The caveats:
*Two
Relative Difficulty Levels*
1. I made these ratios up. They don’t 1/6
reflect my time invested.
2/3 1/6
2. What we don’t know how
to do (yet) seems much harder, but
we can learn & we can find help.
“Pseudo-code is your friend” or follow
Anne Lamott’s advice on first drafts.
the problem & solution the code the design
14. Write code
Articulate your
using an API to
problem and
identify a
+ generate the
desired solution.
solution.
Wrap the
solution code in
+ a user
friendly format.
15. Articulate
Information API + scripting
language (PHP,
Need, form + JavaScript, Ruby,
Boolean Queries,
ID Appropriate Python) + HTML 5
Data Sources
HTML 5, CSS 3 &
+ jQuery Mobile
17. Practical example of an
API solving a real
library problem.
Our WorldCat Local discovery layer presents
obstacles to students who are looking for
ebooks.
The ebooks facet doesn’t use the same
definition of ebook that our students assume.
20. To Successfully find an
eBook in our collection:
Type the following into our WorldCat discovery tool:
kw:NASA +mt:ebk -mt:gnp
-mt:cpb -mt:deg
Also consider excluding material types
upw, upc, cdc, dct
21. Don't you understand this is Greek
to me? Except that I speak
Greek. This is Aramaic to me. Not
the western dialect, I do speak it.
22. What we need is:
something to automatically do this for eBook
searches.
to get the user’s search query, add our
Boolean logic phrase to the query, get the
results and present them to the user.
the WorldCat Search API.
23. While we’re at it
Let’s format our tool for tablets and mobile
devices.
Let’s connect the user directly to the full
text right on their tablets and/or mobile
devices or whatever screen they prefer.
(I’m working on the assumption that eBooks
and tablets go together.)
24. Core Librarian
skills: information API + scripting
language (PHP,
need articulation, + JavaScript, Ruby) +
Boolean queries,
data source HTML 5
expertise
HTML 5, CSS 3 &
+ jQuery Mobile
25. WorldCat Search API
Request a key. (Keys denote permission to
access the service.)
Submit your requests formatted in either
opensearch or SRU standards.
Specify how you want the data returned.
26. WorldCat Search API
Opensearch: from A9 www.opensearch.org
basic structure, kw indexes only
returns RSS or Atom
SRU: www.loc.gov/standards/sru/
enables complex queries of multiple
indexes
returns XML or MARC
27. For Our Example
we can use both
The WorldCat Search API can return
formatted citations using opensearch.
Opensearch only searches keyword
indexes but our search requires the
material type index.
If we want to search the mt: index and
get formatted citations, we’ll need to use
opensearch with SRU formatting. The API
allows this.
28. http://www.worldcat.org/webservices/
catalog/search/worldcat/opensearch?
q=srw.kw+any+%22biofuel%22+and
+srw.li+any+%22ws2%22+and+srw.mt
+any+%22ebk%22+not+srw.mt+any+
%22gpb%22+not+srw.mt+any+%22cnp
%22+not+srw.mt+any+%22deg
%22&format=rss&cformat=chicago
&wskey=[insert your API key here]
29. A friend from Washington State
invented these glasses in order to
be able to see a URL’s aura.
30. http://www.worldcat.org/
webservices/catalog/search/
worldcat/opensearch?q=srw.kw+any
+”biofuel”+and+srw.li+any+”ws2”
+and+srw.mt+any+”ebk”+not+srw.mt
+any+”gpb”+not+srw.mt+any
+”cnp”+not+srw.mt+any+”deg”
&format=rss&cformat=chicago
&wskey=[insert your API key here]
34. Do You Remember?
Slide 17: “What we need is to get the user’s
search query, add our Boolean logic phrase
to the query, get the results and present
them to the user.”
Our code will do EXACTLY these three
things.
As a n00b coder, I was only able to succeed
by keeping a razor-sharp focus on exactly
these goals.
39. Special Thanks to:
Jason Clark with Montana State University
Libraries
Bruce Washburn with OCLC Research
They shared their code under FreeBSD and
GNU open licenses, allowing me to borrow
freely.
41. Either a green unicorn just raced
across the lab,
or I accidentally used jQuery
Mobile.
42. jQuery Mobile automates:
The buttons, pickers, & search inputs
The theme and color scheme
The behavior in diverse screens and browsers
43. Image Credits
John Noble / Walter Bishop / Walternate images are
from the Fox TV series Fringe and are used under fair
use as set forth in the Code of Best Practices for Fair
Use in Online Video. See especially #6 SIX: Quoting in
Order to Recombine Elements to Make a New Work
That Depends for its Meaning on (Often Unlikely)
Relationships Between the Elements.
The images from Dore’s engravings of Dante’s Divine
Comedy are in the public domain.
44. Demo the Web App (beta)
bit.ly/WvqAR4
Code Repository on GitHub:
https://github.com/nnschiller/
easy_api
45. Further Reading
OCLC Worldcat Search API
http://www.oclc.org/developer/services/worldcat-
search-api
http://www.oclc.org/worldcatapi/default.htm
http://www.oclc.org/us/en/support/documentation/
firstsearch/z3950/z3950_databases/specs/
materialtypes.htm
http://www.oclc.org/developer/news/worldcat-search-
api-tips-and-tricks
46. Further Reading
Opensearch
http://www.opensearch.org/Home
http://oclc.org/developer/documentation/worldcat-
search-api/opensearch-responses
SRU
http://www.loc.gov/standards/sru/
http://www.worldcat.org/webservices/catalog/
search/sru?wskey=[YOUR WCS API KEY IS
REQUIRED]
48. API Hackery:
Customizing Your Library’s
Services Using APIs
Nicholas Schiller Presentation site: bit.ly/XqyzfM
WSU Vancouver Library Test the app: bit.ly/WvqAR4
Online Northwest 2013 C o d e o n G it H u b : htt p s: //
February 8, 2013 github.com/nnschiller/easy_api
Corvallis, OR