I’ve been very pleased with Mavericks overall. It’s had far fewer issues than any other update that I can recall. That’s not to deny some minor problems but I suspect most of those will be fixed with 10.9.1. One of the best new features of Mavericks is finally having an OSX iBooks. Last year when I did my big eBook roundup a lot of what I was doing was finding a good ePub reader to complement iBooks on iOS. Unfortunately none of the choices were terribly satisfying. Actually having a solid reader is a huge benefit. Further this is the first case of Apple actually breaking a function fully out of the iTunes monolith. You still have to sync your books, especially non-iBooks store books, via iTunes. But the managing of the books is now fully done in the iBooks app.
When you first run it, iBooks imports your books from iTunes. Unfortunately while iBooks is a great reader it’s a horrible organizer. When you look at your list of books you’ll quickly realize that iBooks has completely ignored all the metadata for your books, including replaced covers, and simply used what is in the ePub data structure. This is a problem for all books but most particularly for non-Apple ePubs. So if you’ve bought books from other sources or installed free ePubs1 you will frequently lose all your changes unless you did them with an ePub editor like Calibre.2 Not only do you lose your metadata but you have very little metadata available. You get Title, Author, Category3, Collection, Last Read, Date Added and Size. Of these the only one you can edit is Collection. However Collection can’t be edited the way you could edit fields in iTunes. Rather you have to select the book and use File → Add to Collection. While that’s very similar to what the Kindle App does for anyone used to iTunes this is a huge regression.
Now you might think this wouldn’t be a huge issue. You’d think you could do what you do in iTunes and just select “Reveal in Finder” for the book you are looking at. You’d be wrong. iBooks follows more of the type of storage that iOS uses. i.e. completely unintended to be visual. It doesn’t keep the original files stored in a suitable location with a database storing links and metadata the way iTunes does. Rather there is a folder deep in ~/Library with a hash code name for each book. The full path gives one the impression Apple doesn’t really want you messing with this, unlike iTunes: ~/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books
Most new apps now store their data in ~/Library/Containers. The reason is for iCloud which requires synced data be kept in the Container. I think they easily could have reconciled iOS iBooks with the expectations of iOS far better. But there you go. The first thing I did was make a symlink to this directory for easy access. For those not familiar with the shell just type in Terminal:
ln -s ~/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books ~/Books
You can’t tell, even if you find the directory, which file goes with which book. I’ve found the easiest way to deal with bad fields in iBooks is to use BBEdit. BBEdit will actually open ePubs with a very nice sidebar for all the sub containers within the Book. If you click on the content.opf for each book you’ll quickly get a nice XML display for that book if it came from an other ePub distributor. For iBooks you will need to modify the file iTunesMetadata.plist. Usually I just copy and paste between the two files.
The problem with using BBEdit is that you then have to make the file back into a proper epub. (An epub is a special zip file and while BBEdit will read it as soon as you save a file it saves it into the unzipped directory structure) The easiest way to do this is using the Applescripts from http://padilicious.com/epub/EPUBscripts.zip
Needless to say this is a big hassle. You can fix the problems, although the bad book cover problem is a little trickier to solve. (I’ll do a post on that soon) It is nice to know you can at least solve the problems. I’ll hopefully have some solutions to this soon.
Some reading might ask, why bother editing this at all? Well a significant number of my non-Apple ePubs imported with the author names screwed up. So if the author was Ray Bradbury it shows up in the Author field as Bradbury, Ray. I also may be a bit of a geek, but I really like having my Categories make at least some coherent sense.
In conclusion metadata in iBooks is a disaster. It’s completely designed to be inaccessible. It’s not even available to Spotlight. I hope that iBooks 2.0 fixes this and restores some of the great metadata handling that iTunes had. I’m all in favor of splitting iTunes up into separate book, video, podcast and music apps. However I really don’t want iTunes fantastic organizational abilities lost.4
- It’s actually staggering how many free ePub books are out there. You expect the obvious free classics such as from Gutenberg but many publishing houses also have special give away programs where selected books will be free and DRM free. ↩
- I’m honestly not sure why it preserved data with some books and not others. The key appears to be a file in the ePub directory for the book called iTunesMetadata.plist. If that is right then the book imports right. However most of my books didn’t have this copy over correctly during import. ↩
- My experience with Categories is that they are just plain bad — even from the iBooks store. Occasionally you luck out but often iBooks doesn’t even use the same category for books within the same series. ↩
- While it might be asking a bit much after the iWork debacle but it sure would be nice to have the kind of robust Applescripting abilities that iTunes has as well. I had several scripts I used to make renaming books and songs easier. ↩