All | 43 Folders | Accessibility | BoingBoing | Books | Computer Related | Family | Films | General | Hacking | Hobbies | Humor | Java | Links | Omni | OpenSolaris | Puzzles and Games

« Amazon Kindle | Main | And the Winner Is... »
20071206 Thursday December 06, 2007

Experiences With Alexandria And Tellico Book Cataloging Software

Currently I have my book collection (over 3000 of them) catalogued with Delicious Library.

It's a great application, and I'm mostly happy with it, but I'd really like to do my book cataloging on my Ferrari, the computer I use the most. I'd also prefer it to be open source, so if I have the urge to hack modify it, then it's possible.

I started looking for something on the GNOME desktop, and found Alexandria. There was a version that automatically came via the Ubuntu network software repositories but as it wasn't even able to dismiss the About box via the "Close" button, I wasn't holding out too much hope for how useful it was.

So I downloaded the latest deb package via their download page, installed that and tried again. The About Close button bug is definitely fixed (yea!), and I was able to easily add a book by giving it the book ISBN, via the "Add Book" button. Cool. Now I just need to work out how to automatically add the 3000+ books I already have.

I saw that one of the import options is to supply a text file where each line contains the ISBN number. So I went to my Powerbook, fired up Delicious Library, exported my book collection as a text file, copied it over to my Ferrari, and cobbled up a quick script to extract out all the ISBN's (actually they are Amazon ASIN's but hopefully that shouldn't be a problem, as Amazon is one of the providers that's used, to get book information).

#!/usr/bin/env python
#
# create_asin_list.py - v0.1
#
# Usage: python create_asin_list.py < "Library Text Export.txt" > ASINList.txt

import sys

def readBookList():
    return sys.stdin.readlines()

def writeASINList(lines):
    for line in lines:
        tokens = line.split('\t')
        if len(tokens) > 8:
            sys.stdout.writelines(tokens[8] + '\n')

if __name__ == "__main__":
    lines = readBookList()
    writeASINList(lines)

I then tried importing that file to alexandria and it just hung. By experimentation, I discovered it didn't like the third ISBN number: 033025068X. Looking deeper I discovered that this is an ASIN number from Amazon UK, rather than Amazon US. Delicious Library gives you a choice, and as I bought the book in England about thirty years ago, I picked the UK version to catalog.

I then started alexandria again, and tried to just add that single ISBN number via the "Add Book" button. It hung again. At this point I was so disgusted, that I just went to the terminal window and typed Control-c to try to quit the program. Lo and beyond, it printed out "found at Worldcat" and proceeded to add it to the collection. Sigh.

As alexandria started, it output:

Can't load image_size, hence exported libraries are not optimized
Can't load mechanize, hence provider Deastore not available
Can't load Ruby/ZOOM, hence Z39.50 and providers Library of Congress, British Library not available

so maybe that's what's causing the hang, but I would have liked to think that the initial installation of alexandria via the Synaptic Package Manager would have sorted out all the required runtime dependencies. It certainly told me about a load of other packages that it intended to install as well as alexandria.

I then tried the Control-c "feature" whilst retrying to do the import, and it just aborted the program.

There doesn't seem to be an easy way to add another provider (Amazon UK), which would presumably solve my hanging problems, so I've currently given up on alexandria. If I feel in a hacking mood, i'll download the source, learn Ruby, and see if I can fix this.

I then installed tellico which appears to be the KDE equivalent. This one seems to be more fully-featured, yet there doesn't appear to be a way to add a book via an ISBN. I tried adding "033025068X" via it's title and author and it picked up the U.S. edition. That's not what I wanted.

There also doesn't seem to be a "simple" import mechanism. It's looking for much more complicated import schemas. I looked at a few, and decided that RIS was one of the simplest, and cobbled up another Python script to try to generate the minimal amount of information that would be needed to import the books into tellico.

#!/usr/bin/env python
#
# create_ris_list.py - v0.1
#
# Usage: python create_asin_list.py < "Library Text Export.txt" > library.ris
import sys

def readBookList():
    return sys.stdin.readlines()

def writeRISEntries(lines):
    for line in lines:
        tokens = line.split('\t')
        tokensLen = len(tokens)
        sys.stdout.writelines('\n')
        sys.stdout.writelines('TY - BOOK\n')
        if tokensLen > 37:
            sys.stdout.writelines('AU - ' + tokens[37] + '\n')
        if tokensLen > 10:
            sys.stdout.writelines('TI - ' + tokens[10] + '\n')
        if tokensLen > 8:
            sys.stdout.writelines('SN - ' + tokens[8] + '\n')
        sys.stdout.writelines('ER -\n')

if __name__ == "__main__":
    lines = readBookList()
    writeRISEntries(lines)

