[Bug]: A ; seems to be being added to the custom metadata search #2590

Open
opened 2026-02-20 10:20:49 -05:00 by deekerman · 47 comments
Owner

Originally created by @alexander-paterson on GitHub (Feb 19, 2025).

What happened?

I'm using abs-tract to add in extra metadata providers. The search being sent to abs-tract appears to have a ; before the word query.

I created a but report in abs-tract's GitHub and the dev said it appears to be an ABS issue and to create a bug here.

What did you expect to happen?

After adding a metadata provider through abs-tract I should be able to get search results.

Steps to reproduce the issue

  1. Create a metadata provider pointing to abs-tract
  2. Perform a search, no results are returned
  3. Check the logs and you can see a ; before the word query

Audiobookshelf version

2.19.3

How are you running audiobookshelf?

Docker

What OS is your Audiobookshelf server hosted from?

Linux

If the issue is being seen in the UI, what browsers are you seeing the problem on?

None

Logs

2025-02-05T21:34:37.079432255Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/us/search?mediaType=book&;query=Die+Trying&author=Lee+Child" method: "GET" path: "/kindle/us/search" remoteIP: "172.23.0.1:59900" proto: "HTTP/1.1" requestID: "5c2b925ac873/rZ2rQH0VgA-000001" scheme: "http" header: {accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2" connection: "keep-alive"}} httpResponse: {status: 200 bytes: 3511 elapsed: 3524.220387}

Additional Notes

No response

Originally created by @alexander-paterson on GitHub (Feb 19, 2025). ### What happened? I'm using abs-tract to add in extra metadata providers. The search being sent to abs-tract appears to have a `;` before the word query. I created a but report in [abs-tract's GitHub](https://github.com/ahobsonsayers/abs-tract/issues/19) and the dev said it appears to be an ABS issue and to create a bug here. ### What did you expect to happen? After adding a metadata provider through abs-tract I should be able to get search results. ### Steps to reproduce the issue 1. Create a metadata provider pointing to abs-tract 2. Perform a search, no results are returned 3. Check the logs and you can see a `;` before the word query ### Audiobookshelf version 2.19.3 ### How are you running audiobookshelf? Docker ### What OS is your Audiobookshelf server hosted from? Linux ### If the issue is being seen in the UI, what browsers are you seeing the problem on? None ### Logs ```shell 2025-02-05T21:34:37.079432255Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/us/search?mediaType=book&;query=Die+Trying&author=Lee+Child" method: "GET" path: "/kindle/us/search" remoteIP: "172.23.0.1:59900" proto: "HTTP/1.1" requestID: "5c2b925ac873/rZ2rQH0VgA-000001" scheme: "http" header: {accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2" connection: "keep-alive"}} httpResponse: {status: 200 bytes: 3511 elapsed: 3524.220387} ``` ### Additional Notes _No response_
Author
Owner

@advplyr commented on GitHub (Feb 19, 2025):

I'm not able to reproduce this. Do you get this result when you use other search text?

@advplyr commented on GitHub (Feb 19, 2025): I'm not able to reproduce this. Do you get this result when you use other search text?
Author
Owner

@alexander-paterson commented on GitHub (Feb 20, 2025):

Okay, this is weird.

I have Goodreads, Kindle US and Kindle UK set up in abs-tract

Looking at the logs, they all have the same ; in the URL sent to abs-tract

2025-02-20T09:10:29.704551625Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/uk/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/kindle/uk/search" remoteIP: "172.23.0.1:48080" proto: "HTTP/1.1" requestID: "c70c485fc52f/6Wt7NidunR-000001" scheme: "http" header: {connection: "keep-alive" accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2"}} httpResponse: {status: 200 bytes: 2111 elapsed: 2909.317652} 
2025-02-20T09:11:54.665493131Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/us/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/kindle/us/search" remoteIP: "172.23.0.1:33950" proto: "HTTP/1.1" requestID: "c70c485fc52f/6Wt7NidunR-000002" scheme: "http" header: {accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2" connection: "keep-alive"}} httpResponse: {status: 200 bytes: 3544 elapsed: 1027.499949} 
2025-02-20T09:12:00.877708181Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/goodreads/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/goodreads/search" remoteIP: "172.23.0.1:33950" proto: "HTTP/1.1" requestID: "c70c485fc52f/6Wt7NidunR-000003" scheme: "http" header: {accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2" connection: "keep-alive"}} httpResponse: {status: 200 bytes: 11087 elapsed: 2887.215947}

The two Kindle ones don't return any results in ABS, but Goodreads does.

If I take all three URL's, copy them and remove the ; then they all return results.

@alexander-paterson commented on GitHub (Feb 20, 2025): Okay, this is weird. I have Goodreads, Kindle US and Kindle UK set up in abs-tract Looking at the logs, they all have the same `;` in the URL sent to abs-tract ``` 2025-02-20T09:10:29.704551625Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/uk/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/kindle/uk/search" remoteIP: "172.23.0.1:48080" proto: "HTTP/1.1" requestID: "c70c485fc52f/6Wt7NidunR-000001" scheme: "http" header: {connection: "keep-alive" accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2"}} httpResponse: {status: 200 bytes: 2111 elapsed: 2909.317652} 2025-02-20T09:11:54.665493131Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/us/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/kindle/us/search" remoteIP: "172.23.0.1:33950" proto: "HTTP/1.1" requestID: "c70c485fc52f/6Wt7NidunR-000002" scheme: "http" header: {accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2" connection: "keep-alive"}} httpResponse: {status: 200 bytes: 3544 elapsed: 1027.499949} 2025-02-20T09:12:00.877708181Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/goodreads/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/goodreads/search" remoteIP: "172.23.0.1:33950" proto: "HTTP/1.1" requestID: "c70c485fc52f/6Wt7NidunR-000003" scheme: "http" header: {accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2" connection: "keep-alive"}} httpResponse: {status: 200 bytes: 11087 elapsed: 2887.215947} ``` The two Kindle ones don't return any results in ABS, but Goodreads does. If I take all three URL's, copy them and remove the `;` then they all return results.
Author
Owner

@ahobsonsayers commented on GitHub (Feb 20, 2025):

Hey! Yeah I am also having problems replicating this with ABS sadly 😞

The reason I think this is a (possible) ABS bug rather than to do with abs-tract, is that the lines printed are simply logs of exactly the requests made to the abs-stract server - which in theory means if that is what is being logged, the request is incorrectly being made.

Worth checking (although I believe it should have no impact), you mention you are running ABS using docker, and I assume you are running abs-tract using docker, but in the logs I see an IP address being used rather than a container name to connect them. Are you using a host network?

@ahobsonsayers commented on GitHub (Feb 20, 2025): Hey! Yeah I am also having problems replicating this with ABS sadly 😞 The reason I think this is a (possible) ABS bug rather than to do with abs-tract, is that the lines printed are simply logs of exactly the requests made to the abs-stract server - which in theory means if that is what is being logged, the request is incorrectly being made. Worth checking (although I believe it should have no impact), you mention you are running ABS using docker, and I assume you are running abs-tract using docker, but in the logs I see an IP address being used rather than a container name to connect them. Are you using a host network?
Author
Owner

@alexander-paterson commented on GitHub (Feb 21, 2025):

The logs I posted were from abs-tract, this is what I see in ABS's logs

[2025-02-21 09:41:55.484] ERROR: Error searching Custom provider 'custom-4ef706d2-7f61-4f50-ab79-60dc94f66ea0': Error: sanitizeHtml: input must be a string
    at Object.sanitize (/server/utils/htmlSanitizer.js:12:11)
    at /server/providers/CustomProviderAdapter.js:78:36
    at Array.map (<anonymous>)
    at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:70:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21)
    at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21)
[2025-02-21 09:42:22.762] ERROR: Error searching Custom provider 'custom-460512ec-f1bf-410a-a1d2-c77597f3040f': Error: sanitizeHtml: input must be a string
    at Object.sanitize (/server/utils/htmlSanitizer.js:12:11)
    at /server/providers/CustomProviderAdapter.js:78:36
    at Array.map (<anonymous>)
    at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:70:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21)
    at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21)
@alexander-paterson commented on GitHub (Feb 21, 2025): The logs I posted were from abs-tract, this is what I see in ABS's logs ``` [2025-02-21 09:41:55.484] ERROR: Error searching Custom provider 'custom-4ef706d2-7f61-4f50-ab79-60dc94f66ea0': Error: sanitizeHtml: input must be a string at Object.sanitize (/server/utils/htmlSanitizer.js:12:11) at /server/providers/CustomProviderAdapter.js:78:36 at Array.map (<anonymous>) at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:70:20) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21) at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21) [2025-02-21 09:42:22.762] ERROR: Error searching Custom provider 'custom-460512ec-f1bf-410a-a1d2-c77597f3040f': Error: sanitizeHtml: input must be a string at Object.sanitize (/server/utils/htmlSanitizer.js:12:11) at /server/providers/CustomProviderAdapter.js:78:36 at Array.map (<anonymous>) at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:70:20) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21) at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21) ```
Author
Owner

@nichwall commented on GitHub (Feb 22, 2025):

Is it possible that something between ABS and your abs-tract instance is changing the request to include a semicolon? In doing some research, it looks like older versions of reverse proxies and some server implementations may use a semicolon as the delimiter instead of an ampersand, so could be something rewriting the path?

