advplyr
9d7d4c6902
Update filterData for authors/series when added/removed
2023-08-18 14:40:36 -05:00
advplyr
7222171c5b
Update checking empty series to load from Db
2023-08-17 17:58:57 -05:00
advplyr
6d6e8613cf
Update library API endpoints to load library items from db
2023-08-13 17:45:53 -05:00
advplyr
6056c14926
Update podcast controller to load library items from db
2023-08-12 17:29:08 -05:00
advplyr
345ff1aa66
Update author API endpoints to load library items from DB
2023-08-06 15:06:45 -05:00
advplyr
6814adffcc
Update:Only load feeds when needed
2023-07-17 16:48:46 -05:00
advplyr
d0cd512be8
Fix:Crash when updating sequence on series #1919
2023-07-17 08:09:08 -05:00
advplyr
ddc54c8811
Update:Downloading library item shows log on the server with username #1461
2023-07-15 13:39:12 -05:00
advplyr
f4497acd48
Remove API routes for removing all items and purging media progress
2023-07-09 14:07:30 -05:00
advplyr
0ac63b2678
Update Series and Author model to be library specific
2023-07-08 09:57:32 -05:00
advplyr
cf7fd315b6
Init sqlite take 2
2023-07-04 18:14:44 -05:00
advplyr
d0bce2949e
Add:FFProbe api endpoint
2023-06-25 16:16:11 -05:00
advplyr
014fc45c15
Add:Audiobooks only library settings, supplementary ebooks #1664
2023-06-10 12:46:57 -05:00
advplyr
019063e6f4
Update:New API routes for library files and downloads
2023-05-28 12:34:22 -05:00
advplyr
4f75a89633
Update:New EBook API endpoint
2023-05-28 10:47:28 -05:00
advplyr
b52e240025
Add:Batch re-scan #1754
2023-05-27 14:51:03 -05:00
advplyr
179f11f55d
Add:Delete library items from file system #1439
2023-04-14 16:44:41 -05:00
advplyr
5a21e63d0b
Add:Delete library files, condense item options in more menu #1439
2023-04-13 18:03:39 -05:00
advplyr
718890cfad
Add:Download button to download full library item #580
2023-04-09 17:05:35 -05:00
advplyr
22b8622c67
Fix:Crash for invalid payload to update cover endpoint #1644
2023-04-09 15:01:14 -05:00
advplyr
5e5b674c17
Add:Remove all chapters button in chapter editor #1603
2023-04-09 12:47:36 -05:00
advplyr
022bf9d0ef
Show current episode download on init and download queue page updates
2023-03-05 10:35:34 -06:00
advplyr
b957e1a36b
Update:API endpoints for library and library item scan updated to POST requests
2023-02-03 17:50:42 -06:00
Lars Kiesow
08250e266e
Implement X-Accel Redirect
...
This patch implements [X-Accel](https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/ )
redirect headers as an optional way for offloading static file delivery
from Express to Nginx, which is far better optimized for static file
delivery.
This provides a really easy to configure way for getting a huge
performance boost over delivering all files through Audiobookshelf.
How it works
------------
The way this works is basically that Audiobookshelf gets an HTTP request
for delivering a static file (let's say an audiobook). It will first
check the user is authorized and then convert the API path to a local
file path.
Now, instead of reading and delivering the file, Audiobookshelf will
return just the HTTP header with an additional `X-Accel-Redirect`
pointing to the file location on the file syste.
This header is picked up by Nginx which will then deliver the file.
Configuration
-------------
The configuration for this is very simple. You need to run Nginx as
reverse proxy and it must have access to your Audiobookshelf data
folder.
You then configure Audiobookshelf to use X-Accel by setting
`USE_X_ACCEL=/protected`. The path is the internal redirect path used by
Nginx.
In the Nginx configuration you then configure this location and map it
to the storage area to serve like this:
```
location /protected/ {
internal;
alias /;
}
```
That's all.
Impact
------
I just did a very simple performance test, downloading a 1170620819
bytes large audiobook file from another machine on the same network
like this, using `time -p` to measure how log the process took:
```sh
URL='https://url to audiobook…'
for i in `seq 1 50`
do
echo "$i"
curl -s -o /dev/null "${URL}"
done
```
This sequential test with 50 iterations and without x-accel resulted in:
```
real 413.42
user 197.11
sys 82.04
```
That is an average download speed of about 1080 MBit/s.
With X-Accel enabled, serving the files through Nginx, the same test
yielded the following results:
```
real 200.37
user 86.95
sys 29.79
```
That is an average download speed of about 2229 MBit/s, more than
doubling the previous speed.
I have also run the same test with 4 parallel processes and 25 downloads
each. Without x-accel, that test resulted in:
```
real 364.89
user 273.09
sys 112.75
```
That is an average speed of about 2448 MBit/s.
With X-Accel enabled, the parallel test also shows a significant
speedup:
```
real 167.19
user 195.62
sys 78.61
```
That is an average speed of about 5342 MBit/s.
While doing that, I also peaked at the system load which was a bit lower
when using X-Accel. Even though the system was delivering far more data.
But I just looked at the `load1` values and did not build a proper test
for that. That means, I cant provide any definitive data.
Supported Media
---------------
The current implementation works for audio files and book covers. There
are other media files which would benefit from this mechanism like feed
covers or author pictures.
But that's something for a future developer ;-)
2023-01-23 00:02:27 +01:00
advplyr
70ba2f7850
Add:RSS feed for series & cleanup empty series from db #1265
2022-12-31 16:58:19 -06:00
advplyr
315c83e4c3
RSS feed for collection to update when any item in the collection is updated #606
2022-12-28 18:08:03 -06:00
advplyr
308ccf470f
Add:Open RSS feed for collection #606 #1265
2022-12-27 18:03:31 -06:00
advplyr
e803dcd325
Update:RSS feed API routes
2022-12-26 16:58:36 -06:00
advplyr
0ae853c119
Update library items batch get route
2022-12-12 17:36:53 -06:00
advplyr
5c31687a0f
Merge branch 'master' into server/respond-with-objects
2022-12-12 17:20:14 -06:00
advplyr
67db41a525
Update:Get item cover API endpoint to allow for returning the raw cover image
2022-12-04 16:23:15 -06:00
Paul Nettleton
b84882d9d1
Update LibraryItemController.js to respond with objects
...
Changes:
- `batchGet` (POST /api/items/batch/get)
2022-11-29 11:37:45 -06:00
advplyr
e2af33e136
Update:Refactor socket connection management into SocketAuthority
2022-11-24 15:53:58 -06:00
advplyr
e3ba739db5
Update:Encode & embed metadata API endpoints, separate cache & search endpoints into controllers
2022-11-19 13:28:06 -06:00
advplyr
7485cf1a26
Add:Batch select audiobook play button, item page mobile screen size cleanup
2022-11-19 10:20:10 -06:00
advplyr
7d569e1e3e
Update:Some incorrect status codes returned from API
2022-11-12 09:36:00 -06:00
advplyr
1118b8b782
Metadata embed and m4b merge fixes and cleanup
2022-11-05 13:13:52 -05:00
advplyr
c254dc5144
Add:Button for testing scan probes in audiobook tracks table
2022-10-02 15:24:32 -05:00
advplyr
97da73baf3
Update:Experimental metadata embed tool to use tone
2022-09-25 15:56:06 -05:00
Undergrid
014ad668a5
Update server/controllers/LibraryItemController.js
...
Co-authored-by: advplyr <67830747+advplyr@users.noreply.github.com>
2022-09-24 23:38:44 +01:00
Undergrid
62c59c634c
Update server/controllers/LibraryItemController.js
...
Co-authored-by: advplyr <67830747+advplyr@users.noreply.github.com>
2022-09-24 23:38:18 +01:00
Nick Thomson
dd8577354b
Fixing tabs again.
2022-09-24 22:20:49 +01:00
Nick Thomson
3e7a76574b
Switch to using the websocket for confirmation of batch updates, allowing the main request to be done asynchronously
2022-09-24 22:17:36 +01:00
Nick Thomson
2d6f9bab8b
Added totals of updated and unmatched books to toast shown at completion of batch quick match.
2022-09-24 18:57:09 +01:00
Nick Thomson
731cf8e4ed
Fix whitespace issues
2022-09-23 19:37:30 +01:00
Nick Thomson
dbb62069ef
Implementation of batch quick match API and related options dialog
2022-09-23 17:51:34 +01:00
advplyr
33ae93e61e
Fix:Add new podcast crash #920
2022-08-20 19:32:37 -05:00
advplyr
46668854ad
Add:Schedule podcast new episode checks
2022-08-19 18:41:58 -05:00
advplyr
fbbceaa642
Add:Persist RSS feeds in db #696 , Update:RSS feed data model
2022-06-07 18:29:43 -05:00
advplyr
acf22ca4fa
Testing video media type
2022-05-30 19:26:53 -05:00
advplyr
f41d6d5c77
Update multi-series edit for match and make into separate component with inner modal
2022-05-28 15:54:04 -05:00
advplyr
f002532c1e
Add:User listening sessions page, Update:Listening sessions to save media times and device info
2022-05-26 19:09:46 -05:00
advplyr
5187d0e55f
Add:Option to hard delete podcast episode from file system #488
2022-05-24 18:38:25 -05:00
advplyr
3e98b6f749
Update:Remove manual sorting of podcast episodes and default to sort by published at
2022-05-23 19:28:00 -05:00
advplyr
2a235b8324
Add:RSS feeds for audiobooks #606
2022-05-19 18:51:58 -05:00
advplyr
cc1181b301
Add:Chapter editor, lookup chapters via audnexus, chapters table on audiobook landing page #435
2022-05-10 17:03:41 -05:00
advplyr
7f27eabf3e
Update:Authors page check user can access library items and can edit
2022-05-08 18:48:57 -05:00
advplyr
2e070227ab
Update:Give full permissions to admin users except updating root or viewing root api token #137
2022-05-03 19:16:16 -05:00
advplyr
678dceefed
Add:Experimental generate podcast RSS feed #553
2022-05-02 16:42:30 -05:00
advplyr
84c12a6e7e
Add:Experimental embed metadata in audio files #141
2022-05-01 18:33:46 -05:00
advplyr
33dfb764fa
Add:Support for openaudible folder structure (subject to change), add support for treating single audio files in the root directory as library items #401
2022-04-27 19:42:34 -05:00
advplyr
d189ec74c9
Update item api endpoint to include user media progress with item if using query string include=progress and optionally episode=episodeid - for mobile app downloads
2022-04-25 19:03:26 -05:00
advplyr
034d858f18
Change new podcast modal to remove episode download list #494 , Fix error when importing many episodes (set max size to 5MB) #493 , show podcast episodes downloading and in queue on podcast landing page
2022-04-23 19:41:06 -05:00
advplyr
1ff5637c1b
Fix user issue sending POST requests to play endpoints #473
2022-04-21 07:24:54 -05:00
advplyr
35f3b5863f
Add library match all back updated to support v2 models
2022-04-20 18:05:09 -05:00
advplyr
3f6ed6dbf9
Add Podcast match tab and find covers
2022-04-13 18:13:39 -05:00
advplyr
ac097862fc
Update sorting and filtering for podcasts, add title ignore prefix to podcast metadata, check user permissions for podcast episode row UI
2022-04-11 19:42:09 -05:00
advplyr
23cc6bb210
Add published at to podcast episode row #428 , Fix podcast select episodes, fix save order of podcast episode, fix remove podcast episode
2022-04-10 11:01:50 -05:00
advplyr
0dd219f303
Add podcast episode auto download new episodes cron
2022-03-26 19:58:59 -05:00
advplyr
0e665e2091
Add playing podcast episodes, episode progress, podcast page, podcast home page shelves
2022-03-26 17:41:26 -05:00
advplyr
3150822117
New data model removing media entity for books
2022-03-26 11:59:34 -05:00
advplyr
28d76d21f1
Add expand library item authors to /items/:id route
2022-03-21 05:08:33 -05:00
advplyr
e1e6b46456
Create podcast manager and re-organize managers
2022-03-20 16:41:06 -05:00
advplyr
27f1bd90f9
Add:Restrict user permissions by tag
2022-03-20 06:29:08 -05:00
advplyr
57399bb79e
Clean up ApiRouter adding MiscController, move upload and scan to api endpoints
2022-03-18 11:51:55 -05:00
advplyr
099ae7c776
New data model play media entity, PlaybackSessionManager
2022-03-17 19:10:47 -05:00
advplyr
c4eeb1cfb7
New data model Book media type contains Audiobooks updates
2022-03-17 12:25:12 -05:00
advplyr
0af6ad63c1
New data model start of PlaybackSessionManager to replace StreamManager, remove podcast & ip npm package
2022-03-15 19:28:54 -05:00
advplyr
7348432594
New data model update for Match tab
2022-03-14 08:12:28 -05:00
advplyr
7d66f1eec9
New data model edit tracks page, match, quick match, clean out old files
2022-03-13 19:34:31 -05:00
advplyr
4bdef893af
New data model batch routes and batch editor
2022-03-13 17:10:48 -05:00
advplyr
65df377a49
New model update audio player, stream, collections
2022-03-12 19:59:35 -06:00
advplyr
73257188f6
New data model save covers, scanner, new api routes
2022-03-12 17:45:32 -06:00
advplyr
5f4e5cd3d8
New model update details, author and series inputs with create new, compare & copy utils
2022-03-11 19:46:32 -06:00
advplyr
2a30cc428f
New api routes, updating web client pages, audiobooks to libraryItem migration
2022-03-10 18:45:02 -06:00