Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"ClientConnectionError" Plugin cannot connect to libby website. #33

Open
SeriousHornet opened this issue Sep 9, 2024 · 31 comments
Open

Comments

@SeriousHornet
Copy link

Plugin throws up this error when opened now.
I tried to give it refreshed tokens multiple times yet it shows this error. Anyone else facing the same issue?

`calibre 7.17 embedded-python: True
Windows-10-10.0.22000-SP0 Windows ('64bit', 'WindowsPE')
('Windows', '10', '10.0.22000')
Python 3.11.5
Windows: ('10', '10.0.22000', 'SP0', 'Multiprocessor Free')
Interface language: None
EXE path: C:\Program Files\Calibre2\calibre.exe
Successfully initialized third party plugins: DeACSM (0, 0, 16) && Gather KFX-ZIP (from KFX Input) (2, 15, 0) && DeDRM (10, 0, 9) && Package KFX (from KFX Input) (2, 15, 0) && Goodreads (1, 8, 2) && Goodreads More Tags (1, 2, 1) && Goodreads Sync (1, 16, 8) && KFX metadata reader (from KFX Input) (2, 15, 0) && From KFX (2, 15, 0) && KFX Input (2, 15, 0) && KOReader Sync (0, 6, 7) && Kindle hi-res covers (0, 5, 1) && Kobo Utilities (2, 17, 1) && OverDrive Libby (0, 1, 9) && Overdrive Link (2, 57, 0) && Reading Goal (1, 6, 5) && Overdrive Link Metadata Source (2, 57, 0)
Traceback (most recent call last):
File "urllib\request.py", line 1348, in do_open
File "http\client.py", line 1286, in request
File "http\client.py", line 1332, in _send_request
File "http\client.py", line 1281, in endheaders
File "http\client.py", line 1041, in _send_output
File "http\client.py", line 979, in send
File "http\client.py", line 1458, in connect
File "ssl.py", line 517, in wrap_socket
File "ssl.py", line 1108, in _create
File "ssl.py", line 1379, in do_handshake
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'sentry-read.svc.overdrive.com'. (_ssl.c:1006)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "calibre_plugins.overdrive_libby.libby.client", line 518, in send_request
File "urllib\request.py", line 519, in open
File "urllib\request.py", line 536, in _open
File "urllib\request.py", line 496, in _call_chain
File "urllib\request.py", line 1391, in https_open
File "urllib\request.py", line 1351, in do_open
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'sentry-read.svc.overdrive.com'. (_ssl.c:1006)>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "calibre_plugins.overdrive_libby.action", line 133, in
File "calibre\customize_init_.py", line 188, in do_user_config
File "calibre_plugins.overdrive_libby.init", line 104, in save_settings
File "calibre_plugins.overdrive_libby.config", line 947, in save_settings
File "calibre_plugins.overdrive_libby.libby.client", line 593, in get_chip
File "calibre_plugins.overdrive_libby.libby.client", line 556, in send_request
calibre_plugins.overdrive_libby.libby.errors.ClientConnectionError: <calibre_plugins.overdrive_libby.libby.errors.ClientConnectionError; http_status=0, msg='URLError <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'sentry-read.svc.overdrive.com'. (_ssl.c:1006)>', error_response='''>
`

@sgmoore
Copy link

sgmoore commented Sep 9, 2024

Same here.

Browsing to https://sentry-read.svc.overdrive.com/ also gives a certificate error.

Hard to know if this is an mistake or deliberate. If the former, they may fix it fairly soon.

If the latter, or if you are in a hurry, you can try my patched copy from https://gofile.io/d/SJp0r9 or from my fork at https://github.com/sgmoore/libby-calibre-plugin (but you have to unzip the repo and re-zip the contents of the calibre-plugin).

Edit.

I think I have figured out the proper way to generate this file in Github, so the proper link is at https://github.com/sgmoore/libby-calibre-plugin/releases and download the overdrive-libby-plugin zip file from there.

@p1nkyy
Copy link

p1nkyy commented Sep 10, 2024

Same here.

Browsing to https://sentry-read.svc.overdrive.com/ also gives a certificate error.

Hard to know if this is an mistake or deliberate. If the former, they may fix it fairly soon.

If the latter, or if you are in a hurry, you can try my patched copy from https://gofile.io/d/SJp0r9 or from my fork at https://github.com/sgmoore/libby-calibre-plugin (but you have to unzip the repo and re-zip the contents of the calibre-plugin).