https://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2

If I take all three URL's, copy them and remove the ; then they all return results.

How did you test this? Was this through a browser or using something like curl?
curl -v "http://192.168.8.219:5555/kindle/uk/search?mediaType=book&query=Cujo&author=Stephen+King"

Either way, we should add logging of the actual query that ABS is generating to match the other provider debug printouts. I just opened https://github.com/advplyr/audiobookshelf/pull/4034 to add this logging.

@nichwall commented on GitHub (Feb 22, 2025): Is it possible that something between ABS and your abs-tract instance is changing the request to include a semicolon? In doing some research, it looks like older versions of reverse proxies and some server implementations may use a semicolon as the delimiter instead of an ampersand, so could be something rewriting the path? https://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 > If I take all three URL's, copy them and remove the ; then they all return results. How did you test this? Was this through a browser or using something like curl? `curl -v "http://192.168.8.219:5555/kindle/uk/search?mediaType=book&query=Cujo&author=Stephen+King"` Either way, we should add logging of the actual query that ABS is generating to match the other provider debug printouts. I just opened https://github.com/advplyr/audiobookshelf/pull/4034 to add this logging.
Author
Owner

@alexander-paterson commented on GitHub (Feb 22, 2025):

I just copied the URL, pasted it into the browser, removed the ; and pressed enter. I then got a json response in my browser.

Image

I'm not aware of anything that would mess with the request. I'm just confused as to why the Goodreads one works but the two Kindle ones don't.

They were working at one point back when I initially set up abs-tract a few months ago.

@alexander-paterson commented on GitHub (Feb 22, 2025): I just copied the URL, pasted it into the browser, removed the `;` and pressed enter. I then got a json response in my browser. ![Image](https://github.com/user-attachments/assets/9169d483-19c6-4917-a4d3-9864701c1536) I'm not aware of anything that would mess with the request. I'm just confused as to why the Goodreads one works but the two Kindle ones don't. They were working at one point back when I initially set up abs-tract a few months ago.
Author
Owner

@Vito0912 commented on GitHub (Feb 23, 2025):

I just tested it with both Goodreads and Kindle using
https://provider.vito0912.de/kindle/uk and https://localhost:5555/kindle/uk, neither of which sent a ";".

I also got the error:

Error searching Custom provider 'custom-f2e3bf15-3ebd-4258-b724-f65d058c8e4f': Error: sanitizeHtml: input must be a string at Object.sanitize (/server/utils/htmlSanitizer.js:12:11) at /server/providers/CustomProviderAdapter.js:78:36 at Array.map (<anonymous>) at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:70:20) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21) at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21)

I assume this is because my provider returns a 500 error most of the time for Kindle (because Amazon is Amazon). Goodreads works. However, when I enabled logging in my proxy, I saw that it sent the correct data, and since other custom providers work with parsing, I assume this will work too.

How did you add the provider in ABS? Perhaps there is a character that ABS does not expect which causes it to panic.

@Vito0912 commented on GitHub (Feb 23, 2025): I just tested it with both Goodreads and Kindle using `https://provider.vito0912.de/kindle/uk` and `https://localhost:5555/kindle/uk`, neither of which sent a ";". I also got the error: ``` Error searching Custom provider 'custom-f2e3bf15-3ebd-4258-b724-f65d058c8e4f': Error: sanitizeHtml: input must be a string at Object.sanitize (/server/utils/htmlSanitizer.js:12:11) at /server/providers/CustomProviderAdapter.js:78:36 at Array.map (<anonymous>) at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:70:20) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21) at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21) ``` I assume this is because my provider returns a 500 error most of the time for Kindle (because Amazon is Amazon). Goodreads works. However, when I enabled logging in my proxy, I saw that it sent the correct data, and since other custom providers work with parsing, I assume this will work too. How did you add the provider in ABS? Perhaps there is a character that ABS does not expect which causes it to panic.
Author
Owner

@alexander-paterson commented on GitHub (Feb 23, 2025):

This is what I have in ABS

Image

@alexander-paterson commented on GitHub (Feb 23, 2025): This is what I have in ABS ![Image](https://github.com/user-attachments/assets/d45770e3-776c-4f49-aa75-31fb8b04a002)
Author
Owner

@Vito0912 commented on GitHub (Feb 23, 2025):

If you want, you could try using https://provider.vito0912.de/kindle/uk or https://provider.vito0912.de/goodreads with abs as the Auth value? I will enable logging/access log and check if ; is sent. Then we at least could sort out if this is something with your setup of abs-tract or/and abs.
Kindle will most likley not return anything

@Vito0912 commented on GitHub (Feb 23, 2025): If you want, you could try using `https://provider.vito0912.de/kindle/uk` or `https://provider.vito0912.de/goodreads` with `abs` as the Auth value? I will enable logging/access log and check if `;` is sent. Then we at least could sort out if this is something with your setup of abs-tract or/and abs. *Kindle will most likley not return anything*
Author
Owner

@alexander-paterson commented on GitHub (Feb 23, 2025):

Just added and tried. Kindle didn't work (as you said) and Goodreads did.

@alexander-paterson commented on GitHub (Feb 23, 2025): Just added and tried. Kindle didn't work (as you said) and Goodreads did.
Author
Owner

@Vito0912 commented on GitHub (Feb 23, 2025):

Here are the results:
/uk/search?mediaType=book&query=Cujo&author=Stephen+King
/search?mediaType=book&query=Cujo&author=Stephen+King
the provider is stripped from the logs, because of technical reasons
LGTM, so probably some issue with local networking or the abs-tract image you are running?

@Vito0912 commented on GitHub (Feb 23, 2025): Here are the results: `/uk/search?mediaType=book&query=Cujo&author=Stephen+King` `/search?mediaType=book&query=Cujo&author=Stephen+King` *the provider is stripped from the logs, because of technical reasons* LGTM, so probably some issue with local networking or the abs-tract image you are running?
Author
Owner

@ahobsonsayers commented on GitHub (Feb 24, 2025):

Given the interesting discussion and investigation in this issue, it might be worth highlighting my earlier question that I'm not sure got answered:

Worth checking (although I believe it should have no impact), you mention you are running ABS using docker, and I assume you are running abs-tract using docker, but in the logs I see an IP address being used that her than a container name to connect them. Are you using a host network?

I wonder if this could hold some key as to what is happening.

On side note, @Vito0912, I'm very interested in the fact you are not getting any results from kindle in abs-tract! It works really well for me without issue 🤔 Can you open an issue over in abs-stract for me with some logs? I'd be interested in looking into this. Many thanks 🙏

@ahobsonsayers commented on GitHub (Feb 24, 2025): Given the interesting discussion and investigation in this issue, it might be worth highlighting my earlier question that I'm not sure got answered: > Worth checking (although I believe it should have no impact), you mention you are running ABS using docker, and I assume you are running abs-tract using docker, but in the logs I see an IP address being used that her than a container name to connect them. Are you using a host network? I wonder if this could hold some key as to what is happening. On side note, @Vito0912, I'm very interested in the fact you are not getting any results from kindle in abs-tract! It works really well for me without issue 🤔 Can you open an issue over in abs-stract for me with some logs? I'd be interested in looking into this. Many thanks 🙏
Author
Owner

@nichwall commented on GitHub (Feb 24, 2025):

The added logging is added in 2.19.5 if you want to try comparing the request from ABS to what abs-tract is getting @alexander-paterson (as well as @ahobsonsayers question)

@nichwall commented on GitHub (Feb 24, 2025): The added logging is added in 2.19.5 if you want to try comparing the request from ABS to what abs-tract is getting @alexander-paterson (as well as @ahobsonsayers question)
Author
Owner

@Vito0912 commented on GitHub (Feb 25, 2025):

@ahobsonsayers I think this has nothing to do with abs-tract. You can try yourself and will find out the error.
The servers IP I use has not a good enough reputation to make a connection. It's being blocked, because I use an VPN to route outgoing traffic for these providers

@Vito0912 commented on GitHub (Feb 25, 2025): @ahobsonsayers I think this has nothing to do with abs-tract. You can try yourself and will find out the error. The servers IP I use has not a good enough reputation to make a connection. It's being blocked, because I use an VPN to route outgoing traffic for these providers
Author
Owner

@alexander-paterson commented on GitHub (Mar 1, 2025):

I've been away for a few days and this is the first time I've been able to check this after the logging has been added. This is what I'm seeing when I perform a search.

This is from ABS

[2025-03-01 11:35:33.740] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/kindle/uk/search?mediaType=book&;query=Cujo&author=Stephen+King
[2025-03-01 11:35:34.307] ERROR: Error searching Custom provider 'custom-460512ec-f1bf-410a-a1d2-c77597f3040f': Error: sanitizeHtml: input must be a string
    at Object.sanitize (/server/utils/htmlSanitizer.js:12:11)
    at /server/providers/CustomProviderAdapter.js:81:36
    at Array.map (<anonymous>)
    at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:73:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21)
    at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21)
[2025-03-01 11:35:38.216] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/kindle/us/search?mediaType=book&;query=Cujo&author=Stephen+King
[2025-03-01 11:35:38.923] ERROR: Error searching Custom provider 'custom-4ef706d2-7f61-4f50-ab79-60dc94f66ea0': Error: sanitizeHtml: input must be a string
    at Object.sanitize (/server/utils/htmlSanitizer.js:12:11)
    at /server/providers/CustomProviderAdapter.js:81:36
    at Array.map (<anonymous>)
    at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:73:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21)
    at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21)