This time I gave it an RIS file that just contained the single that had been causing all the trouble.

TY - BOOK
AU -
TI - Again, Dangerous Visions: v. 1
SN - 033025068X
ER -

It didn't import it. I'm not sure what it did (except not hang). I tried another simple example with a valid Amazon US ISBN number, and it didn't like that either.

At this point, I'm taking a break. Book cataloging software shouldn't be this hard to use. Delicious Library proves that.

[]

[]

[]

( Dec 06 2007, 09:51:15 AM PST ) [Listen] Permalink Comments [10]

Comments:

Hi,
You might also consider giving GCstar a try.
http://www.gcstar.org/
There's a package in the Ubuntu Gutsy repositories (universe), or you can try the following installation instructions, which ought to give you a more up-to-date version:
http://wiki.gcstar.org/en/install_linux#ubuntu

Posted by Visitor from planet Gnome on December 06, 2007 at 12:16 PM PST #

Thanks! I'll check GCstar out (probably next week).

Posted by Rich Burridge on December 06, 2007 at 01:27 PM PST #

Not a desktop application, but http://librarything.com is completely wonderful. And their ISBN import is working rather well too. Unfortunately it is only free up to 200 books.

Posted by Carl Friedrich Bolz on December 06, 2007 at 03:40 PM PST #

Hi Carl,

Yes indeed. I've "played" with LibraryThing before.
It's a nice idea, but not what I'm looking for
(doesn't let me change/hack if I so desire).

Thanks for the suggestion though.

Posted by Rich Burridge on December 06, 2007 at 03:53 PM PST #

Sure, the typical tradeoffs of a web app are involved. You can't use it offline, you can't hack it as easily etc. At least librarything gives you easy ways to export your book collection so that you are not locked in.

Posted by Carl Friedrich Bolz on December 06, 2007 at 03:57 PM PST #

Hi Rich,

Sorry you had a bad experience with your import. Alexandria is coming out of a long (2 year) hiatus in development. You should check it out in a little while. The bug you mention probably had to do with Alexandria blocking while it was searching for your isbn. It can take a long time before it gives up. By hitting ctrl-c you killed the search thread. You might give it another shot using a newer libamazon-ruby found here, http://alexandria.rubyforge.org/dependencies/ruby-amazon/
but obviously we can do better.

Posted by Joseph Method on December 06, 2007 at 04:41 PM PST #

Hi Rich, thanks for making your issues with Tellico known.

With regard to simple import, try putting your title and ISBN values in a CSV file, and importing that. You'll need to assign the title and isbn fields to specific columns, but that should get you started. Then select your entries, and use Collection->Update Entry to pull additional information from Amazon or any other data source.

With regard to the RIS import, Tellico was reading the spec rather strictly and looking for exactly 2 spaces for each hyphen. Easy enough to change for a future release, in the spirit of accepting more RIS files.

With regard to the book with ISBN 033025068X, the Internet Search should offer you the option of searching by ISBN. Using the Amazon UK source, it seems to be found correctly. Searching Amazon US by title does indeed find US editions.

Also, when doing an ISBN search, there's a button for importing a list of ISBN values from a text file, though Tellico's Amazon search limits you to 100 at a time.

Posted by Robby Stephenson on December 06, 2007 at 04:52 PM PST #

Hi Joseph and Robby,

Many thanks for your replies. I appreciate
you taking the time to reply. I'll try do what
you suggest and see if I can get further with
both alexandria and tellico.

For both applications, I'd like to suggest that
making them be able to also search Amazon UK,
would be a great option. I also suggest being
allowed to substitute an alternate Amazon
developers key (I have one of my own that
I could use). This shouldn't be a limit. I
recently imported all 3000+ books back into
Delicious Library when my internal laptop disk
went bad and I didn't have a bootable backup.

Also to provide more feedback on exactly what
it's trying to do, as it's trying to import the
ISBN's.

I'm also curious to know how well either
application does with 3000+ items in the
collection. This is where Delicious Library
starts to slow down (at least on my clunky
old Powerbook).

Posted by Rich Burridge on December 06, 2007 at 05:36 PM PST #

Just to confirm, that by adjusting my
create_ris_list.py script to use two
space, and rerunning it, and importing
the new library.ris into tellico, it's
read in all my book information.

Thanks!

Posted by Rich Burridge on December 06, 2007 at 07:36 PM PST #

For Tellico, the data sources can be added and changed in the Settings->Configure Tellico dialog. Amazon UK is an available option, it's just not there in the initial sources. Perhaps it should be. Germany, Japan, Canada, and France are also available.

And each Amazon source can have a different associate's ID, if you want. Just edit that particular data source and change the default one.

Posted by Robby Stephenson on December 06, 2007 at 09:57 PM PST #

Post a Comment:

Comments are closed for this entry.