Skip to content

Instantly share code, notes, and snippets.

@raecoo
Created November 8, 2022 12:26
Show Gist options
  • Save raecoo/d3570ee9340047771ee06d86005ca01e to your computer and use it in GitHub Desktop.
Save raecoo/d3570ee9340047771ee06d86005ca01e to your computer and use it in GitHub Desktop.
Dump iBooks books as epub file
#!/usr/bin/env ruby
require 'nokogiri'
ibooks_home = '/Users/xxx/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books/'
Dir.foreach(ibooks_home) do |dir|
if File.extname(dir) == ".epub"
dir = ibooks_home + dir
File.open(dir + "/iTunesMetadata.plist") do |f|
doc = Nokogiri::XML(f)
book_name = doc.xpath('//key[text()="itemName"]/following::string').first.text
Dir.chdir(dir)
print "." if %x(zip -r "#{book_name}.epub" .) && %x(mv "#{book_name}.epub" ~/Downloads/)
end
end
end
puts "Done!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment