kobo-book-downloader
kobo-book-downloader copied to clipboard
WIP - Fixing the download of books
I've fixed the GetAllBooks
downloads, but I cannot get the DRM decryption to work again.
Kobo made some small response changes in their API that I corrected.
In the process I found another DRM type called SocialDrm. In this case the e-book can be used on all my devices, but its 'watermarked'. For me this is not a issue (and even preferred), I don't want to use the tool for piracy but only to have the e-books in a DRM-free format.
This SocialDrm download url is not supplied when the client identifies its-self as Android client as seen in Kobo.__GetContentAccessBook()
.
Only in the book listing call as in Globals.Kobo.GetMyBookList()
. This response contains DownloadUrls
of much more DRM types.
Due inconsistencies in the Kobo API response types its hard (for me in Python) to create a generic method that handles both scenario's.
Maybe someone can help me out here? In my view, when available, a book 'protected' by SocialDrm should have the first choice. If not available other DRM types could be downloaded and decrypted. Im not able to get this last part done.
+1 on functionality. Works for me
This repository has been abandoned. I have forked the project at https://github.com/subdavis/kobo-book-downloader - please give that project a try and open an issue there if you have trouble.
@jmvermeulen I'd like to make sure my fork works with this social DRM type. Could you either give it a try to maybe link me to a cheap book that you know uses this type?
I ran into the exact same issue as you: URL isn't identified by call to GetContentAccessBook(), but I fixed it by simply _always_calling GetMyBookList(). This was needed to get audiobooks as well, so 2 birds one stone.
My fork adds some new features:
- audiobook support
- support for other DRM types.
- multi-user support; fetch books for multiple accounts.
- web interface; adds new browser gui (with flask)
- docker image
- pypi package
Please don't reply to this issue, open an issue on my fork instead