-
Notifications
You must be signed in to change notification settings - Fork 22
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
Updated for access to current API #240
base: main
Are you sure you want to change the base?
Conversation
I'm not that experienced with JavaScript and especially Firefox addon development, so feel give criticism if my code should be inadequate.
Also, is there any possibility of bringing this addon back to the mozilla store? |
Edit: I was trying to load the wrong path. I loaded the correct one in /dist/manifest.json and it started working! Well done. :-) I pulled your changes, built them, and attempted to run the extension. Clicking the 'Download' button didn't result in any actions, though. Were there any special commands to build besides running 'make'? |
EDIT: Nevermind, I figured it out... it was just needing to use make with the Makefile... I was missing all the build tools, so installed those and got it built. |
I was able to download one book with the changes. Seems to work BUT I'm not sure if the length of the mp3 is set correctly. Not sure if this has to do with the program or something else going on. mp3split is not getting the length of the mp3 correctly. When I load in the cue file to mp3split it does not get the last few mins of the audiobook. I had to manually delete the the last line in the mp3split split file and add it with the right ending. I need to try with more audiobooks. |
I tried another audiobook and it worked fine. It must have just been something messed up with that one book. Hopefully, someone else can try a few books. |
Could you please try to download the mentioned book using the workflow described by one of the odmpy users: I must admit that I don't really have the skills to investigate mp3split problems but maybe the issue is on Libby's site? But if you can confirm, that the Overdrive Download Console results in a correct file, I might be able to have another look. |
So I'm seeing your parsing code in extractBookJson on 174 fail when splitting on '--' fails. I'm not sure why, but a small percentage of books I'm seeing having a different encoding. An example "spine" element:
My guess is in the originating code, these are used for padding and aren't intended to be delimiters? That might make the pad on the first field to be - or --, and the pad on the second field may be empty or -. I was thinking a regex to parse the path may be more useful?
Would match on the 3 groups you need and cover both forms (and potentially make additional forms easier to deal with if more encodings are found) |
src/background.ts
Outdated
const path_split = path.split("?cmpt="); | ||
const parameter = path_split[1].split("--"); | ||
parameter[0] = btoa(`{"spine":${i}}`); | ||
parameter[1] = parameter[1].substring(0,40); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This right here fails as not all paths have -- as I noted in my description.
@poehlert I added another commit which should address your issue, but my libby doesn't work right now for some reason ("you can't open this magazine using your card", but it's an audiobook?!). Could you please test if this works? |
I tested the new patch with 2 audio books, seems to work fine. |
I was using Kim Stanley Robinson Aurora. When I use the overdrive app it breaks it up into individual tracks. With the Libby Downloader it is all in one mp3 files. On linux, I'm using mp3splt-gtk 0.9.2 to split the mp3 file. It cuts off the last part of the last chapter before the credits. If I listen to the big mp3 file that was downloaded, it is fine. The problem seems to be with the mp3splt program where it is not calculating the length of the mp3 files. If I manually change the last splitpoint then it works. Chapter 7 starts at 14:28.56 and ends at 16:56:03. mp3splt is not calculating the end length of 1016 mins and 3 seconds. MediaInfo show it to be 16 h 56 min. The issue has to be with mp3splt |
I tried mp3splt from the command line and it worked fine. Go figure. Just one of those things. |
Have you tried disabling "Parse Chapters" that downloads individual files, although I'm not sure if each file corresponds to one chapter |
@poehlert @skittlesvampir Do you know of an audiobooks that was failing before the latest patch? I would like to use it for a test to see if I get any issues. I don't have a lot of audiobooks to test with. I think the two PRs are good enough to be approved. The current code is not working at all. @bookbonobo Do you think you can accept the 2 PRs? |
I pulled your latest changes and downloaded 3 books with no issues. +1 from me. |
I tried both commits, and with most books they work, however I found one that does not work with both. If I look at the URL from the networks tab of the web develope toold I find the following URL for the audio source: commit: 00bb0f7 gives the flowing error in the pop-up and the extension debugging page: here's an example spine element: {"path":"%7BC4DC40D4-5799-494D-89E5-3E207576F914%7DFmt425-Part01.mp3?cmpt=eyJzcGluZ-99a7f9d1b137072ae9e62bb76e4574ef2ce08e59SI6MH0%3D-", commit: 1141790 gives the following error in the popup: here's an example spine element: As you can see the spine elements get decoded the same way. I noticed that it seems compared to the correct URL the end of the spine one seems scrambeled. Hope this helps |
Just commenting to add more data points. I used this branch to download |
@JCroese I can't find anything unusual with the data you posted. Could you please send me the MP3 requests from the network tab, both with and without using the extension? My hypothesis is, that the URLs are generated correctly but another error is happening elsewhere in the code. |
I can second that this works |
@JCroese , @skittlesvampir ... I just wanted to chime in on this again. I have now successfully used this for quite a few downloads, but I oddly found two books that give the same errors @JCroese has reported above. EDIT: I am happy to provide any details I can, but as I'm not a web developer, I'm having a hard time finding where the actual MP3 request is. The lines marked 'media' on the network tab don't appear to have any content (whether on a book that works or not). Is it one of the lines requesting a gzip? |
@eric10k93 The request I'm looking for begins with "dewey-", then has something like "{AEBTD-3243E-122EE}.mp3?cmpt=". I need that request once from downloading with the extension and once how it gets loaded during regular playback. |
Unrelated, literally every audiobook that I borrow gives the following error when opening:
I can listen on overdrive.com in the browser but I can access them over libbyapp.com, not even on my phone. I have tried logging out and in again and verifying my card. Have I been shadowbanned? |
src/background.ts
Outdated
const parameter_1 = btoa(`{"spine":${i}}`); | ||
const parameter_2 = path_split[4].substring(0, 40); | ||
|
||
const parameter_full = encodeURIComponent(`${parameter_1}${path_split[3]}${parameter_2}`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This part fails as all paths eventually need the "--" in there. For those who have the url "scrambeled" in the decoded spine the regex makes path_split[3] sometimes "-" and other times "--"
I would suggest the following edits:
171 const regex = /(.*\.mp3)\?cmpt=([\w+/%]*)(--?)([\w%]{40})([\w%]*-?)/;
...
176 const parameter_full = encodeURIComponent(`${parameter_1}--${path_split[4]}`);
having the regex in line 171 check for 40 characters avoids the need of line 174
the edit of line 176 fixes the problem however it hard codes the "--" part of the url. There might be a neater and more dynamic way of fixing this. e.g. by checking the contents of path_split[3] or the existence of path_split[5]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@skittlesvampir, I found where the code went wrong
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@poehlert can you check if this would fix the issue with the book you couldn't download as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Skittlesvampir, I was able to download 3 books.
@eric10k93 and @skittlesvampir I started a code review that solves this issue 5 days ago, I just forgot to submit it... sorry, I'm not that familiar with github. But as I'm quite new to this let me share what I think I learned last week and how I found where the error was. and if I made a mistake please correct me! So apparently there are (at least?) two kinds of web developer tools windows. One that shows stuff that's going on with the webpage (that's the one that opens with F12) and one that shows what's going on with extension (you can open this via add-ons manager -> Debug Add-ons -> the "inspect" button from the add-on). When looking at the Networks tab of the "F12 tools" you can search for .mp3 and you'll find a (list of ) link(s) with the following format: I think/guess "long string 1" is a book identifier, "long string 2" some account/library/application identifier, and "long string 3" might be some kind of key/pass/cookie etc. code. When you look at the "Inspect tools" in the Console tab, you can read the messages the extension logs/print. and in the "Network tab" you can see the web request send/received by the extension Now to some of the code: in background.ts the function "handleBookMetaWebRequest" (~line 208) catches the response of some specific web requests including the last "case"/"else if" which is the one that contains the ToC en Spine meta data. Before issue #206 the response of this request was a json file which contained all of this information without encoding/encryption (I guess?). However now part of this json file has a large set of data which is encoded. The "extractBookJson"(~line 102) function decodes this data to get the ToC en Spine data back, it follows the steps proposed by username1233414125 [How (s)he figured out these steps is still a mystery to me if someone knows the explanation of this I'd love to hear it] next the "handleTitle" function (~line 131) extracts the required data from the ToC and Spine. In line 136 this function logs some of the source json to the console. when you look at this printed information some times the mp3 urls are shown as: [Dewey part]/[long string 1]Fmt425-Partxx.mp3?cmpt=[long string 2]--[long string 3] other times it shows: [Dewey part]/[long string 1]Fmt425-Partxx.mp3?cmpt=[first part of long string 2]-[long string 3][last part of long string 2]- in commit 00bb0f7 this second type failed because the code was looking for "--" and since this wasn't there it couldn't find al the parts needed to build the url. then in commit 1141790 this second type gave a error because even though with the new regex it did find "long string 3" however when building the url it used only "-" instead of "--"which gave an invalid url. I found this because the networks tab of the "Inspect tools" showed a url that was build like this" [Dewey part]/[long string 1]Fmt425-Partxx.mp3?cmpt=[long string 2]-[long string 3] So changing "${path_split[3]}" from line 176 into "--" will fix the problem. As path_split[3] will have the value '-' for the second case and thus generate an incomplete/incorrect url |
@JCroese What was the code change that you made? I only see 2 commits or are you waiting for @skittlesvampir to make the change? |
path info is "scrambled" in de decoded spine
@zorin1 to avoid duplicating pull request, I made one for the change to @skittlesvampir's repository, when he accepts, he can add that commit to this pull request. |
fixed incorrect url generation for mp3 files whose
@JCroese Sorry, I didn't have much time lately and didn't see your pull request. It's merged now. |
@JCroese, thanks for the tip on debugging the add-on, this is all new to me. I managed to download some of the books that weren't working with this latest code change, but I'm still running into a few that aren't working... if anyone gets the chance to look, this is the response I am getting. I'll keep poking at it myself, but web development is nothing I am familiar with. I get the response below from Media Request Response: |
@skittlesvampir - I was able to download 3 books with your latest, thank
you.
@eric10k93 - I noticed the Brian McClellan book that failed is rather
long. I was having (still have) problems downloading longer books. The
problem for me is my archaic system with small amount of RAM. I would get
1gb worth of download and then FireFox would fail, game over.
…On Wed, Sep 25, 2024 at 5:07 PM eric10k93 ***@***.***> wrote:
@JCroese <https://github.com/JCroese>, thanks for the tip on debugging
the add-on, this is all new to me. I managed to download some of the books
that weren't working with this latest code change, but I'm still running
into a few that aren't working... if anyone gets the chance to look, this
is the response I am getting. I'll keep poking at it myself, but web
development is nothing I am familiar with.
I get the response below from
[background.ts:136:14](webpack://libby-download-extension/src/background.ts)
Then somewhere after that, in parsing the data, I get the error:
Error: TypeError: n is null
Media Request Response:
Got response {"title":{"main":"In the Shadow of
Lightning","subtitle":"","collection":"Glass
Immortals"},"creator":[{"name":"Brian
McClellan","role":"author","bio":"Brian McClellan is an American epic
fantasy author from Cleveland, Ohio. He is known for his acclaimed Powder
Mage Universe and essays on the life and business of being a writer. Brian
now lives on the side of a mountain in Utah with his wife, Michele, where
he writes books and nurses a crippling video game
addiction."},{"name":"Damian
Lynch","role":"narrator","bio":""}],"description":{"full":"<p><b>From Brian
McClellan, author of <i>The Powder Mage </i>trilogy, comes the first novel
in the Glass Immortals series, <i>In the Shadow of Lightning</i>, an epic
fantasy where magic is a finite resource—and it's running
out.<br>\"Excellent worldbuilding and a truly epic narrative combine into
Brian's finest work to date. Heartily recommended to anyone who wants a new
favorite fantasy series to read.\"—Brandon Sanderson</b><br>Demir Grappo is
an outcast—he fled a life of wealth and power, abandoning his
responsibilities as a general, a governor, and a son. Now he will live out
his days as a grifter, rootless, and alone. But when his mother is brutally
murdered, Demir must return from exile to claim his seat at the head of the
family and uncover the truth that got her killed: the very power that keeps
civilization turning, godglass, is running out.<br>Now, Demir must find
allies, old friends and rivals alike, confront the powerful guild-families
who are only interested in making the most of the scraps left at the table
and uncover the invisible hand that threatens the Empire. A war is coming,
a war unlike any other. And Demir and his ragtag group of outcasts are the
only thing that stands in the way of the end of life as the world knows
it.<br><b>\"Powerful rival families, murderous conspiracies, epic battles,
larger-than-life characters, and magic.\"—Fonda Lee, author of The Green
Bone Saga<br>\"Engaging, fast-paced and epic.\"—James Islington, author of
<i>In The Shadow of What Was Lost</i><br>\"Clever, fun, and by turns
beautifully bloody, <i>In the Shadow of Lightning</i> hits like a bolt
through a stained glass window.\"—Megan E. O'Keefe, author of <i>Chaos
Vector</i></b></p>","short":"<p><b>From Brian McClellan, author of <i>The
Powder Mage </i>trilogy, comes the first novel in the Glass Immortals
series, <i>In the Shadow of Lightning</i>, an epic fantasy where magic is a
finite resource—and it's running out.<br>\"Excellent worldbuilding and a
truly epic narrative combine into Brian's finest work to date. Heartily
recommended to anyone who wants a new favorite fantasy series to
read.\"—Brandon Sanderson</b><br>Demir Grappo is an outcast—he fled a life
of wealth and power, abandoning his responsibilities as a general, a
governor, and a son. Now he will live out his days as a grifter, rootless,
and alone. But when his mother is brutally murdered, Demir must return from
exile to claim his seat at the head of the family and uncover the truth
that got her killed: the very power that keeps civilization turning,
godglass, is running out.<br>Now, Demir must find allies, old friends and
rivals alike, confront the powerful guild-families who are
only...</p>"},"language":"en","cover":{"front":{"media-type":"image/jpeg","-odread-file-bytes":87106,"-odread-width":510,"-odread-height":680,"-odread-aspect-ratio":0.75,"-odread-color":[1,0,0],"-odread-file-last-modified":"2024-03-25T15:24:19+00:00"}},"nav":{"toc":[{"title":"In
the Shadow of
Lightning","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part01.mp3"},{"title":"Dedication","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part01.mp3#31"},{"title":"A
Brief Glossary of Common
Godglass","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part01.mp3#38"},{"title":"Prologue","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part01.mp3#121"},{"title":"Chapter
1","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part01.mp3#2935"},{"title":"Chapter
2","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part02.mp3"},{"title":"Chapter
3","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part02.mp3#1708"},{"title":"Chapter
4","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part03.mp3"},{"title":"Chapter
5","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part03.mp3#1756"},{"title":"Chapter
6","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part04.mp3"},{"title":"Chapter
7","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part04.mp3#1710"},{"title":"Chapter
8","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part05.mp3"},{"title":"Chapter
9","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part05.mp3#1157"},{"title":"Chapter
10","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part05.mp3#2571"},{"title":"Chapter
11","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part06.mp3"},{"title":"Chapter
12","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part06.mp3#1735"},{"title":"Chapter
13","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part06.mp3#3108"},{"title":"Chapter
14","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part07.mp3"},{"title":"Chapter
15","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part07.mp3#2212"},{"title":"Chapter
16","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part08.mp3"},{"title":"Chapter
17","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part08.mp3#1324"},{"title":"Chapter
18","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part08.mp3#2573"},{"title":"Chapter
19","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part09.mp3"},{"title":"Chapter
20","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part09.mp3#1578"},{"title":"Chapter
21","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part09.mp3#2673"},{"title":"Chapter
22","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part10.mp3"},{"title":"Chapter
23","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part10.mp3#1500"},{"title":"Chapter
24","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part10.mp3#3309"},{"title":"Chapter
25","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part11.mp3"},{"title":"Chapter
26","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part11.mp3#1136"},{"title":"Chapter
27","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part11.mp3#2763"},{"title":"Chapter
28","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part12.mp3"},{"title":"Chapter
29","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part12.mp3#1558"},{"title":"Chapter
30","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part12.mp3#2522"},{"title":"Chapter
31","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part13.mp3"},{"title":"Chapter
32","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part13.mp3#1133"},{"title":"Chapter
33","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part13.mp3#2675"},{"title":"Chapter
34","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part14.mp3"},{"title":"Chapter
35","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part14.mp3#944"},{"title":"Chapter
36","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part14.mp3#2084"},{"title":"Chapter
37","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part15.mp3"},{"title":"Chapter
38","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part15.mp3#1375"},{"title":"Chapter
39","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part15.mp3#3479"},{"title":"Chapter
40","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part16.mp3"},{"title":"Chapter
41","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part16.mp3#1689"},{"title":"Chapter
42","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part16.mp3#2720"},{"title":"Chapter
43","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part17.mp3"},{"title":"Chapter
44","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part17.mp3#1149"},{"title":"Chapter
45","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part17.mp3#2262"},{"title":"Chapter
46","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part18.mp3"},{"title":"Chapter
47","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part18.mp3#1320"},{"title":"Chapter
48","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part18.mp3#2383"},{"title":"Chapter
49","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part18.mp3#3427"},{"title":"Chapter
50","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part19.mp3"},{"title":"Chapter
51","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part19.mp3#1348"},{"title":"Chapter
52","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part19.mp3#2818"},{"title":"Chapter
53","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part20.mp3"},{"title":"Chapter
54","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part20.mp3#1288"},{"title":"Chapter
55","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part20.mp3#1848"},{"title":"Chapter
56","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part20.mp3#3116"},{"title":"Chapter
57","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part21.mp3"},{"title":"Chapter
58","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part21.mp3#1110"},{"title":"Chapter
59","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part21.mp3#2482"},{"title":"Chapter
60","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part21.mp3#3670"},{"title":"Chapter
61","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part22.mp3"},{"title":"Chapter
62","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part22.mp3#422"},{"title":"Epilogue","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part22.mp3#2133"},{"title":"Closing","path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part22.mp3#3091"}]},"rendition-format":"audiobook","-odread-buid":"1a9d98f4a62b56463dacacb6db711f9b","-odread-crid":["96c79e87-2f00-423e-bc89-25b9698e4f21"],"spine":[{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part01.mp3?cmpt=eyJzcGluZ9eb016f6405dd9771c103e6a79aca96833405c3bSI6MH0%3D--","media-type":"audio/mpeg","audio-duration":4607.52975,"audio-bitrate":64,"-odread-spine-position":0,"-odread-file-bytes":36860238,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part01.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part02.mp3?cmpt=eyJzcGluZ714dff2f1e513a64c41cf89167c68c13d33581c7SI6MX0%3D--","media-type":"audio/mpeg","audio-duration":3724.2775,"audio-bitrate":64,"-odread-spine-position":1,"-odread-file-bytes":29794220,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part02.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part03.mp3?cmpt=eyJzcGluZ59f9dff11bc2c7bec0440d19a336c4b74fd23ad9SI6Mn0%3D--","media-type":"audio/mpeg","audio-duration":3196.813,"audio-bitrate":64,"-odread-spine-position":2,"-odread-file-bytes":25574504,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part03.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part04.mp3?cmpt=eyJzcGluZed70959048cd1f012d3f393c35fcb85a1f425717SI6M30%3D--","media-type":"audio/mpeg","audio-duration":3570.808125,"audio-bitrate":64,"-odread-spine-position":3,"-odread-file-bytes":28566465,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part04.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part05.mp3?cmpt=eyJzcGluZ8c80aeab68ed14e190a16d7922201e8182b4310bSI6NH0%3D--","media-type":"audio/mpeg","audio-duration":4462.02775,"audio-bitrate":64,"-odread-spine-position":4,"-odread-file-bytes":35696222,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part05.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part06.mp3?cmpt=eyJzcGluZf9e5cb9457673ebf3b15295d4c0fb7b437a7dedcSI6NX0%3D--","media-type":"audio/mpeg","audio-duration":4195.448125,"audio-bitrate":64,"-odread-spine-position":5,"-odread-file-bytes":33563585,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part06.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part07.mp3?cmpt=eyJzcGluZe8968d196c9bed09b0b530b2d9ea2182df992279SI6Nn0%3D--","media-type":"audio/mpeg","audio-duration":3499.6505,"audio-bitrate":64,"-odread-spine-position":6,"-odread-file-bytes":27997204,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part07.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part08.mp3?cmpt=eyJzcGluZ28a145948c03b5a10ac83dc4ecd0209584a791f8SI6N30%3D--","media-type":"audio/mpeg","audio-duration":4214.7265,"audio-bitrate":64,"-odread-spine-position":7,"-odread-file-bytes":33717812,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part08.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part09.mp3?cmpt=eyJzcGluZbf8a9a9b4567ee5840c438f81a2d708d7a141b83SI6OH0%3D--","media-type":"audio/mpeg","audio-duration":4402.155,"audio-bitrate":64,"-odread-spine-position":8,"-odread-file-bytes":35217240,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part09.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part10.mp3?cmpt=eyJzcGluZd35c2e8f2526ab6287292e7c91f3a7a8112f9905SI6OX0%3D--","media-type":"audio/mpeg","audio-duration":4257.332125,"audio-bitrate":64,"-odread-spine-position":9,"-odread-file-bytes":34058657,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part10.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part11.mp3?cmpt=eyJzcGluZ5ad72f99b7feef5ae6b8e9e8a6d2ca546ca00bd3SI6MTB9--","media-type":"audio/mpeg","audio-duration":4533.733875,"audio-bitrate":64,"-odread-spine-position":10,"-odread-file-bytes":36269871,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part11.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part12.mp3?cmpt=eyJzcGluZ39308eb8228478bc41ecd081ea43568969711c39SI6MTF9--","media-type":"audio/mpeg","audio-duration":4363.885625,"audio-bitrate":64,"-odread-spine-position":11,"-odread-file-bytes":34911085,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part12.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part13.mp3?cmpt=eyJzcGluZde729831e80977d627688dcb5056239fa5254e62SI6MTJ9--","media-type":"audio/mpeg","audio-duration":4336.666,"audio-bitrate":64,"-odread-spine-position":12,"-odread-file-bytes":34693328,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part13.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part14.mp3?cmpt=eyJzcGluZae4f291aa0c35381f29f097fbe40c4774da3a862SI6MTN9--","media-type":"audio/mpeg","audio-duration":3665.76325,"audio-bitrate":64,"-odread-spine-position":13,"-odread-file-bytes":29326106,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part14.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part15.mp3?cmpt=eyJzcGluZd699d819cdeb40d57c66921dbb06ac2ba278ebb4SI6MTR9--","media-type":"audio/mpeg","audio-duration":4615.653875,"audio-bitrate":64,"-odread-spine-position":14,"-odread-file-bytes":36925231,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part15.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part16.mp3?cmpt=eyJzcGluZ6b2c66f20721771bf51d42d1d766d22edb736a51SI6MTV9--","media-type":"audio/mpeg","audio-duration":4053.133,"audio-bitrate":64,"-odread-spine-position":15,"-odread-file-bytes":32425064,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part16.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part17.mp3?cmpt=eyJzcGluZfcf74bac62f86f22787f9a7a63ef37f00ed62786SI6MTZ9--","media-type":"audio/mpeg","audio-duration":3777.071,"audio-bitrate":64,"-odread-spine-position":16,"-odread-file-bytes":30216568,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part17.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part18.mp3?cmpt=eyJzcGluZ016b2030fbd02ea00e98b161658fb9a6246cec33SI6MTd9--","media-type":"audio/mpeg","audio-duration":4651.8595,"audio-bitrate":64,"-odread-spine-position":17,"-odread-file-bytes":37214876,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part18.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part19.mp3?cmpt=eyJzcGluZbff5808e92961d2e1c8067c0d028acc82de62261SI6MTh9--","media-type":"audio/mpeg","audio-duration":3532.12075,"audio-bitrate":64,"-odread-spine-position":18,"-odread-file-bytes":28256966,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part19.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part20.mp3?cmpt=eyJzcGluZ56b19a799c36fe1c74849c858ef7b5df7dee8543SI6MTl9--","media-type":"audio/mpeg","audio-duration":4514.664375,"audio-bitrate":64,"-odread-spine-position":19,"-odread-file-bytes":36117315,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part20.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part21.mp3?cmpt=eyJzcGluZ9ae59e5dc595ebd7eaa867a545ab0c9449d8cdf2SI6MjB9--","media-type":"audio/mpeg","audio-duration":4319.00725,"audio-bitrate":64,"-odread-spine-position":20,"-odread-file-bytes":34552058,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part21.mp3"},{"path":"%7B96C79E87-2F00-423E-BC89-25B9698E4F21%7DFmt425-Part22.mp3?cmpt=eyJzcGluZa4728fc869d4aac1ff142b9656141ad7dc42c388SI6MjF9--","media-type":"audio/mpeg","audio-duration":3136.470125,"audio-bitrate":64,"-odread-spine-position":21,"-odread-file-bytes":25091761,"-odread-original-path":"{96C79E87-2F00-423E-BC89-25B9698E4F21}Fmt425-Part22.mp3"}],"-odread-tan":1,"-odread-bank-scope":"title-1a9d98f4a","-odread-bank-verification-token":"93a0ba822fbff460e0da76980bff5aee61c7a70b752d6222","-odread-anchor":null,"-odread-furbish-uri":"/_d/cover/buid/1a9d98f4a62b56463dacacb6db711f9b","-odread-cover-color":[1,0,0],"-odread-cover-ratio":0.75,"-odread-msg-access":"f","-odread-msg-expires":1727654399,"-odread-msg-sync":true,"-odread-bonafides-m":"eyJ0aW1lIjoxNzI3MzAxMjgzLjc3MDk3NiwidGhlbWUiOiJkZXdleSIsImV4cGlyZXMiOjE3Mjc2NTQzOTksImFjY2VzcyI6ImYiLCJ0ZGF0YSI6eyJjb2RleCI6eyJ0aXRsZSI6eyJ0aXRsZUlkIjoiNjUyNDY5NiIsInNsdWciOiI2NTI0Njk2IiwiY292ZXIiOnsiaW1hZ2VVUkwiOiJodHRwczovL2xpYmJ5YXBwLmNvbS9jb3ZlcnMvcmVzaXplP3R5cGU9YXV0byZ3aWR0aD01MzYmcXVhbGl0eT04MCZmb3JjZT10cnVlJmhlaWdodD01MzYmdXJsPSUyRkltYWdlVHlwZS00MDAlMkYxNDkzLTElMkYlMjU3Qjk2Qzc5RTg3LTJGMDAtNDIzRS1CQzg5LTI1Qjk2OThFNEYyMSUyNTdESU1HNDAwLkpQRyIsImNvbG9yIjoiIzAwMDAwMCJ9fSwibG9hbiI6eyJwc25LZXkiOiI2NzA5NTU4Mi02NTI0Njk2Iiwic2x1ZyI6IjY3MDk1NTgyLTY1MjQ2OTYifSwibGlicmFyeSI6eyJrZXkiOiJ1dGFoc29ubGluZWxpYnJhcnktZGF2aXNjb3VudHkiLCJuYW1lIjoiQmVlaGl2ZSBMaWJyYXJ5IENvbnNvcnRpdW0iLCJsb2dvVVJMIjoiaHR0cHM6Ly90aHVuZGVyLmNkbi5vdmVyZHJpdmUuY29tL2xvZ28tcmVzaXplZC8xNTA2PzE1ODk5OTEzOTUiLCJjb2xvcnMiOlsiIzAwNjRkMyIsIiNmNjUxMWQiXX19LCJkZXdleS11cmwiOiJodHRwczovL2xpYmJ5YXBwLmNvbSIsInNwZWMiOiJWMjQiLCJ0aHVuZGVyIjoiaHR0cHM6Ly90aHVuZGVyLmFwaS5vdmVyZHJpdmUuY29tIn0sImdyYW50cyI6WyJyZWFkIl0sImF1dGhfdXJsIjoiaHR0cHM6Ly9zZW50cnkubGliYnlhcHAuY29tL29wZW4vYXV0aC9lZTU1ZWE1Mi04N2UyLTRjOTItOWEzMi03MDAzZDVjNGMwMWMiLCJ1cmkiOiJodHRwczovL2xpc3Rlbi5saWJieWFwcC5jb20iLCJidWlkIjoiMWE5ZDk4ZjRhNjJiNTY0NjNkYWNhY2I2ZGI3MTFmOWIiLCJ0b2tlbiI6IjkzYTBiYTgyMmZiZmY0NjBlMGRhNzY5ODBiZmY1YWVlNjFjN2E3MGI3NTJkNjIyMiIsInN5bmMiOjF9","-odread-bonafides-s":"3605ef58b8359d61f73582acf48ce4d33b8ee2db","-odread-bonafides-d":"eyJvdXRsZXQiOiJsaXN0ZW4iLCJ0b2tlbiI6IjkzYTBiYTgyMmZiZmY0NjBlMGRhNzY5ODBiZmY1YWVlNjFjN2E3MGI3NTJkNjIyMiIsImFjY2VzcyI6ImYiLCJleHBpcmVzIjoxNzI3NjU0Mzk5LCJ0aGVtZSI6ImRld2V5Iiwic3luYyI6MSwicHBhcmFtIjoibGliLTMxNSIsInRkYXRhIjp7ImNvZGV4Ijp7InRpdGxlIjp7InRpdGxlSWQiOiI2NTI0Njk2Iiwic2x1ZyI6IjY1MjQ2OTYiLCJjb3ZlciI6eyJpbWFnZVVSTCI6Imh0dHBzOi8vbGliYnlhcHAuY29tL2NvdmVycy9yZXNpemU/dHlwZT1hdXRvJndpZHRoPTUzNiZxdWFsaXR5PTgwJmZvcmNlPXRydWUmaGVpZ2h0PTUzNiZ1cmw9JTJGSW1hZ2VUeXBlLTQwMCUyRjE0OTMtMSUyRiUyNTdCOTZDNzlFODctMkYwMC00MjNFLUJDODktMjVCOTY5OEU0RjIxJTI1N0RJTUc0MDAuSlBHIiwiY29sb3IiOiIjMDAwMDAwIn19LCJsb2FuIjp7InBzbktleSI6IjY3MDk1NTgyLTY1MjQ2OTYiLCJzbHVnIjoiNjcwOTU1ODItNjUyNDY5NiJ9LCJsaWJyYXJ5Ijp7ImtleSI6InV0YWhzb25saW5lbGlicmFyeS1kYXZpc2NvdW50eSIsIm5hbWUiOiJCZWVoaXZlIExpYnJhcnkgQ29uc29ydGl1bSIsImxvZ29VUkwiOiJodHRwczovL3RodW5kZXIuY2RuLm92ZXJkcml2ZS5jb20vbG9nby1yZXNpemVkLzE1MDY/MTU4OTk5MTM5NSIsImNvbG9ycyI6WyIjMDA2NGQzIiwiI2Y2NTExZCJdfX0sImRld2V5LXVybCI6Imh0dHBzOi8vbGliYnlhcHAuY29tIiwic3BlYyI6IlYyNCIsInRodW5kZXIiOiJodHRwczovL3RodW5kZXIuYXBpLm92ZXJkcml2ZS5jb20ifSwidGltZSI6MTcyNzMwMTI4MywiZ3JhbnRzIjpbInJlYWQiXSwiYXV0aF91cmwiOiJodHRwczovL3NlbnRyeS5saWJieWFwcC5jb20vb3Blbi9hdXRoL2VlNTVlYTUyLTg3ZTItNGM5Mi05YTMyLTcwMDNkNWM0YzAxYyIsImJ1aWQiOiIxYTlkOThmNGE2MmI1NjQ2M2RhY2FjYjZkYjcxMWY5YiIsIl9jIjoiMTcyNzMwMTI4NDAwOSJ9--46c7ebf02b06547707e5678a87e1ce3e15271d9f","-odread-bonafides-p":"lib-315","-odread-uilinks":{"HELPCOMPAT":"
http://help.overdrive.com/customer/portal/articles/1481258"}}
background.ts:136:14
—
Reply to this email directly, view it on GitHub
<#240 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A725CX7MA7AGYWL4LQK7CCTZYMXYNAVCNFSM6AAAAABM4SSXJGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNZVGM2DSNBUG4>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
@eric10k93 it seems like you encountered yet another way of scrambling the url, not yet handled by the previous regex. Because for this url version there is no "-" or "--" in the middle, path_split[4] will be empty and thus the error is raised. As I have no smart idea right now how to edit the regex, to include this option as well, adding an if statement to catch this version serves as a quick fix. commited here: bc100df tested on books with all 3 url versions |
@JCroese, awesome! I just tested this fix with 3 books I had that were failing and they worked great! Thanks! |
Added if statement to handle urls ending with "--"
Is it just me or did they change the place of the spine information again? Cause for me the extension is currently not working, the script fails when trying to find the embedded encoded string |
Not working for me too.
19:21:18.472 Starting network listener... mp3-with-cue.ts:127:6
19:21:18.477 Reloading current tab mp3-with-cue.ts:145:49
19:21:18.514 Starting download mp3-with-cue.ts:19:42
19:21:20.873 Error: TypeError: t.exec(...) is null mp3-with-cue.ts:103:35
19:21:23.318 Still waiting for state {} mp3-with-cue.ts:98:108
Mike King
…On Wed, Oct 2, 2024 at 2:19 AM JCroese ***@***.***> wrote:
Is it just me or did they change the place of the spine information again?
Cause for me the extension is currently not working, the script fails when
trying to find the embedded encoded string
—
Reply to this email directly, view it on GitHub
<#240 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A725CXYXOOJSVNA2MIIJ65DZZONB3AVCNFSM6AAAAABM4SSXJGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOBXG44DQOJTGY>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
@poehlert @skittlesvampir @JCroese Anyone figure out a solution yet? |
@zorin1 nothing solid yet. The only thing I might have found is that the html response of the https://dewey-[string1].listen.libbyapp.com/?m=[string2] request has a <script> section which half way through has some encoded data starting with "window.eData=[" that might be some type of comma separated values, However I have know clue at all what type of encoding was used. |
Looks to me like they just straight blocked the Firefox browser... I keep getting the error "access to this magazine is not allowed with your active library card"... funny error, since they are audiobooks, not magazines, and I can access everything fine on Edge browser. EDIT: Scratch that... I get the error regardless of browser. |
@eric10k93 is there any way I can contact you in private? |
I just made sure my email is public on my profile. Feel free to contact me there first. |
I'm not that experienced with JavaScript and especially Firefox addon development, so feel give criticism if my code should be inadequate.
I've tested this code with 5 different libby audiobooks and they all downloaded flawlessly. This pull request should resolve #206 completely, for now.