[Enhancement]: enable auto-resume for accessibility #2936

Closed
opened 2026-04-25 00:11:57 +02:00 by adam · 6 comments
Owner

Originally created by @Borgix on GitHub (Aug 8, 2025).

Type of Enhancement

Server Backend

Describe the Feature/Enhancement

Feature request:
Add an “Auto-Resume” option that, on startup or user request, automatically plays the last actively-listened book or audio file from the user’s continue listening queue. This feature would save users the need to manually select and play their last book, making Audiobookshelf ideal for hands-free or appliance-style setups (e.g., single-button players). Auto-resume should start playback from the most recent position, optionally configurable to play a set duration or until paused. This would improve usability for dedicated audiobook devices and visually impaired users.

Some of these features are partly available in the Android app, but not fully or reliably enough for my use case. Ensuring Tailscale is running and connected is also far too complex for my mother-in-law. I’m building a Raspberry Pi client where I currently have to automate everything using Selenium UI scripting. With these features natively supported, she could simply press a single “On” button to start her last book with a sleep timer, without any manual steps. While we can help with downloading files, we can’t always be there to start or restart playback for her each night.

Why would this be helpful?

This feature would make Audiobookshelf much more user-friendly for hands-free listening, dedicated audio devices, or users with accessibility needs. I’m working on a listening appliance for my 86-year-old mother-in-law, so she can press one button and start listening to her last audiobook without interacting with the UI. She’s visually impaired and can’t see or click “continue listening.” Auto-resume would simplify daily use, eliminate manual navigation, and enable true “appliance mode” for families, children, and visually impaired users.

Future Implementation (Screenshot)

Future Implementation (Screenshot):
Auto-resume should be triggered via an API call rather than a new UI button, making it ideal for hardware or accessibility integrations. The API could return the current book and allow setting a sleep timer and listening speed. Alternatively, auto-resume could be enabled by URL parameters, e.g., http://[server-name]/audiobookshelf/item/[item-id]?auto-resume=yes&sleep-timer=15. This would let external devices or scripts start playback with the desired options, without UI interaction, supporting hands-free and accessible use cases.

Audiobookshelf Server Version

2.27.0

Current Implementation (Screenshot)

No response

Originally created by @Borgix on GitHub (Aug 8, 2025). ### Type of Enhancement Server Backend ### Describe the Feature/Enhancement **Feature request:** Add an “Auto-Resume” option that, on startup or user request, automatically plays the last actively-listened book or audio file from the user’s continue listening queue. This feature would save users the need to manually select and play their last book, making Audiobookshelf ideal for hands-free or appliance-style setups (e.g., single-button players). Auto-resume should start playback from the most recent position, optionally configurable to play a set duration or until paused. This would improve usability for dedicated audiobook devices and visually impaired users. Some of these features are partly available in the Android app, but not fully or reliably enough for my use case. Ensuring Tailscale is running and connected is also far too complex for my mother-in-law. I’m building a Raspberry Pi client where I currently have to automate everything using Selenium UI scripting. With these features natively supported, she could simply press a single “On” button to start her last book with a sleep timer, without any manual steps. While we can help with downloading files, we can’t always be there to start or restart playback for her each night. ### Why would this be helpful? This feature would make Audiobookshelf much more user-friendly for hands-free listening, dedicated audio devices, or users with accessibility needs. I’m working on a listening appliance for my 86-year-old mother-in-law, so she can press one button and start listening to her last audiobook without interacting with the UI. She’s visually impaired and can’t see or click “continue listening.” Auto-resume would simplify daily use, eliminate manual navigation, and enable true “appliance mode” for families, children, and visually impaired users. ### Future Implementation (Screenshot) **Future Implementation (Screenshot):** Auto-resume should be triggered via an API call rather than a new UI button, making it ideal for hardware or accessibility integrations. The API could return the current book and allow setting a sleep timer and listening speed. Alternatively, auto-resume could be enabled by URL parameters, e.g., `http://[server-name]/audiobookshelf/item/[item-id]?auto-resume=yes&sleep-timer=15`. This would let external devices or scripts start playback with the desired options, without UI interaction, supporting hands-free and accessible use cases. ### Audiobookshelf Server Version 2.27.0 ### Current Implementation (Screenshot) _No response_
adam added the enhancement label 2026-04-25 00:11:57 +02:00
adam closed this issue 2026-04-25 00:11:58 +02:00
Author
Owner