[2025-03-01 11:35:44.965] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/goodreads/search?mediaType=book&;query=Cujo&author=Stephen+King

This is from abs-tract

2025-03-01T11:35:34.30572571Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/uk/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/kindle/uk/search" remoteIP: "172.23.0.1:57522" proto: "HTTP/1.1" requestID: "821ad9acbaf5/qgiuZRQd0f-000011" scheme: "http" header: {connection: "keep-alive" accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2"}} httpResponse: {status: 200 bytes: 1792 elapsed: 513.915482} 
2025-03-01T11:35:38.921980853Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/us/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/kindle/us/search" remoteIP: "172.23.0.1:57522" proto: "HTTP/1.1" requestID: "821ad9acbaf5/qgiuZRQd0f-000012" scheme: "http" header: {connection: "keep-alive" accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2"}} httpResponse: {status: 200 bytes: 2779 elapsed: 704.251786} 
2025-03-01T11:35:47.048233112Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/goodreads/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/goodreads/search" remoteIP: "172.23.0.1:57544" proto: "HTTP/1.1" requestID: "821ad9acbaf5/qgiuZRQd0f-000013" scheme: "http" header: {user-agent: "axios/0.27.2" connection: "keep-alive" accept: "application/json, text/plain, */*"}} httpResponse: {status: 200 bytes: 13950 elapsed: 2081.300600} 
@alexander-paterson commented on GitHub (Mar 1, 2025): I've been away for a few days and this is the first time I've been able to check this after the logging has been added. This is what I'm seeing when I perform a search. This is from ABS ``` [2025-03-01 11:35:33.740] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/kindle/uk/search?mediaType=book&;query=Cujo&author=Stephen+King [2025-03-01 11:35:34.307] ERROR: Error searching Custom provider 'custom-460512ec-f1bf-410a-a1d2-c77597f3040f': Error: sanitizeHtml: input must be a string at Object.sanitize (/server/utils/htmlSanitizer.js:12:11) at /server/providers/CustomProviderAdapter.js:81:36 at Array.map (<anonymous>) at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:73:20) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21) at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21) [2025-03-01 11:35:38.216] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/kindle/us/search?mediaType=book&;query=Cujo&author=Stephen+King [2025-03-01 11:35:38.923] ERROR: Error searching Custom provider 'custom-4ef706d2-7f61-4f50-ab79-60dc94f66ea0': Error: sanitizeHtml: input must be a string at Object.sanitize (/server/utils/htmlSanitizer.js:12:11) at /server/providers/CustomProviderAdapter.js:81:36 at Array.map (<anonymous>) at CustomProviderAdapter.search (/server/providers/CustomProviderAdapter.js:73:20) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (/server/finders/BookFinder.js:207:21) at async ApiRouter.findBooks (/server/controllers/SearchController.js:37:21) [2025-03-01 11:35:44.965] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/goodreads/search?mediaType=book&;query=Cujo&author=Stephen+King ``` This is from abs-tract ``` 2025-03-01T11:35:34.30572571Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/uk/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/kindle/uk/search" remoteIP: "172.23.0.1:57522" proto: "HTTP/1.1" requestID: "821ad9acbaf5/qgiuZRQd0f-000011" scheme: "http" header: {connection: "keep-alive" accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2"}} httpResponse: {status: 200 bytes: 1792 elapsed: 513.915482} 2025-03-01T11:35:38.921980853Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/kindle/us/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/kindle/us/search" remoteIP: "172.23.0.1:57522" proto: "HTTP/1.1" requestID: "821ad9acbaf5/qgiuZRQd0f-000012" scheme: "http" header: {connection: "keep-alive" accept: "application/json, text/plain, */*" user-agent: "axios/0.27.2"}} httpResponse: {status: 200 bytes: 2779 elapsed: 704.251786} 2025-03-01T11:35:47.048233112Z INFO Response: 200 OK service: "abs-tract" httpRequest: {url: "http://192.168.8.219:5555/goodreads/search?mediaType=book&;query=Cujo&author=Stephen+King" method: "GET" path: "/goodreads/search" remoteIP: "172.23.0.1:57544" proto: "HTTP/1.1" requestID: "821ad9acbaf5/qgiuZRQd0f-000013" scheme: "http" header: {user-agent: "axios/0.27.2" connection: "keep-alive" accept: "application/json, text/plain, */*"}} httpResponse: {status: 200 bytes: 13950 elapsed: 2081.300600} ```
Author
Owner

@nichwall commented on GitHub (Mar 1, 2025):

Huh, that is really weird. Could you share the existing metadata.json for the book you are searching with?

@nichwall commented on GitHub (Mar 1, 2025): Huh, that is really weird. Could you share the existing `metadata.json` for the book you are searching with?
Author
Owner

@alexander-paterson commented on GitHub (Mar 1, 2025):

metadata.json