Thank you but with yours this is the error message I got

calibre, version 7.17.0
ERROR: Unhandled exception: <b>ClientConnectionError</b>: Failed to download e-book<p>Check your connection or retry in a few minutes.</p>

calibre 7.17  embedded-python: True
Windows-10-10.0.19045-SP0 Windows ('64bit', 'WindowsPE')
('Windows', '10', '10.0.19045')
Python 3.11.5
Windows: ('10', '10.0.19045', 'SP0', 'Multiprocessor Free')
Interface language: None
EXE path: C:\Program Files\Calibre2\calibre.exe
Successfully initialized third party plugins: ACSM Input (0, 1, 0) && Gather KFX-ZIP (from KFX Input) (2, 15, 0) && DeDRM (10, 0, 9) && Package KFX (from KFX Input) (2, 15, 0) && ACSM Input Plugin GUI Extension (0, 1, 0) && Find Duplicates (1, 10, 9) && KFX metadata reader (from KFX Input) (2, 15, 0) && From KFX (2, 15, 0) && KFX Input (2, 15, 0) && KindleUnpack - The Plugin (0, 83, 1) && Modify ePub (1, 8, 4) && Obok DeDRM (10, 0, 9) && OverDrive Libby (0, 1, 9)
Traceback (most recent call last):
  File "urllib\request.py", line 1348, in do_open
  File "http\client.py", line 1286, in request
  File "http\client.py", line 1332, in _send_request
  File "http\client.py", line 1281, in endheaders
  File "http\client.py", line 1041, in _send_output
  File "http\client.py", line 979, in send
  File "http\client.py", line 1451, in connect
  File "http\client.py", line 945, in connect
  File "socket.py", line 851, in create_connection
  File "socket.py", line 836, in create_connection
TimeoutError: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "calibre_plugins.overdrive_libby.libby.client", line 520, in send_request
  File "urllib\request.py", line 525, in open
  File "urllib\request.py", line 634, in http_response
  File "urllib\request.py", line 557, in error
  File "urllib\request.py", line 496, in _call_chain
  File "urllib\request.py", line 749, in http_error_302
  File "urllib\request.py", line 519, in open
  File "urllib\request.py", line 536, in _open
  File "urllib\request.py", line 496, in _call_chain
  File "urllib\request.py", line 1391, in https_open
  File "urllib\request.py", line 1351, in do_open
urllib.error.URLError: <urlopen error timed out>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "calibre\gui2\threaded_jobs.py", line 85, in start_work
  File "calibre_plugins.overdrive_libby.ebook_download", line 50, in __call__
  File "calibre_plugins.overdrive_libby.ebook_download", line 94, in _custom_download
  File "calibre_plugins.overdrive_libby.libby.client", line 808, in fulfill_loan_file
  File "calibre_plugins.overdrive_libby.libby.client", line 558, in send_request