@nichwall commented on GitHub (Aug 8, 2025):

I'm confused. You can access everything on the server through the API, there is not a need to use Selenium to spoof a web client (all apps, the web client, and 3rd party scripts integrate access server data through the API), especially if you are trying to get a client to run headless.

You can then have your script call the play endpoint for the current/most recent library item when the button is pressed.

Edit to add: actual playback is handled by the client, the server just provides the files. Sleep timers are implemented client side and don't use the API.

@nichwall commented on GitHub (Aug 8, 2025): I'm confused. You can access everything on the server through the API, there is not a need to use Selenium to spoof a web client (all apps, the web client, and 3rd party scripts integrate access server data through the API), especially if you are trying to get a client to run headless. You can then have your script call the play endpoint for the current/most recent library item when the button is pressed. Edit to add: actual playback is handled by the client, the server just provides the files. Sleep timers are implemented client side and don't use the API.
Author
Owner

@Borgix commented on GitHub (Aug 8, 2025):

Sorry if this is already implemented—I was mostly focused on using the web client as a player. Can you point me to the docs where this is described?

@Borgix commented on GitHub (Aug 8, 2025): Sorry if this is already implemented—I was mostly focused on using the web client as a player. Can you point me to the docs where this is described?
Author
Owner

@advplyr commented on GitHub (Aug 8, 2025):

I'm also confused about this. When you call the play endpoint the server returns an array of audio tracks that the client would play with an audio player.

@advplyr commented on GitHub (Aug 8, 2025): I'm also confused about this. When you call the play endpoint the server returns an array of audio tracks that the client would play with an audio player.
Author
Owner

@Borgix commented on GitHub (Aug 8, 2025):

As I said, I was thinking about automating the webplayer with easy extension, rather than creating my own player.

@Borgix commented on GitHub (Aug 8, 2025): As I said, I was thinking about automating the webplayer with easy extension, rather than creating my own player.
Author
Owner

@nichwall commented on GitHub (Aug 8, 2025):

As I said, I was thinking about automating the webplayer with easy extension, rather than creating my own player.

But it's going to be a headless client with just a physical button for her? That sounds like a dedicated headless client.

You could also look at one of the 3rd party clients that have been created, such as https://github.com/AlbanDAVID/Toutui. I haven't used it but it runs in the terminal so you could probably interface with that directly. More 3rd party clients https://www.audiobookshelf.org/faq/app#are-there-any-3rd-party-apps

@nichwall commented on GitHub (Aug 8, 2025): > As I said, I was thinking about automating the webplayer with easy extension, rather than creating my own player. But it's going to be a headless client with just a physical button for her? That sounds like a dedicated headless client. You could also look at one of the 3rd party clients that have been created, such as https://github.com/AlbanDAVID/Toutui. I haven't used it but it runs in the terminal so you could probably interface with that directly. More 3rd party clients https://www.audiobookshelf.org/faq/app#are-there-any-3rd-party-apps
Author
Owner

@Borgix commented on GitHub (Aug 8, 2025):

As I said, I was thinking about automating the webplayer with easy extension, rather than creating my own player.

Call it a senior moment or just not thinking through enough.

Thank you for the pointers to the other clients. I'm sure I will be able to figure it out.

@Borgix commented on GitHub (Aug 8, 2025): > > As I said, I was thinking about automating the webplayer with easy extension, rather than creating my own player. Call it a senior moment or just not thinking through enough. Thank you for the pointers to the other clients. I'm sure I will be able to figure it out.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#2936