@alexander-paterson commented on GitHub (Mar 1, 2025): [metadata.json](https://github.com/user-attachments/files/19039825/metadata.json)
Author
Owner

@Vito0912 commented on GitHub (Mar 1, 2025):

And you are using the docker version from GitHub/Docker (So not build from source or whatever)?

Maybe I am blind, but the query is generated in:

    // Setup query params
    const queryObj = {
      mediaType,
      query: title
    }
    if (author) {
      queryObj.author = author
    }
    if (isbn) {
      queryObj.isbn = isbn
    }
    const queryString = new URLSearchParams(queryObj).toString()

    const url = `${provider.url}/search?${queryString}`

and the ; is inserted between the paramaters. query is not modifiable, so the ; is at a place where it possibly shouldn't be able to be.

Even forcing a ;:

    const queryObj = {
      mediaType: "book&;",
      query: "title"
    }
    const queryString = new URLSearchParams(queryObj).toString()
    console.log(queryString)

produces an escaped version: mediaType=book%26%3B&query=title

@Vito0912 commented on GitHub (Mar 1, 2025): And you are using the docker version from GitHub/Docker (So not build from source or whatever)? Maybe I am blind, but the query is generated in: ``` // Setup query params const queryObj = { mediaType, query: title } if (author) { queryObj.author = author } if (isbn) { queryObj.isbn = isbn } const queryString = new URLSearchParams(queryObj).toString() const url = `${provider.url}/search?${queryString}` ``` and the `;` is inserted between the paramaters. `query` is not modifiable, so the `;` is at a place where it possibly shouldn't be able to be. Even forcing a `;`: ``` const queryObj = { mediaType: "book&;", query: "title" } const queryString = new URLSearchParams(queryObj).toString() console.log(queryString) ``` produces an escaped version: `mediaType=book%26%3B&query=title`
Author
Owner

@alexander-paterson commented on GitHub (Mar 1, 2025):

This is the image I'm using

ghcr.io/advplyr/audiobookshelf:latest

@alexander-paterson commented on GitHub (Mar 1, 2025): This is the image I'm using `ghcr.io/advplyr/audiobookshelf:latest`
Author
Owner

@alexander-paterson commented on GitHub (Mar 1, 2025):

It might be something I'm doing, here is my compose file for ABS, abs-tract and abs-autoconverter

abs-autoconverter is currently stopped due to getting a memory error during conversions

networks:
  unabatedshagie:
    external: true
    name: unabatedshagie
services:
  abs-autoconverter:
    container_name: abs-autoconverter
    environment:
      BITRATE: 128k
      DOMAIN: {URL}
      LIBRARY_ID: b796261a-db0a-4580-8a55-3b36782fa0f5
      MAX_PARALLEL_CONVERSIONS: 1
      TOKEN: {token_id}
      TZ: Europe/London
    image: cutzenfriend/abs-autoconverter:latest
    networks:
      - unabatedshagie
    restart: unless-stopped
    env_file: .env
    depends_on:
      - audiobookshelf
  abs-tract:
    container_name: abs-tract
    image: arranhs/abs-tract:latest
    networks:
      - unabatedshagie
    ports:
      - 5555:5555
    env_file: .env
    restart: unless-stopped
    depends_on:
      - audiobookshelf
  audiobookshelf:
    container_name: audiobookshelf
    image: ghcr.io/advplyr/audiobookshelf:latest
    networks:
      - unabatedshagie
    ports:
      - 13378:80
    env_file: .env
    restart: unless-stopped
    volumes:
      - ${DOCKER_DATA_PATH}/audiobookshelf/:/config
      - ${DOCKER_DATA_PATH}/audiobookshelf/.audiobookshelf_metadata:/metadata
      - ${MORE_MEDIA}/audiobooks:/audiobooks
      - ${MORE_MEDIA}/podcasts:/podcasts

The .env file just has the paths for DOCKER_DATA_PATH etc

@alexander-paterson commented on GitHub (Mar 1, 2025): It might be something I'm doing, here is my compose file for ABS, abs-tract and abs-autoconverter abs-autoconverter is currently stopped due to getting a memory error during conversions ``` networks: unabatedshagie: external: true name: unabatedshagie services: abs-autoconverter: container_name: abs-autoconverter environment: BITRATE: 128k DOMAIN: {URL} LIBRARY_ID: b796261a-db0a-4580-8a55-3b36782fa0f5 MAX_PARALLEL_CONVERSIONS: 1 TOKEN: {token_id} TZ: Europe/London image: cutzenfriend/abs-autoconverter:latest networks: - unabatedshagie restart: unless-stopped env_file: .env depends_on: - audiobookshelf abs-tract: container_name: abs-tract image: arranhs/abs-tract:latest networks: - unabatedshagie ports: - 5555:5555 env_file: .env restart: unless-stopped depends_on: - audiobookshelf audiobookshelf: container_name: audiobookshelf image: ghcr.io/advplyr/audiobookshelf:latest networks: - unabatedshagie ports: - 13378:80 env_file: .env restart: unless-stopped volumes: - ${DOCKER_DATA_PATH}/audiobookshelf/:/config - ${DOCKER_DATA_PATH}/audiobookshelf/.audiobookshelf_metadata:/metadata - ${MORE_MEDIA}/audiobooks:/audiobooks - ${MORE_MEDIA}/podcasts:/podcasts ``` The `.env` file just has the paths for `DOCKER_DATA_PATH` etc
Author
Owner

@yetti7 commented on GitHub (Mar 2, 2025):

I've been having the same issue using the windows deployment latest version. Kindle was working and then suddenly stopped being able to pull data on any books. I've got both versions of abs-tract running just to make sure.

Goodreads pulls with no issues.

@yetti7 commented on GitHub (Mar 2, 2025): I've been having the same issue using the windows deployment latest version. Kindle was working and then suddenly stopped being able to pull data on any books. I've got both versions of abs-tract running just to make sure. Goodreads pulls with no issues.
Author
Owner

@Vito0912 commented on GitHub (Mar 2, 2025):

@yetti7

Kindle was working and then suddenly stopped being able to pull data on any books.

Are you sure it is the same error or do you think it is the same error because Kindle does not work anymore?


For testing I also set up the same IP and port etc. as OP, but I cannot reproduce it

@Vito0912 commented on GitHub (Mar 2, 2025): @yetti7 > Kindle was working and then suddenly stopped being able to pull data on any books. Are you sure it is the same error or do you think it is the same error because Kindle does not work anymore? --- For testing I also set up the same IP and port etc. as OP, but I cannot reproduce it
Author
Owner

@yetti7 commented on GitHub (Mar 2, 2025):

I can curl from kindle with no issues. It only happens when trying to parse it within abs. So I'm not sure honestly.

@yetti7 commented on GitHub (Mar 2, 2025): I can curl from kindle with no issues. It only happens when trying to parse it within abs. So I'm not sure honestly.
Author
Owner

@nichwall commented on GitHub (Mar 2, 2025):

metadata.json

Using this metadata file, I am not able to reproduce the semicolon being inserted in the ABS logs.
Using 2.19.5 in Docker on Synology.

@nichwall commented on GitHub (Mar 2, 2025): > [metadata.json](https://github.com/user-attachments/files/19039825/metadata.json) Using this metadata file, I am not able to reproduce the semicolon being inserted in the ABS logs. Using 2.19.5 in Docker on Synology.
Author
Owner

@Vito0912 commented on GitHub (Mar 2, 2025):

I can curl from kindle with no issues. It only happens when trying to parse it within abs. So I'm not sure honestly.

Could you check the logs to be sure. But sounds like the same error

@Vito0912 commented on GitHub (Mar 2, 2025): > I can curl from kindle with no issues. It only happens when trying to parse it within abs. So I'm not sure honestly. Could you check the logs to be sure. But sounds like the same error
Author
Owner

@Vito0912 commented on GitHub (Mar 2, 2025):

@nichwall Do you think we would be able to reproduce if we had the db file of the library?

@Vito0912 commented on GitHub (Mar 2, 2025): @nichwall Do you think we would be able to reproduce if we had the db file of the library?
Author
Owner

@nichwall commented on GitHub (Mar 2, 2025):

@nichwall Do you think we would be able to reproduce if we had the db file of the library?

Yeah, probably. If you're willing to share the backup file or manually zip up the database found in /config that would be great @alexander-paterson . A DM or email with the download link would work best so you can share specifically with us without making it available publicly.

@nichwall commented on GitHub (Mar 2, 2025): > @nichwall Do you think we would be able to reproduce if we had the db file of the library? Yeah, probably. If you're willing to share the backup file or manually zip up the database found in `/config` that would be great @alexander-paterson . A DM or email with the download link would work best so you can share specifically with us without making it available publicly.
Author
Owner

@alexander-paterson commented on GitHub (Mar 2, 2025):

Sent it in an email to you @nichwall

@alexander-paterson commented on GitHub (Mar 2, 2025): Sent it in an email to you @nichwall
Author
Owner

@nichwall commented on GitHub (Mar 2, 2025):

Sent it in an email to you @nichwall

Awesome, thanks. Using your backup on 2.19.5 (Linux from source), I was unable to replicate the semicolon being inserted.

[2025-03-02 08:10:50.304] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/goodreads/search?mediaType=book&query=Cujo&author=Stephen+King
@nichwall commented on GitHub (Mar 2, 2025): > Sent it in an email to you [@nichwall](https://github.com/nichwall) Awesome, thanks. Using your backup on 2.19.5 (Linux from source), I was **unable** to replicate the semicolon being inserted. ``` [2025-03-02 08:10:50.304] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/goodreads/search?mediaType=book&query=Cujo&author=Stephen+King ```
Author
Owner

@yetti7 commented on GitHub (Mar 4, 2025):

Sent it in an email to you @nichwall

Awesome, thanks. Using your backup on 2.19.5 (Linux from source), I was unable to replicate the semicolon being inserted.

[2025-03-02 08:10:50.304] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/goodreads/search?mediaType=book&query=Cujo&author=Stephen+King

So i dont believe goodreads is the issue. Unless im mistaken here. There is something about the Kindle search that is breaking. It curls with no issue but when parsing on ABS it returns with no data. Where as good reads returns with no issue.

@yetti7 commented on GitHub (Mar 4, 2025): > > Sent it in an email to you [@nichwall](https://github.com/nichwall) > > Awesome, thanks. Using your backup on 2.19.5 (Linux from source), I was **unable** to replicate the semicolon being inserted. > > ``` > [2025-03-02 08:10:50.304] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/goodreads/search?mediaType=book&query=Cujo&author=Stephen+King > ``` So i dont believe goodreads is the issue. Unless im mistaken here. There is something about the Kindle search that is breaking. It curls with no issue but when parsing on ABS it returns with no data. Where as good reads returns with no issue.
Author
Owner

@Vito0912 commented on GitHub (Mar 4, 2025):

@yetti7

So i dont believe goodreads is the issue. Unless im mistaken here. There is something about the Kindle search that is breaking. It curls with no issue but when parsing on ABS it returns with no data. Where as good reads returns with no issue.

As mentioned in this comment: https://github.com/advplyr/audiobookshelf/issues/4004#issuecomment-2692756767

It would be helpful if you could check the logs to see if they show the same error or a different one. If it is the same error, could you share details about your setup? This way, we can identify similarities.

@Vito0912 commented on GitHub (Mar 4, 2025): @yetti7 > So i dont believe goodreads is the issue. Unless im mistaken here. There is something about the Kindle search that is breaking. It curls with no issue but when parsing on ABS it returns with no data. Where as good reads returns with no issue. As mentioned in this comment: https://github.com/advplyr/audiobookshelf/issues/4004#issuecomment-2692756767 It would be helpful if you could check the logs to see if they show the same error or a different one. If it is the same error, could you share details about your setup? This way, we can identify similarities.
Author
Owner

@yetti7 commented on GitHub (Mar 4, 2025):

As mentioned in this comment: #4004 (comment)

It would be helpful if you could check the logs to see if they show the same error or a different one. If it is the same error, could you share details about your setup? This way, we can identify similarities.

My Apologies was a hectic weekend.

Im running ABS 2.19.5 through windows and have docker desktop set up to run ABS-tract 0.1.1 and 0.2.0.

0.1.1 Returns limited goodreads data so thats why im also running 0.2.0

Kindle returns nothing

2025-03-04 09:54:51.625

ERROR

Error searching Custom provider 'custom-2d06377f-a815-45c7-8dcf-3d49d797f401': Error: sanitizeHtml: input must be a string at Object.sanitize (C:\snapshot\audiobookshelf\server\utils\htmlSanitizer.js) at C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js at Array.map (<anonymous>) at CustomProviderAdapter.search (C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (C:\snapshot\audiobookshelf\server\finders\BookFinder.js) at async ApiRouter.findBooks (C:\snapshot\audiobookshelf\server\controllers\SearchController.js)

metadata.json

Heres the metadata file im using for searching kindle both US UK 0.1.1 and 0.2.0

Let me know what other log files I can pull from the windows version.

@yetti7 commented on GitHub (Mar 4, 2025): > As mentioned in this comment: [#4004 (comment)](https://github.com/advplyr/audiobookshelf/issues/4004#issuecomment-2692756767) > > It would be helpful if you could check the logs to see if they show the same error or a different one. If it is the same error, could you share details about your setup? This way, we can identify similarities. My Apologies was a hectic weekend. Im running ABS 2.19.5 through windows and have docker desktop set up to run ABS-tract 0.1.1 and 0.2.0. 0.1.1 Returns limited goodreads data so thats why im also running 0.2.0 Kindle returns nothing ``` 2025-03-04 09:54:51.625 ERROR Error searching Custom provider 'custom-2d06377f-a815-45c7-8dcf-3d49d797f401': Error: sanitizeHtml: input must be a string at Object.sanitize (C:\snapshot\audiobookshelf\server\utils\htmlSanitizer.js) at C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js at Array.map (<anonymous>) at CustomProviderAdapter.search (C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (C:\snapshot\audiobookshelf\server\finders\BookFinder.js) at async ApiRouter.findBooks (C:\snapshot\audiobookshelf\server\controllers\SearchController.js) ``` [metadata.json](https://github.com/user-attachments/files/19073112/metadata.json) Heres the metadata file im using for searching kindle both US UK 0.1.1 and 0.2.0 Let me know what other log files I can pull from the windows version.
Author
Owner

@nichwall commented on GitHub (Mar 4, 2025):

As mentioned in this comment: #4004 (comment)

It would be helpful if you could check the logs to see if they show the same error or a different one. If it is the same error, could you share details about your setup? This way, we can identify similarities.

My Apologies was a hectic weekend.

Kindle returns nothing

2025-03-04 09:54:51.625

ERROR

Error searching Custom provider 'custom-2d06377f-a815-45c7-8dcf-3d49d797f401': Error: sanitizeHtml: input must be a string at Object.sanitize (C:\snapshot\audiobookshelf\server\utils\htmlSanitizer.js) at C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js at Array.map (<anonymous>) at CustomProviderAdapter.search (C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (C:\snapshot\audiobookshelf\server\finders\BookFinder.js) at async ApiRouter.findBooks (C:\snapshot\audiobookshelf\server\controllers\SearchController.js)

Can you enable Debug logs and look for something like below?

[2025-03-02 08:10:50.304] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/goodreads/search?mediaType=book&query=Cujo&author=Stephen+King

This issue is discussing ABS inserting a semicolon in the search query. If nothing is returned from the metadata provider, that is a different issue.

@nichwall commented on GitHub (Mar 4, 2025): > > As mentioned in this comment: [#4004 (comment)](https://github.com/advplyr/audiobookshelf/issues/4004#issuecomment-2692756767) > > > > It would be helpful if you could check the logs to see if they show the same error or a different one. If it is the same error, could you share details about your setup? This way, we can identify similarities. > > My Apologies was a hectic weekend. > > Kindle returns nothing > > ``` > 2025-03-04 09:54:51.625 > > ERROR > > Error searching Custom provider 'custom-2d06377f-a815-45c7-8dcf-3d49d797f401': Error: sanitizeHtml: input must be a string at Object.sanitize (C:\snapshot\audiobookshelf\server\utils\htmlSanitizer.js) at C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js at Array.map (<anonymous>) at CustomProviderAdapter.search (C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (C:\snapshot\audiobookshelf\server\finders\BookFinder.js) at async ApiRouter.findBooks (C:\snapshot\audiobookshelf\server\controllers\SearchController.js) > ``` Can you enable Debug logs and look for something like below? ``` [2025-03-02 08:10:50.304] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/goodreads/search?mediaType=book&query=Cujo&author=Stephen+King ``` This issue is discussing ABS inserting a semicolon in the search query. If nothing is returned from the metadata provider, that is a different issue.
Author
Owner

@yetti7 commented on GitHub (Mar 4, 2025):

@nichwall

2025-03-04 10:20:07.900

DEBUG

[CustomMetadataProvider] Search url: http://192.168.0.183:5555/kindle/us/search?mediaType=book&query=The+Hobbit&author=J.R.R.+Tolkein

Looks like you are correct. I'm not seeing the ; I think I ended up following the trail when @alexander-paterson was having the same issue of GoodReads returning and then Kindle suddenly breaking out of nowhere when it was working previously.

@yetti7 commented on GitHub (Mar 4, 2025): @nichwall ``` 2025-03-04 10:20:07.900 DEBUG [CustomMetadataProvider] Search url: http://192.168.0.183:5555/kindle/us/search?mediaType=book&query=The+Hobbit&author=J.R.R.+Tolkein ``` Looks like you are correct. I'm not seeing the ; I think I ended up following the trail when @alexander-paterson was having the same issue of GoodReads returning and then Kindle suddenly breaking out of nowhere when it was working previously.
Author
Owner

@nichwall commented on GitHub (Mar 4, 2025):

Looks like you are correct. I'm not seeing the ; I think I ended up following the trail when @alexander-paterson was having the same issue of GoodReads returning and then Kindle suddenly breaking out of nowhere when it was working previously.

That would be something specific to abs-tract, then. Possibly related to the whole Kindle changing things so you can no longer copy files over USB or something. I saw talk of other things changing, but have not been following it myself so not sure if the API was affected

@nichwall commented on GitHub (Mar 4, 2025): > Looks like you are correct. I'm not seeing the ; I think I ended up following the trail when @alexander-paterson was having the same issue of GoodReads returning and then Kindle suddenly breaking out of nowhere when it was working previously. That would be something specific to abs-tract, then. Possibly related to the whole Kindle changing things so you can no longer copy files over USB or something. I saw talk of other things changing, but have not been following it myself so not sure if the API was affected
Author
Owner

@yetti7 commented on GitHub (Mar 4, 2025):

That would be something specific to abs-tract, then. Possibly related to the whole Kindle changing things so you can no longer copy files over USB or something. I saw talk of other things changing, but have not been following it myself so not sure if the API was affected

If that's the case wouldn't curl break as well?

I can absolutely take it over to ABS-Tract. From the issues i saw raised over there it seemed hit and miss being the same issue.

Usually i tend to just look for other peoples solutions before bringing up my own but maybe in this case my hatred of Calibre has led me to be solo in this particular circumstance? My love of ABS and all the work you guys have put into it made me want to keep everything central to that.

@yetti7 commented on GitHub (Mar 4, 2025): > That would be something specific to abs-tract, then. Possibly related to the whole Kindle changing things so you can no longer copy files over USB or something. I saw talk of other things changing, but have not been following it myself so not sure if the API was affected If that's the case wouldn't curl break as well? I can absolutely take it over to ABS-Tract. From the issues i saw raised over there it seemed hit and miss being the same issue. Usually i tend to just look for other peoples solutions before bringing up my own but maybe in this case my hatred of Calibre has led me to be solo in this particular circumstance? My love of ABS and all the work you guys have put into it made me want to keep everything central to that.
Author
Owner

@Vito0912 commented on GitHub (Mar 4, 2025):

If that's the case wouldn't curl break as well?

The error you encounter is an error if (I think it was description) field is not filled and the function therefore crashes. abs-tract probably does not provide that data. Could you share a test response that you get via curl?

@nichwall I can't look that much into it yet, but I think this actually might be a bug from abs if the description field is not provided (I currently do not have the code infornt of me. Just a thought that came to me)

@Vito0912 commented on GitHub (Mar 4, 2025): > If that's the case wouldn't curl break as well? The error you encounter is an error if (I think it was description) field is not filled and the function therefore crashes. abs-tract probably does not provide that data. Could you share a test response that you get via curl? @nichwall I can't look that much into it yet, but I think this actually might be a bug from abs if the description field is not provided (I currently do not have the code infornt of me. Just a thought that came to me)
Author
Owner

@yetti7 commented on GitHub (Mar 4, 2025):

I tested using

curl --request GET \
    --url "http://192.168.0.183:5555/kindle/us/search?mediaType=book&query=The+Hobbit&author=J.R.R.+Tolkein"

and

curl --request GET \
    --url "http://192.168.0.183:5555/kindle/us/search?mediaType=book&query=The+Hobbit&author=J.R.R.+Tolkein" | jq

The error i get in ABS when i parse is

[2025-03-04 11:17:33.599] ERROR: Error searching Custom provider 'custom-45e59805-84d9-4803-871a-e978590ae062': Error: sanitizeHtml: input must be a string
    at Object.sanitize (C:\snapshot\audiobookshelf\server\utils\htmlSanitizer.js)
    at C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js
    at Array.map (<anonymous>)
    at CustomProviderAdapter.search (C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async BookFinder.getCustomProviderResults (C:\snapshot\audiobookshelf\server\finders\BookFinder.js)
    at async ApiRouter.findBooks (C:\snapshot\audiobookshelf\server\controllers\SearchController.js)

im not sure how its handled but if description is needed then i can see why it would fail

sanitizeHtml: input must be a string

I would image it falls more on abs-tract than ABS if that is the case but im not sure.

@yetti7 commented on GitHub (Mar 4, 2025): I tested using ``` curl --request GET \ --url "http://192.168.0.183:5555/kindle/us/search?mediaType=book&query=The+Hobbit&author=J.R.R.+Tolkein" ``` and ``` curl --request GET \ --url "http://192.168.0.183:5555/kindle/us/search?mediaType=book&query=The+Hobbit&author=J.R.R.+Tolkein" | jq ``` The error i get in ABS when i parse is ``` [2025-03-04 11:17:33.599] ERROR: Error searching Custom provider 'custom-45e59805-84d9-4803-871a-e978590ae062': Error: sanitizeHtml: input must be a string at Object.sanitize (C:\snapshot\audiobookshelf\server\utils\htmlSanitizer.js) at C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js at Array.map (<anonymous>) at CustomProviderAdapter.search (C:\snapshot\audiobookshelf\server\providers\CustomProviderAdapter.js) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async BookFinder.getCustomProviderResults (C:\snapshot\audiobookshelf\server\finders\BookFinder.js) at async ApiRouter.findBooks (C:\snapshot\audiobookshelf\server\controllers\SearchController.js) ``` im not sure how its handled but if description is needed then i can see why it would fail ``` sanitizeHtml: input must be a string ``` I would image it falls more on abs-tract than ABS if that is the case but im not sure.
Author
Owner

@Vito0912 commented on GitHub (Mar 4, 2025):

Sorry, I meant the result you get using curl, not abs. I didn't make this very clear.
So just the json output you get with your first or second request

@Vito0912 commented on GitHub (Mar 4, 2025): Sorry, I meant the result you get using curl, not abs. I didn't make this very clear. So just the json output you get with your first or second request
Author
Owner

@yetti7 commented on GitHub (Mar 4, 2025):

My apologies, Here are both blocks

{"matches":[{"asin":"B007978NU6","author":"J.R.R. Tolkien and Christopher Tolkien","cover":"https://m.media-amazon.com/images/I/61Ng-W9EhBL.jpg","publishedYear":"2012","title":"The Hobbit: 75th Anniversary Edition"},{"asin":"B0BYZPXY8L","author":"J. R. R. Tolkien","cover":"https://m.media-amazon.com/images/I/71TP68oXLpL.jpg","publishedYear":"2023","title":"The Hobbit Illustrated by the Author (Tolkien Illustrated Editions)"},{"asin":"B09JF7NBT4","author":"J. R. R. Tolkien","cover":"https://m.media-amazon.com/images/I/81WwKhi2e6L.jpg","title":"The Lord of the Rings Illustrated (Tolkien Illustrated Editions)"},{"asin":"B0CKT929N4","author":"J. R. R. Tolkien , Chuck Dixon , et al.","cover":"https://m.media-amazon.com/images/I/91ZX8zNpwZL.jpg","publishedYear":"2024","title":"The Hobbit: A Graphic Novel"},{"asin":"B007978OY6","author":"J.R.R. Tolkien","cover":"https://m.media-amazon.com/images/I/81XH+m22mjL.jpg","publishedYear":"2012","title":"The Lord Of The Rings: One Volume"},{"asin":"B008VIWRDG","author":"Houghton Mifflin Harcourt","cover":"https://m.media-amazon.com/images/I/81RlpCORZ6L.jpg","publishedYear":"2012","title":"Reader And Educator Guide To \"the Hobbit\" And \"the Lord Of The Rings\""},{"asin":"B007978NPG","author":"J.R.R. Tolkien","cover":"https://m.media-amazon.com/images/I/710YPoKebhL.jpg","title":"The Fellowship Of The Ring: Being the First Part of The Lord of the Rings"},{"asin":"B0092GFSZU","author":"Paddy Kempshall","cover":"https://m.media-amazon.com/images/I/81KnwNdqtVL.jpg","publishedYear":"2012","title":"The Hobbit: An Unexpected Journey--The World Of Hobbits"},{"asin":"B01HTJ5U18","author":"John Ronald Reuel Tolkien and Daniel Lauzon","cover":"https://m.media-amazon.com/images/I/913nxjdTA2L.jpg","title":"Le Hobbit: Nouvelle traduction (TOLKIEN) (French Edition)"},{"asin":"B0064T074K","author":"J. R. R. Tolkien and Manuel Figueroa","cover":"https://m.media-amazon.com/images/I/91U3Yg8PFDL.jpg","title":"El Hobbit (edición revisada) (El Señor de Los anillos (edición rústica)) (Spanish Edition)"},{"asin":"B0BP2GVNBH","author":"J. R. R. Tolkien","cover":"https://m.media-amazon.com/images/I/91tX+wUFsuL.jpg","publishedYear":"2023","title":"The History of the Hobbit"},{"asin":"B00PWOH1EM","author":"Joseph Loconte","cover":"https://m.media-amazon.com/images/I/71LAlxRMFDL.jpg","publishedYear":"2015","title":"A Hobbit, a Wardrobe, and a Great War: How J.R.R. Tolkien and C.S. Lewis Rediscovered Faith, Friendship, and Heroism in the Cataclysm of 1914-18"},{"asin":"B0BDT5S89P","author":"J. R. R. Tolkien","cover":"https://m.media-amazon.com/images/I/71+gJN+oULL.jpg","title":"O Hobbit (PLANETA PORTUGAL) (Portuguese Edition)"},{"asin":"B07BHV83MB","author":"J.R.R. Tolkien and Wolfgang Krege","cover":"https://m.media-amazon.com/images/I/815ne0ZmBmL.jpg","title":"Der Hobbit: Oder Hin und zurück (German Edition)"},{"asin":"B0BXM7795H","author":"Damien Bador, Vivien Stocker , et al.","cover":"https://m.media-amazon.com/images/I/91UUbbPi-fL.jpg","publishedYear":"2024","title":"The Hobbit Encyclopedia"},{"asin":"B006R8PFG8","author":"Corey Olsen","cover":"https://m.media-amazon.com/images/I/817lDpqV5rL.jpg","publishedYear":"2023","title":"Exploring J.r.r. Tolkien's \"the Hobbit\""},{"asin":"B08ZDCN3GQ","author":"Ryan Cahill","cover":"https://m.media-amazon.com/images/I/91GkTKpTX7L.jpg","title":"Of Blood And Fire (The Bound and The Broken Book 1)"},{"asin":"B0CCCMTRKN","author":"Jasmine Young","cover":"https://m.media-amazon.com/images/I/A1RTfjuJAEL.jpg","title":"A Breaking of Realms: A Dragon Rider Fantasy (Realm Breaker Book 1)"},{"asin":"B0D35KP5J1","author":"Brett Lurie","cover":"https://m.media-amazon.com/images/I/812kfe5zFTL.jpg","title":"Endless Frontier: The Hunter and the Knight"}]}
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3806    0  3806    0     0   3980      0 --:--:-- --:--:-- --:--:--  3977
{
  "matches": [
    {
      "asin": "B007978NU6",
      "author": "J.R.R. Tolkien and Christopher Tolkien",
      "cover": "https://m.media-amazon.com/images/I/61Ng-W9EhBL.jpg",
      "publishedYear": "2012",
      "title": "The Hobbit: 75th Anniversary Edition"
    },
    {
      "asin": "B0BYZPXY8L",
      "author": "J. R. R. Tolkien",
      "cover": "https://m.media-amazon.com/images/I/71TP68oXLpL.jpg",
      "publishedYear": "2023",
      "title": "The Hobbit Illustrated by the Author (Tolkien Illustrated Editions)"
    },
    {
      "asin": "B09JF7NBT4",
      "author": "J. R. R. Tolkien",
      "cover": "https://m.media-amazon.com/images/I/81WwKhi2e6L.jpg",
      "title": "The Lord of the Rings Illustrated (Tolkien Illustrated Editions)"
    },
    {
      "asin": "B0CKT929N4",
      "author": "J. R. R. Tolkien , Chuck Dixon , et al.",
      "cover": "https://m.media-amazon.com/images/I/91ZX8zNpwZL.jpg",
      "publishedYear": "2024",
      "title": "The Hobbit: A Graphic Novel"
    },
    {
      "asin": "B007978OY6",
      "author": "J.R.R. Tolkien",
      "cover": "https://m.media-amazon.com/images/I/81XH+m22mjL.jpg",
      "publishedYear": "2012",
      "title": "The Lord Of The Rings: One Volume"
    },
    {
      "asin": "B008VIWRDG",
      "author": "Houghton Mifflin Harcourt",
      "cover": "https://m.media-amazon.com/images/I/81RlpCORZ6L.jpg",
      "publishedYear": "2012",
      "title": "Reader And Educator Guide To \"the Hobbit\" And \"the Lord Of The Rings\""
    },
    {
      "asin": "B007978NPG",
      "author": "J.R.R. Tolkien",
      "cover": "https://m.media-amazon.com/images/I/710YPoKebhL.jpg",
      "title": "The Fellowship Of The Ring: Being the First Part of The Lord of the Rings"
    },
    {
      "asin": "B0092GFSZU",
      "author": "Paddy Kempshall",
      "cover": "https://m.media-amazon.com/images/I/81KnwNdqtVL.jpg",
      "publishedYear": "2012",
      "title": "The Hobbit: An Unexpected Journey--The World Of Hobbits"
    },
    {
      "asin": "B01HTJ5U18",
      "author": "John Ronald Reuel Tolkien and Daniel Lauzon",
      "cover": "https://m.media-amazon.com/images/I/913nxjdTA2L.jpg",
      "title": "Le Hobbit: Nouvelle traduction (TOLKIEN) (French Edition)"
    },
    {
      "asin": "B0064T074K",
      "author": "J. R. R. Tolkien and Manuel Figueroa",
      "cover": "https://m.media-amazon.com/images/I/91U3Yg8PFDL.jpg",
      "title": "El Hobbit (edición revisada) (El Señor de Los anillos (edición rústica)) (Spanish Edition)"
    },
    {
      "asin": "B0BP2GVNBH",
      "author": "J. R. R. Tolkien",
      "cover": "https://m.media-amazon.com/images/I/91tX+wUFsuL.jpg",
      "publishedYear": "2023",
      "title": "The History of the Hobbit"
    },
    {
      "asin": "B00PWOH1EM",
      "author": "Joseph Loconte",
      "cover": "https://m.media-amazon.com/images/I/71LAlxRMFDL.jpg",
      "publishedYear": "2015",
      "title": "A Hobbit, a Wardrobe, and a Great War: How J.R.R. Tolkien and C.S. Lewis Rediscovered Faith, Friendship, and Heroism in the Cataclysm of 1914-18"
    },
    {
      "asin": "B0BDT5S89P",
      "author": "J. R. R. Tolkien",
      "cover": "https://m.media-amazon.com/images/I/71+gJN+oULL.jpg",
      "title": "O Hobbit (PLANETA PORTUGAL) (Portuguese Edition)"
    },
    {
      "asin": "B07BHV83MB",
      "author": "J.R.R. Tolkien and Wolfgang Krege",
      "cover": "https://m.media-amazon.com/images/I/815ne0ZmBmL.jpg",
      "title": "Der Hobbit: Oder Hin und zurück (German Edition)"
    },
    {
      "asin": "B0BXM7795H",
      "author": "Damien Bador, Vivien Stocker , et al.",
      "cover": "https://m.media-amazon.com/images/I/91UUbbPi-fL.jpg",
      "publishedYear": "2024",
      "title": "The Hobbit Encyclopedia"
    },
    {
      "asin": "B006R8PFG8",
      "author": "Corey Olsen",
      "cover": "https://m.media-amazon.com/images/I/817lDpqV5rL.jpg",
      "publishedYear": "2023",
      "title": "Exploring J.r.r. Tolkien's \"the Hobbit\""
    },
    {
      "asin": "B0CCCMTRKN",
      "author": "Jasmine Young",
      "cover": "https://m.media-amazon.com/images/I/A1RTfjuJAEL.jpg",
      "title": "A Breaking of Realms: A Dragon Rider Fantasy (Realm Breaker Book 1)"
    },
    {
      "asin": "B09TWX6Y11",
      "author": "Jacob Peppers",
      "cover": "https://m.media-amazon.com/images/I/81xcMoJrwDL.jpg",
      "title": "The Wandering Sword: Book One of The Last Eternal"
    },
    {
      "asin": "B0D7VJP5SY",
      "author": "Marc Keyner and Steph White",
      "cover": "https://m.media-amazon.com/images/I/61QN5VU9IIL.jpg",
      "title": "Blood and Tradition: A grim high action epic fantasy novel (Ylliora)"
    }
  ]
}
@yetti7 commented on GitHub (Mar 4, 2025): My apologies, Here are both blocks ``` {"matches":[{"asin":"B007978NU6","author":"J.R.R. Tolkien and Christopher Tolkien","cover":"https://m.media-amazon.com/images/I/61Ng-W9EhBL.jpg","publishedYear":"2012","title":"The Hobbit: 75th Anniversary Edition"},{"asin":"B0BYZPXY8L","author":"J. R. R. Tolkien","cover":"https://m.media-amazon.com/images/I/71TP68oXLpL.jpg","publishedYear":"2023","title":"The Hobbit Illustrated by the Author (Tolkien Illustrated Editions)"},{"asin":"B09JF7NBT4","author":"J. R. R. Tolkien","cover":"https://m.media-amazon.com/images/I/81WwKhi2e6L.jpg","title":"The Lord of the Rings Illustrated (Tolkien Illustrated Editions)"},{"asin":"B0CKT929N4","author":"J. R. R. Tolkien , Chuck Dixon , et al.","cover":"https://m.media-amazon.com/images/I/91ZX8zNpwZL.jpg","publishedYear":"2024","title":"The Hobbit: A Graphic Novel"},{"asin":"B007978OY6","author":"J.R.R. Tolkien","cover":"https://m.media-amazon.com/images/I/81XH+m22mjL.jpg","publishedYear":"2012","title":"The Lord Of The Rings: One Volume"},{"asin":"B008VIWRDG","author":"Houghton Mifflin Harcourt","cover":"https://m.media-amazon.com/images/I/81RlpCORZ6L.jpg","publishedYear":"2012","title":"Reader And Educator Guide To \"the Hobbit\" And \"the Lord Of The Rings\""},{"asin":"B007978NPG","author":"J.R.R. Tolkien","cover":"https://m.media-amazon.com/images/I/710YPoKebhL.jpg","title":"The Fellowship Of The Ring: Being the First Part of The Lord of the Rings"},{"asin":"B0092GFSZU","author":"Paddy Kempshall","cover":"https://m.media-amazon.com/images/I/81KnwNdqtVL.jpg","publishedYear":"2012","title":"The Hobbit: An Unexpected Journey--The World Of Hobbits"},{"asin":"B01HTJ5U18","author":"John Ronald Reuel Tolkien and Daniel Lauzon","cover":"https://m.media-amazon.com/images/I/913nxjdTA2L.jpg","title":"Le Hobbit: Nouvelle traduction (TOLKIEN) (French Edition)"},{"asin":"B0064T074K","author":"J. R. R. Tolkien and Manuel Figueroa","cover":"https://m.media-amazon.com/images/I/91U3Yg8PFDL.jpg","title":"El Hobbit (edición revisada) (El Señor de Los anillos (edición rústica)) (Spanish Edition)"},{"asin":"B0BP2GVNBH","author":"J. R. R. Tolkien","cover":"https://m.media-amazon.com/images/I/91tX+wUFsuL.jpg","publishedYear":"2023","title":"The History of the Hobbit"},{"asin":"B00PWOH1EM","author":"Joseph Loconte","cover":"https://m.media-amazon.com/images/I/71LAlxRMFDL.jpg","publishedYear":"2015","title":"A Hobbit, a Wardrobe, and a Great War: How J.R.R. Tolkien and C.S. Lewis Rediscovered Faith, Friendship, and Heroism in the Cataclysm of 1914-18"},{"asin":"B0BDT5S89P","author":"J. R. R. Tolkien","cover":"https://m.media-amazon.com/images/I/71+gJN+oULL.jpg","title":"O Hobbit (PLANETA PORTUGAL) (Portuguese Edition)"},{"asin":"B07BHV83MB","author":"J.R.R. Tolkien and Wolfgang Krege","cover":"https://m.media-amazon.com/images/I/815ne0ZmBmL.jpg","title":"Der Hobbit: Oder Hin und zurück (German Edition)"},{"asin":"B0BXM7795H","author":"Damien Bador, Vivien Stocker , et al.","cover":"https://m.media-amazon.com/images/I/91UUbbPi-fL.jpg","publishedYear":"2024","title":"The Hobbit Encyclopedia"},{"asin":"B006R8PFG8","author":"Corey Olsen","cover":"https://m.media-amazon.com/images/I/817lDpqV5rL.jpg","publishedYear":"2023","title":"Exploring J.r.r. Tolkien's \"the Hobbit\""},{"asin":"B08ZDCN3GQ","author":"Ryan Cahill","cover":"https://m.media-amazon.com/images/I/91GkTKpTX7L.jpg","title":"Of Blood And Fire (The Bound and The Broken Book 1)"},{"asin":"B0CCCMTRKN","author":"Jasmine Young","cover":"https://m.media-amazon.com/images/I/A1RTfjuJAEL.jpg","title":"A Breaking of Realms: A Dragon Rider Fantasy (Realm Breaker Book 1)"},{"asin":"B0D35KP5J1","author":"Brett Lurie","cover":"https://m.media-amazon.com/images/I/812kfe5zFTL.jpg","title":"Endless Frontier: The Hunter and the Knight"}]} ``` ``` % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3806 0 3806 0 0 3980 0 --:--:-- --:--:-- --:--:-- 3977 { "matches": [ { "asin": "B007978NU6", "author": "J.R.R. Tolkien and Christopher Tolkien", "cover": "https://m.media-amazon.com/images/I/61Ng-W9EhBL.jpg", "publishedYear": "2012", "title": "The Hobbit: 75th Anniversary Edition" }, { "asin": "B0BYZPXY8L", "author": "J. R. R. Tolkien", "cover": "https://m.media-amazon.com/images/I/71TP68oXLpL.jpg", "publishedYear": "2023", "title": "The Hobbit Illustrated by the Author (Tolkien Illustrated Editions)" }, { "asin": "B09JF7NBT4", "author": "J. R. R. Tolkien", "cover": "https://m.media-amazon.com/images/I/81WwKhi2e6L.jpg", "title": "The Lord of the Rings Illustrated (Tolkien Illustrated Editions)" }, { "asin": "B0CKT929N4", "author": "J. R. R. Tolkien , Chuck Dixon , et al.", "cover": "https://m.media-amazon.com/images/I/91ZX8zNpwZL.jpg", "publishedYear": "2024", "title": "The Hobbit: A Graphic Novel" }, { "asin": "B007978OY6", "author": "J.R.R. Tolkien", "cover": "https://m.media-amazon.com/images/I/81XH+m22mjL.jpg", "publishedYear": "2012", "title": "The Lord Of The Rings: One Volume" }, { "asin": "B008VIWRDG", "author": "Houghton Mifflin Harcourt", "cover": "https://m.media-amazon.com/images/I/81RlpCORZ6L.jpg", "publishedYear": "2012", "title": "Reader And Educator Guide To \"the Hobbit\" And \"the Lord Of The Rings\"" }, { "asin": "B007978NPG", "author": "J.R.R. Tolkien", "cover": "https://m.media-amazon.com/images/I/710YPoKebhL.jpg", "title": "The Fellowship Of The Ring: Being the First Part of The Lord of the Rings" }, { "asin": "B0092GFSZU", "author": "Paddy Kempshall", "cover": "https://m.media-amazon.com/images/I/81KnwNdqtVL.jpg", "publishedYear": "2012", "title": "The Hobbit: An Unexpected Journey--The World Of Hobbits" }, { "asin": "B01HTJ5U18", "author": "John Ronald Reuel Tolkien and Daniel Lauzon", "cover": "https://m.media-amazon.com/images/I/913nxjdTA2L.jpg", "title": "Le Hobbit: Nouvelle traduction (TOLKIEN) (French Edition)" }, { "asin": "B0064T074K", "author": "J. R. R. Tolkien and Manuel Figueroa", "cover": "https://m.media-amazon.com/images/I/91U3Yg8PFDL.jpg", "title": "El Hobbit (edición revisada) (El Señor de Los anillos (edición rústica)) (Spanish Edition)" }, { "asin": "B0BP2GVNBH", "author": "J. R. R. Tolkien", "cover": "https://m.media-amazon.com/images/I/91tX+wUFsuL.jpg", "publishedYear": "2023", "title": "The History of the Hobbit" }, { "asin": "B00PWOH1EM", "author": "Joseph Loconte", "cover": "https://m.media-amazon.com/images/I/71LAlxRMFDL.jpg", "publishedYear": "2015", "title": "A Hobbit, a Wardrobe, and a Great War: How J.R.R. Tolkien and C.S. Lewis Rediscovered Faith, Friendship, and Heroism in the Cataclysm of 1914-18" }, { "asin": "B0BDT5S89P", "author": "J. R. R. Tolkien", "cover": "https://m.media-amazon.com/images/I/71+gJN+oULL.jpg", "title": "O Hobbit (PLANETA PORTUGAL) (Portuguese Edition)" }, { "asin": "B07BHV83MB", "author": "J.R.R. Tolkien and Wolfgang Krege", "cover": "https://m.media-amazon.com/images/I/815ne0ZmBmL.jpg", "title": "Der Hobbit: Oder Hin und zurück (German Edition)" }, { "asin": "B0BXM7795H", "author": "Damien Bador, Vivien Stocker , et al.", "cover": "https://m.media-amazon.com/images/I/91UUbbPi-fL.jpg", "publishedYear": "2024", "title": "The Hobbit Encyclopedia" }, { "asin": "B006R8PFG8", "author": "Corey Olsen", "cover": "https://m.media-amazon.com/images/I/817lDpqV5rL.jpg", "publishedYear": "2023", "title": "Exploring J.r.r. Tolkien's \"the Hobbit\"" }, { "asin": "B0CCCMTRKN", "author": "Jasmine Young", "cover": "https://m.media-amazon.com/images/I/A1RTfjuJAEL.jpg", "title": "A Breaking of Realms: A Dragon Rider Fantasy (Realm Breaker Book 1)" }, { "asin": "B09TWX6Y11", "author": "Jacob Peppers", "cover": "https://m.media-amazon.com/images/I/81xcMoJrwDL.jpg", "title": "The Wandering Sword: Book One of The Last Eternal" }, { "asin": "B0D7VJP5SY", "author": "Marc Keyner and Steph White", "cover": "https://m.media-amazon.com/images/I/61QN5VU9IIL.jpg", "title": "Blood and Tradition: A grim high action epic fantasy novel (Ylliora)" } ] } ```
Author
Owner

@Vito0912 commented on GitHub (Mar 4, 2025):

This supports my suspicion. If that's the case and I can reproduce it, I'll make a PR to fix it.

@Vito0912 commented on GitHub (Mar 4, 2025): This supports my suspicion. If that's the case and I can reproduce it, I'll make a PR to fix it.
Author
Owner

@nichwall commented on GitHub (Mar 4, 2025):

Yeah, I agree that it is probably a missing description. Can we move that discussion to a new issue so this remains focused on the semicolon being added?

@nichwall commented on GitHub (Mar 4, 2025): Yeah, I agree that it is probably a missing description. Can we move that discussion to a new issue so this remains focused on the semicolon being added?
Author
Owner

@advplyr commented on GitHub (Apr 4, 2025):

Was this ever figured out?

@advplyr commented on GitHub (Apr 4, 2025): Was this ever figured out?
Author
Owner

@nichwall commented on GitHub (Apr 4, 2025):

I believe it was narrowed down to being something in the routing setup, but nothing definitive was found.

The logs from ABS do not show the semicolon being added, but the semicolon is present when the request is received by abs-tract.

@nichwall commented on GitHub (Apr 4, 2025): I believe it was narrowed down to being something in the routing setup, but nothing definitive was found. The logs from ABS do not show the semicolon being added, but the semicolon is present when the request is received by abs-tract.
Author
Owner

@Vito0912 commented on GitHub (Apr 13, 2025):

Because I just read this again.

The logs from ABS do not show the semicolon being added, but the semicolon is present when the request is received by abs-tract.

That's not the case. If it were, then this would be 100% due to a misconfigured proxy.

See: https://github.com/advplyr/audiobookshelf/issues/4004#issuecomment-2692161382

[2025-03-01 11:35:33.740] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/kindle/uk/search?mediaType=book&;query=Cujo&author=Stephen+King

@Vito0912 commented on GitHub (Apr 13, 2025): Because I just read this again. > The logs from ABS do not show the semicolon being added, but the semicolon is present when the request is received by abs-tract. That's not the case. If it were, then this would be 100% due to a misconfigured proxy. See: https://github.com/advplyr/audiobookshelf/issues/4004#issuecomment-2692161382 > [2025-03-01 11:35:33.740] DEBUG: [CustomMetadataProvider] Search url: http://192.168.8.219:5555/kindle/uk/search?mediaType=book&;query=Cujo&author=Stephen+King
Author
Owner

@ahobsonsayers commented on GitHub (Jul 19, 2025):

Apologies for reviving this - I've read the replies but I'm still not clear if ABS has resolved this issue.

As the author of abs-tract, is there anything I can do to help? If we can't figure out where the ; is coming from, maybe I could just do some handling my side. This is obviously not the preferred solution, but if it's required to resolve this, then I guess I can see what I can do.

If I helps at all, I have had another issue opened about this, and the issue seems to imply it only occurs on quick match. Maybe this could help replication, as I know people were having trouble recreating it?

See https://github.com/ahobsonsayers/abs-tract/issues/23

@ahobsonsayers commented on GitHub (Jul 19, 2025): Apologies for reviving this - I've read the replies but I'm still not clear if ABS has resolved this issue. As the author of abs-tract, is there anything I can do to help? If we can't figure out where the ; is coming from, maybe I could just do some handling my side. This is obviously not the preferred solution, but if it's required to resolve this, then I guess I can see what I can do. If I helps at all, I have had another issue opened about this, and the issue seems to imply it only occurs on quick match. Maybe this could help replication, as I know people were having trouble recreating it? See https://github.com/ahobsonsayers/abs-tract/issues/23
Author
Owner

@advplyr commented on GitHub (Jul 19, 2025):

Apologies for reviving this - I've read the replies but I'm still not clear if ABS has resolved this issue.

As the author of abs-tract, is there anything I can do to help? If we can't figure out where the ; is coming from, maybe I could just do some handling my side. This is obviously not the preferred solution, but if it's required to resolve this, then I guess I can see what I can do.

If I helps at all, I have had another issue opened about this, and the issue seems to imply it only occurs on quick match. Maybe this could help replication, as I know people were having trouble recreating it?

See ahobsonsayers/abs-tract#23

The linked issue looks to be unrelated to this. There is no semicolon in the query param.

The only thing I can think of with this issue is the URLSearchParams.toString function has a bug with encoding. Since no one has been able to reproduce that semicolon my guess is it is specific to the users setup. Something with character encoding.

We can see the issue is not abs-tract and not proxy/routing because the URL has the semicolon before making the request.

For the issue you linked, that is definitely a bug with Abs because it is an unhandled rejection. We should open a separate issue for that. If you can get the full payload that is coming back from that request that would help

@advplyr commented on GitHub (Jul 19, 2025): > Apologies for reviving this - I've read the replies but I'm still not clear if ABS has resolved this issue. > > As the author of abs-tract, is there anything I can do to help? If we can't figure out where the ; is coming from, maybe I could just do some handling my side. This is obviously not the preferred solution, but if it's required to resolve this, then I guess I can see what I can do. > > If I helps at all, I have had another issue opened about this, and the issue seems to imply it only occurs on quick match. Maybe this could help replication, as I know people were having trouble recreating it? > > See [ahobsonsayers/abs-tract#23](https://github.com/ahobsonsayers/abs-tract/issues/23) The linked issue looks to be unrelated to this. There is no semicolon in the query param. The only thing I can think of with this issue is the [URLSearchParams.toString](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/toString) function has a bug with encoding. Since no one has been able to reproduce that semicolon my guess is it is specific to the users setup. Something with character encoding. We can see the issue is not abs-tract and not proxy/routing because the URL has the semicolon before making the request. For the issue you linked, that is definitely a bug with Abs because it is an unhandled rejection. We should open a separate issue for that. If you can get the full payload that is coming back from that request that would help
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/audiobookshelf-advplyr#2590
No description provided.