calibre_plugins.overdrive_libby.libby.errors.ClientConnectionError: <calibre_plugins.overdrive_libby.libby.errors.ClientConnectionError; http_status=0, msg='URLError <urlopen error timed out>', error_response='''>
```
`

@SeriousHornet
Copy link
Author

Same here.
Browsing to https://sentry-read.svc.overdrive.com/ also gives a certificate error.
Hard to know if this is an mistake or deliberate. If the former, they may fix it fairly soon.
If the latter, or if you are in a hurry, you can try my patched copy from https://gofile.io/d/SJp0r9 or from my fork at https://github.com/sgmoore/libby-calibre-plugin (but you have to unzip the repo and re-zip the contents of the calibre-plugin).

Thank you but with yours this is the error message I got

If you use his prepacked one from the gofile link it works fine, but repacking the github repo gives me the same error. I'm not sure whats the difference b/w those two.

@p1nkyy
Copy link

p1nkyy commented Sep 10, 2024

Same here.
Browsing to https://sentry-read.svc.overdrive.com/ also gives a certificate error.
Hard to know if this is an mistake or deliberate. If the former, they may fix it fairly soon.
If the latter, or if you are in a hurry, you can try my patched copy from https://gofile.io/d/SJp0r9 or from my fork at https://github.com/sgmoore/libby-calibre-plugin (but you have to unzip the repo and re-zip the contents of the calibre-plugin).

Thank you but with yours this is the error message I got

If you use his prepacked one from the gofile link it works fine, but repacking the github repo gives me the same error. I'm not sure whats the difference b/w those two.

This is the one from gofile. But to be fair I have some difficulties getting the ACSM directly from the OD (not Libby) so maybe OD server is currently having a problem indeed?

@SeriousHornet
Copy link
Author

This is the one from gofile. But to be fair I have some difficulties getting the ACSM directly from the OD (not Libby) so maybe OD server is currently having a problem indeed?

Probably that. But the plug-in should've worked for you regardless as it did for me. Try removing it and also the files related to it from the calibre/plugin folder and re-install and set it up again?

@p1nkyy
Copy link

p1nkyy commented Sep 10, 2024

This is the one from gofile. But to be fair I have some difficulties getting the ACSM directly from the OD (not Libby) so maybe OD server is currently having a problem indeed?

Probably that. But the plug-in should've worked for you regardless as it did for me. Try removing it and also the files related to it from the calibre/plugin folder and re-install and set it up again?

It worked just now, even though the first few minutes it was a bit shaky. Oh no, never removing it and setting it up again, I suggest. The Libby code is different now and take a look at the other thread, they can't input the Libby code now. So never ever remove this plugin.

@sgmoore
Copy link

sgmoore commented Sep 10, 2024

If you use his prepacked one from the gofile link it works fine, but repacking the github repo gives me the same error. I'm not sure whats the difference b/w those two.

Me either! I thought I had messed up, but I downloaded both and checked them

At the time I sent those links they should have been exactly the same and if you repack the github repo now the only difference should be some changes to avoid lint errors in a completely different routine.

@SeriousHornet
Copy link
Author

Me either! I thought I had messed up, but I downloaded both and checked them

At the time I sent those links they should have been exactly the same and if you repack the github repo now the only difference should be some changes to avoid lint errors in a completely different routine.

Thanks for your patch really!

As the previous commenter mentioned, some people are having trouble putting the Libby set up code now. I guess I'm never removing the current set up of mine. Also do you have issues downloading magazines as well? Could you look into it?

@LoisGNS
Copy link

LoisGNS commented Sep 11, 2024

I haven't tried the new one yet (just downloaded from the gofile link. On my current (old) version, everything stopped working. I couldn't generate a setup code, for example.

Anyway, is the recommended course now to back up my current version, unzip the new one I just downloaded, then re-zip it, giving it the name of the original plugin zip? Do I have to tell Calibre to reinstall it from the zip after that?

@p1nkyy
Copy link

p1nkyy commented Sep 11, 2024

I haven't tried the new one yet (just downloaded from the gofile link. On my current (old) version, everything stopped working. I couldn't generate a setup code, for example.

Anyway, is the recommended course now to back up my current version, unzip the new one I just downloaded, then re-zip it, giving it the name of the original plugin zip? Do I have to tell Calibre to reinstall it from the zip after that?

Just unzip @sgmoore's fork, and choose load plugin from file from Preferences >> Plugins. No need to rename, uninstall, etc.

@LoisGNS
Copy link

LoisGNS commented Sep 11, 2024

So use the fork, not the Gofile zip file? And if I unzip it, how do I install from zip?

@p1nkyy
Copy link

p1nkyy commented Sep 11, 2024

So use the fork, not the Gofile zip file? And if I unzip it, how do I install from zip?

Oh no I meant the Gofile, sorry. It's just that the two are interchangeable to me.
Unzip? You don't need to zip it. Why do you want to? It needs to be zipped to be able to be loaded to Calibre.

@sgmoore
Copy link

sgmoore commented Sep 11, 2024

So use the fork, not the Gofile zip file? And if I unzip it, how do I install from zip?

I'll have to figure out how to do this better, but there are currently two ways to get from the repo.

The easy way is to download the zip file that has been automatically created by GitHub.
The current one is at https://github.com/sgmoore/libby-calibre-plugin/actions/runs/10770909189/artifacts/1908277836. Then in Calibre goto Preferences/Plugins/Load Plugin from file and select this zip file.

A more general way of doing this means going to https://github.com/sgmoore/libby-calibre-plugin/actions and open the top entry with a green check mark and at the bottom you can download the plugin.

The problem with that method is that I don't know how long that link will be valid for. (If you were to try this method on pings repo, you would find that the links have expired).

The other method is to goto https://github.com/sgmoore/libby-calibre-plugin and click on code and download the whole repo, but that downloads too much, so you have to extract that to a temporary folder and find the calibre-plugin folder and then zip up its contents (not the actual folder) and load that into calibre.

@sgmoore
Copy link

sgmoore commented Sep 11, 2024

As the previous commenter mentioned, some people are having trouble putting the Libby set up code now. I guess I'm never removing the current set up of mine. Also do you have issues downloading magazines as well? Could you look into it?

TLDR

Sorry if I give you false hope, but I don't think I have the necessary skills. I don't think downloading magazines is possible. It may be possible for someone better than me to automate the setup/authentication progress, but even if no-one does, it is not the end of the world as there are workarounds

I certainly don't have the skill set at the moment, and whilst I am trying to learn, to me it is like learning a new trade and complicated because all the information is in a foreign language which I also have to learn. So what I have done is like me using my school-boy french or latin to recognize and correct a few words, but that is a lot different from speaking fluent french or latin.

I think the situation is that some of these are impossible and others may be are possible, but beyond my skill sets.

Also do you have issues downloading magazines as well?

AFAIK, nobody is able to download magazines and nobody is able to download ebooks using the plugin.

As I understand it, the plugin was written by looking at how the libby website or libby app did things and replicating that in the plugin code. If neither of those official methods provide a way of doing something then it can't be done.

Libby used to provide a method of downloading both books and magazines. But quite some time ago, they changed their front-end website and app to do things differently, but their back-end still supported the old methods. But earlier this year, they appear to have removed these old methods.

Since there currently does not seem to be any way of downloading magazines from the website or app, I don't think this is possible (even by someone with the same skills as ping)

There is a new way of downloading ebooks from the website, so it may be possible to work out how they do it and change the plugin to do the same, but I think this is probably beyond my skill set.

They have also changed the authentication method and setup code, but again that is something that should be possible to amend, but again probably beyond my skill set. (I have not looked at that because they there ways around. May not be very convenient but they do work)

Sorry to disappoint.

@LoisGNS
Copy link

LoisGNS commented Sep 11, 2024

I downloaded the one at https://github.com/sgmoore/libby-calibre-plugin/actions/runs/10770909189/artifacts/1908277836, then followed the instructions to load from file. I closed & restarted Calibre.
I'm getting the same error messages I had before, including not being able to generate a setup code, so I can't see my holds, run searches - anything.

@sgmoore
Copy link

sgmoore commented Sep 11, 2024

I downloaded the one at https://github.com/sgmoore/libby-calibre-plugin/actions/runs/10770909189/artifacts/1908277836, then followed the instructions to load from file. I closed & restarted Calibre. I'm getting the same error messages I had before, including not being able to generate a setup code, so I can't see my holds, run searches - anything.

That's a different issue which my patched plugin does not fix. (It only fixes the ClientConnectionError/ CERTIFICATE_VERIFY_FAILED error).

See #30 (comment) for a workaround for the setup code issue. This also requires a token from the website.

The easiest way to get a token is using TheBoyLeastLikelyTo's extension (for chrome or bing) see #27 (comment) (or read the whole thread to see how to do it manually)

@p1nkyy
Copy link

p1nkyy commented Sep 11, 2024

AFAIK, nobody is able to download magazines and nobody is able to download ebooks using the plugin.

As I understand it, the plugin was written by looking at how the libby website or libby app did things and replicating that in the plugin code. If neither of those official methods provide a way of doing something then it can't be done.

Libby used to provide a method of downloading both books and magazines. But quite some time ago, they changed their front-end website and app to do things differently, but their back-end still supported the old methods. But earlier this year, they appear to have removed these old methods.

There is a new way of downloading ebooks from the website, so it may be possible to work out how they do it and change the plugin to do the same, but I think this is probably beyond my skill set.

Hold on, I can download e-books using the plugin. Have always been able to, except when there was a glitch now & then.
From the website it's even easier to download books, I just use this to manage my holds across libraries, that's all. If what you need to download books, you can open the Libby website in your browser. https://libbyapp.com/
Not talking about downloading magazines because I have never used or tried it.

@sgmoore
Copy link

sgmoore commented Sep 11, 2024

Hold on, I can download e-books using the plugin. Have always been able to, except when there was a glitch now & then.

Interesting. I have not been able to download ebooks from the plugin since the changes earlier this year (April / May) and I thought everyone was in the same position.

Just tried it again and I got the following error.

ClientBadRequestError; http_status=400, msg='HTTP Error 400: Bad Request', error_response='{"result":"title_disallowed_for_card"}''>

From the website it's even easier to download books,

When I did it from the plugin it had the option to tag the books and set custom columns for the borrowed date etc which made it more convenient as now I have to set all those manually, so I did miss this option. Wonder why downloading works for you and not me?

sgmoore added a commit to sgmoore/libby-calibre-plugin that referenced this issue Sep 11, 2024
This is an unofficial release.

Changes:

- Fix: Uses libbyapp.com domain rather than svc.overdrive.com which fixes ping#33
- Fix: Applied spicefather's fix for date time formats (see ping#17)

Also includes unreleased changes by ping including the following

- New: Rename a card
- Fix: Use a regex validator instead of input mask for Libby setup code due to wonkiness, ref ping#14
@LoisGNS
Copy link

LoisGNS commented Sep 12, 2024

Until a couple days ago I was able to see my holds & download them when available. Magazines stopped working a couple months ago, and I really miss that feature!

I was able to get the token and put it in my .json file, and there is a setup code shown in that file as well. However, when I enter it into the Libby website, it says the number "doesn't match." And I can't make the plugin generate a code.

My error message when opening the plugin:
calibre, version 6.14.1
ERROR: Unhandled exception: ClientForbiddenError: Error synchronizing data

HTTP Error 403: Forbidden

calibre 6.14.1 Portable embedded-python: True
Windows-10-10.0.19045-SP0 Windows ('64bit', 'WindowsPE')
('Windows', '10', '10.0.19045')
Python 3.10.1
Windows: ('10', '10.0.19045', 'SP0', 'Multiprocessor Free')
Interface language: None
Successfully initialized third party plugins: DeACSM (0, 0, 16) && Gather KFX-ZIP (from KFX Input) (2, 10, 0) && DeDRM (10, 0, 3) && Package KFX (from KFX Input) (2, 10, 0) && Access Aide (0, 1, 13) && Action Chains (1, 18, 19) && Annotations (1, 17, 13) && Calibre Power Search Plugin (2, 2, 0) && CalibreSpy (1, 0, 92) && Count Pages (1, 13, 6) && DOC Input (1, 0, 1) && Ebook Translator (2, 3, 3) && Editor Chains (0, 8, 3) && EpubMerge (2, 18, 0) && EpubSplit (3, 6, 0) && FanFicFare (4, 20, 0) && FictionDB (1, 4, 1) && Find Duplicates (1, 10, 9) && GetFileName (0, 2, 0) && Goodreads (1, 8, 1) && Goodreads_Rating (4, 0, 0) && Job Spy (1, 0, 205) && K2pdfopt Plugin (0, 5, 3) && KFX metadata reader (from KFX Input) (2, 10, 0) && From KFX (2, 10, 0) && KFX Input (2, 10, 0) && Set KFX metadata (from KFX Output) (2, 3, 1) && KFX Output (2, 3, 1) && Kindle Collections (1, 7, 29) && KindleUnpack - The Plugin (0, 83, 1) && Mass Search-Replace (1, 7, 1) && Media File Importer (1, 0, 27) && Modify ePub (1, 8, 2) && MultiColumnSearch (1, 0, 96) && Open With (1, 8, 1) && OverDrive Libby (0, 1, 9) && Overdrive Link (2, 57, 0) && Reading List (1, 15, 1) && Save To Format (0, 0, 6) && Search The Internet (1, 10, 4) && Similar Stories (1, 0, 58) && Standard Ebooks (1, 0, 0) && TTS to MP3 (0, 6, 0) && View Manager (1, 10, 2) && Wiki Reader (2, 2, 1) && all recipes Recipe Reader (1, 0, 2) && Overdrive Link Metadata Source (2, 57, 0)
Traceback (most recent call last):
File "calibre_plugins.overdrive_libby.libby.client", line 520, in send_request
File "urllib\request.py", line 525, in open
File "urllib\request.py", line 634, in http_response
File "urllib\request.py", line 563, in error
File "urllib\request.py", line 496, in _call_chain
File "urllib\request.py", line 643, in http_error_default
urllib.error.HTTPError: HTTP Error 403: Forbidden

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "calibre_plugins.overdrive_libby.workers", line 381, in run
File "calibre_plugins.overdrive_libby.libby.client", line 633, in sync
File "calibre_plugins.overdrive_libby.libby.client", line 540, in send_request
File "calibre_plugins.overdrive_libby.libby.errors", line 143, in process
calibre_plugins.overdrive_libby.libby.errors.ClientForbiddenError: <calibre_plugins.overdrive_libby.libby.errors.ClientForbiddenError; http_status=403, msg='HTTP Error 403: Forbidden', error_response='{"result":"missing_chip"}''>

And when trying to generate a setup code:
calibre, version 6.14.1
ERROR: Unhandled exception: ClientForbiddenError:<calibre_plugins.overdrive_libby.libby.errors.ClientForbiddenError; http_status=403, msg='HTTP Error 403: Forbidden', error_response='{"result":"missing_chip"}''>

calibre 6.14.1 Portable embedded-python: True
Windows-10-10.0.19045-SP0 Windows ('64bit', 'WindowsPE')
('Windows', '10', '10.0.19045')
Python 3.10.1
Windows: ('10', '10.0.19045', 'SP0', 'Multiprocessor Free')
Interface language: None
Successfully initialized third party plugins: DeACSM (0, 0, 16) && Gather KFX-ZIP (from KFX Input) (2, 10, 0) && DeDRM (10, 0, 3) && Package KFX (from KFX Input) (2, 10, 0) && Access Aide (0, 1, 13) && Action Chains (1, 18, 19) && Annotations (1, 17, 13) && Calibre Power Search Plugin (2, 2, 0) && CalibreSpy (1, 0, 92) && Count Pages (1, 13, 6) && DOC Input (1, 0, 1) && Ebook Translator (2, 3, 3) && Editor Chains (0, 8, 3) && EpubMerge (2, 18, 0) && EpubSplit (3, 6, 0) && FanFicFare (4, 20, 0) && FictionDB (1, 4, 1) && Find Duplicates (1, 10, 9) && GetFileName (0, 2, 0) && Goodreads (1, 8, 1) && Goodreads_Rating (4, 0, 0) && Job Spy (1, 0, 205) && K2pdfopt Plugin (0, 5, 3) && KFX metadata reader (from KFX Input) (2, 10, 0) && From KFX (2, 10, 0) && KFX Input (2, 10, 0) && Set KFX metadata (from KFX Output) (2, 3, 1) && KFX Output (2, 3, 1) && Kindle Collections (1, 7, 29) && KindleUnpack - The Plugin (0, 83, 1) && Mass Search-Replace (1, 7, 1) && Media File Importer (1, 0, 27) && Modify ePub (1, 8, 2) && MultiColumnSearch (1, 0, 96) && Open With (1, 8, 1) && OverDrive Libby (0, 1, 9) && Overdrive Link (2, 57, 0) && Reading List (1, 15, 1) && Save To Format (0, 0, 6) && Search The Internet (1, 10, 4) && Similar Stories (1, 0, 58) && Standard Ebooks (1, 0, 0) && TTS to MP3 (0, 6, 0) && View Manager (1, 10, 2) && Wiki Reader (2, 2, 1) && all recipes Recipe Reader (1, 0, 2) && Overdrive Link Metadata Source (2, 57, 0)
Traceback (most recent call last):
File "calibre_plugins.overdrive_libby.libby.client", line 520, in send_request
File "urllib\request.py", line 525, in open
File "urllib\request.py", line 634, in http_response
File "urllib\request.py", line 563, in error
File "urllib\request.py", line 496, in _call_chain
File "urllib\request.py", line 643, in http_error_default
urllib.error.HTTPError: HTTP Error 403: Forbidden

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "calibre_plugins.overdrive_libby.config", line 711, in generate_code_btn_clicked
File "calibre_plugins.overdrive_libby.libby.client", line 624, in generate_clone_code
File "calibre_plugins.overdrive_libby.libby.client", line 540, in send_request
File "calibre_plugins.overdrive_libby.libby.errors", line 143, in process
calibre_plugins.overdrive_libby.libby.errors.ClientForbiddenError: <calibre_plugins.overdrive_libby.libby.errors.ClientForbiddenError; http_status=403, msg='HTTP Error 403: Forbidden', error_response='{"result":"missing_chip"}''>

@LoisGNS
Copy link

LoisGNS commented Sep 12, 2024

I copied the token yet again and this time I can once again see my holds, etc. I'm not sure why it worked this time and not before, since I did it exactly the same way, but...

Edit: well, one thing may have been different. In trying to figure out an alternative way to get a setup code, I looked at Libby's website and then generated a pass key from the app on my phone. I then tried to figure out what I could actually do with that pass key , and couldn't find anything - couldn't even find a way to view the pass key , wherever it might be stored! But after doing that, I went into Libby again and recopied the token. After that I could again search libraries, see my holds, and even download a book. So maybe the pass key did something on the Libby side that was incorporated into the token.

Sure would be nice to be able to download magazines again, though! I absolutely appreciate your efforts so far to update the plugin.

@sgmoore
Copy link

sgmoore commented Sep 12, 2024

I copied the token yet again and this time I can once again see my holds, etc. I'm not sure why it worked this time and not before, since I did it exactly the same way, but...

I've have also seen this (where a copied token did not work and the second attempt worked). The token seems to change a lot, so it possible that it works just once and generates a new token for use the next time. So the first time I may have done something else on the website (like clicking on a link or refreshing the page) after copying the token which then used it up.

And I do remember that spicefather's original instructions did state that you should copy the token from the last get request.

Was happy enough to get a working token, so didn't investigate if this theory was valid.

@LoisGNS
Copy link

LoisGNS commented Sep 12, 2024

Yes, important to clarify that the last "get" is the one to use. I did use the last one each time (lost count of how many), but the one right after I generated the pass key from my phone worked. I don't know if there's any connection or it was just dumb luck. But if anyone else is having trouble with their token not "taking," if you have a convenient way to generate a pass key from one of your devices, it won't hurt to try.

@SeriousHornet
Copy link
Author

SeriousHornet commented Sep 13, 2024

Okay so here's my workflow as of now.

  1. Libby plug-in is set up using the Sonos speakers code I requested from Libby and giving it to the @sgmoore's plug in v0.1.9 three days ago and didn't try to tinker with it after that.
  2. I occasionally get ClientConnectionError when opening the plug-in, so I just provide a new auth token to it's json file.
  3. I currently use @TheBoyLeastLikely's chrome extension to get the code and copy it to my clipboard, and wrote small python code that puts the code from clipboard into the json file to simplify the process.
  4. I restart calibre and the plugin would work.
  5. I occasionally get ClientForbiddenError when I try to download a book but searching, holding activities are not affected just the downloading ability is.
  6. I get another code, update it and restart, it wouldn't work, and I do it one more time and it works.

Currently I would face 2 every week, and 5 frequently. I do 3 and 6 whenever needed and its going good so far.
Hope this helps someone.
Thanks.

@wiggida
Copy link

wiggida commented Sep 29, 2024

Hello, I am trying for the first time today. I am able to get the Sonos code from my phone & see the book I have borrowed. However, I am getting the error below - any suggestions?

calibre, version 7.12.0
ERROR: Unhandled exception: ClientForbiddenError: Failed to download e-book

HTTP Error 403: Forbidden

calibre 7.12 embedded-python: True
macOS-15.0-x86_64-i386-64bit Darwin ('64bit', '')
('Darwin', '24.0.0', 'Darwin Kernel Version 24.0.0: Mon Aug 12 20:54:30 PDT 2024; root:xnu-11215.1.10~2/RELEASE_X86_64')
Python 3.11.5
OSX: ('15.0', ('', '', ''), 'x86_64')
Interface language: None
EXE path: /Applications/calibre.app/Contents/MacOS/calibre
Successfully initialized third party plugins: DeACSM (0, 0, 16) && Gather KFX-ZIP (from KFX Input) (1, 50, 0) && DeDRM (10, 0, 3) && Package KFX (from KFX Input) (1, 50, 0) && KFX metadata reader (from KFX Input) (1, 50, 0) && KFX Input (1, 50, 0) && OverDrive Libby (0, 1, 9, 1)
Traceback (most recent call last):
File "calibre_plugins.overdrive_libby.libby.client", line 520, in send_request
response = req_opener.open(req, timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "urllib/request.py", line 525, in open
File "urllib/request.py", line 634, in http_response
File "urllib/request.py", line 563, in error
File "urllib/request.py", line 496, in _call_chain
File "urllib/request.py", line 643, in http_error_default
urllib.error.HTTPError: HTTP Error 403: Forbidden

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "calibre/gui2/threaded_jobs.py", line 85, in start_work
File "calibre_plugins.overdrive_libby.ebook_download", line 50, in call
downloaded_filepath = self._custom_download(
^^^^^^^^^^^^^^^^^^^^^^
File "calibre_plugins.overdrive_libby.ebook_download", line 94, in _custom_download
res_content = libby_client.fulfill_loan_file(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "calibre_plugins.overdrive_libby.libby.client", line 808, in fulfill_loan_file
res: bytes = self.send_request(
^^^^^^^^^^^^^^^^^^
File "calibre_plugins.overdrive_libby.libby.client", line 540, in send_request
ErrorHandler.process(e, error_response)
File "calibre_plugins.overdrive_libby.libby.errors", line 143, in process
raise error_info["error"](
calibre_plugins.overdrive_libby.libby.errors.ClientForbiddenError: <calibre_plugins.overdrive_libby.libby.errors.ClientForbiddenError; http_status=403, msg='HTTP Error 403: Forbidden', error_response=' ''>

@p1nkyy
Copy link

p1nkyy commented Sep 29, 2024

Hello, I am trying for the first time today. I am able to get the Sonos code from my phone & see the book I have borrowed. However, I am getting the error below - any suggestions?

It's indeed showing this way to everyone else. It's currently broken and nobody can fix it.

@wiggida
Copy link

wiggida commented Sep 29, 2024 via email

@sgmoore
Copy link

sgmoore commented Sep 29, 2024

It seems frustrating & wasteful to have to buy a kobo, to get access to library books. Oh well

Things are not quite that bad! (Don't mean to imply anything bad about the kobo, but it is not the only way to get access to libby/ overdrive books)

You can currently use the plugin to search for books and to borrow them, then switch to the loans tab and right click on the borrowed book and select 'open in libby' or 'open in overdrive' and then download the book from there. Then switch back to calibre and open the downloaded file (which is usually just the acsm file).

Not as convenient as the one click which used to work, but at least it still works.

You could of course do all your searching, borrowing and downloading on the website, so even if this plugin stops working altogether, you can still get access to library books.

@wiggida
Copy link

wiggida commented Sep 29, 2024 via email

@sgmoore
Copy link

sgmoore commented Sep 29, 2024

I'm sorting guessing here, but there may be a few reasons

The book may not be in a downloadable format ( but the only time that had happened to me is if the 'book' is actually a comic book or a magazine).

You may you have selected someone wrong on the choices option at https://libbyapp.com/interview/configure/fulfillment#presentChoice (I have mine set for no preference)

If you have already accessed the book by another method, the format may be locked until you return and re-borrow. (See https://github.com/ping/libby-calibre-plugin#format-locking for more details).

I've also read some people who had said that their library card is limited in what they can do.

What happens for me is the following

When I 'View in overdrive' (I incorrectly called it 'Open in overdrive') it takes me to a page with the book details and on the right-hand-side it shows the available formats (which could be something like "Kindle Book" "OverDrive Read" and "EPUB ebook" ) If the latter is missing, then it is possible that the book can not be downloaded,
There is also a big button 'Goto Loans' which shows all the loans and each book has two buttons called 'Download epub book' or 'read in browser' and the first one downloads the ascm file.

When I 'View in Libby', it will show me the book details and near the bottom it will have a section called 'Read with' which details the formats (which could be something like 'Libby Book', 'EPUB (DRM)' and 'Kindle') Again if EPUB is not there then the book may not be downloadable.

You then need to switch to your shelf (the books icon at the bottom) and then click on 'Manage Loan' for the book and then 'Read With' and finally 'EPUB'

@p1nkyy
Copy link

p1nkyy commented Sep 29, 2024

can you tell me how to download the ascm file, please? This step here: "and select 'open in libby' or 'open in overdrive' and then download the book from there" I can't see an option to download a file from either overdrive or libby, just an option to read on the website

This is already kind of out of topic and you should be able to solve this by visiting Libby's FAQ or Help topic or something. Your library also would have a page explaining things usually but I'll explain it for you using some screenshots:

`
Libby how 1

  1. After borrowing the book, click Manage Loan

libby how 2
2. Click Read with

libby how 3
3. Pick EPUB option.

If you don't see this meaning you're borrowing and Overdrive Read only book. Usually it's in the form of comic / graphic books. Maybe magazines as well if I'm not mistaken but I'm not sure since I don't borrow magz from OD/Libby.

@wiggida
Copy link

wiggida commented Oct 6, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants