Experiences With Alexandria And Tellico Book Cataloging Software
By user12607856 on Dec 06, 2007
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 + '\\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 + '\\n') if tokensLen > 10: sys.stdout.writelines('TI - ' + tokens + '\\n') if tokensLen > 8: sys.stdout.writelines('SN - ' + tokens + '\\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.