advplyr
704fbaced8
Update:Download podcast episodes and embed meta tags #1488
2023-03-29 18:05:53 -05:00
advplyr
022bf9d0ef
Show current episode download on init and download queue page updates
2023-03-05 10:35:34 -06:00
mfcar
61c759e0c4
Add tasks queue dropdown
2023-03-05 11:15:36 +00:00
mfcar
34ac972130
Add download queue
2023-02-27 02:56:07 +00:00
advplyr
caacf461ab
Open rss feed metadataDetails optional
2023-02-25 08:53:09 -06:00
mfcar
0d3e6b1d0a
Add rss details configuration
2023-02-25 13:20:26 +00:00
advplyr
4039dc7968
Podcast episode download notification adding variables for mediaTags, podcastAuthor, podcastDescription, podcastGenres, episodeTitle, episodeSubtitle, episodeDescription
2023-02-15 15:57:04 -06:00
Philipp Rintz
e345c4cc9e
Correct the libraryTags variable
2023-02-15 00:00:34 +01:00
Philipp Rintz
7207efb4da
Add library tags variable to podcast notifications
2023-02-14 16:41:58 +01:00
advplyr
23f2c8a251
Fix:Replacing item cover remove old covers case insensitive #1391
2023-02-11 15:56:18 -06:00
advplyr
2ad03bcb9a
Fix:Bad backup files and backing up playlists, feeds #1485
2023-02-10 15:33:42 -06:00
advplyr
f9e6655359
Update:API endpoint for syncing multiple local sessions. New API endpoint to get current user. Deprecate /me/sync-local-progress endpoint
2023-02-05 16:52:17 -06:00
advplyr
3383ec2046
Add logs to playback session manager
2023-02-04 13:23:13 -06:00
advplyr
337cf90c4b
Add debug logs to playback sessions
2023-02-02 16:24:34 -06:00
advplyr
8908aa7a82
Fix:Podcast RSS feeds update on new/updated episodes #1435
2023-01-28 14:58:10 -06:00
advplyr
9ebe4b55dd
Merge pull request #1431 from lkiesow/x-accel
...
Implement X-Accel Redirect
2023-01-23 17:27:23 -06:00
advplyr
f7a3dbf209
Fix:Embed metadata tool embeds cover image
2023-01-22 18:02:57 -06:00
advplyr
d900093976
Fix:Make m4b embed cover image
2023-01-22 18:00:35 -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
6dec750d3e
Fix:Close open playback session on server when local playback session syncing from mobile
2023-01-15 15:00:18 -06:00
advplyr
62aec63d1d
Fix:Backups to not backup temp db files
2023-01-08 09:59:24 -06:00
advplyr
08d16ce7c2
Silence remove invalid sessions debug log
2023-01-08 09:15:11 -06:00
advplyr
2cb3808326
Fix:Loading backups catching failed backups
2023-01-08 09:11:55 -06:00
advplyr
bdb6f0c0aa
Update:Sync session API endpoint to not respond with a payload
2023-01-07 17:33:05 -06:00
advplyr
5a26704c32
Add:Option to disable backup of audio files in embed metadata tool #1370
2023-01-07 15:16:52 -06:00
advplyr
9a85ad1f6b
Fix:Check if Windows before cleaning file path for POSIX separators #1254
2023-01-05 17:45:27 -06:00
advplyr
9de7be1cb4
Update scanner, music meta tags and fix issue with force update
2023-01-02 16:35:39 -06:00
advplyr
44363f05ac
Start of new epub reader
2023-01-01 18:09:00 -06:00
advplyr
70ba2f7850
Add:RSS feed for series & cleanup empty series from db #1265
2022-12-31 16:58:19 -06:00
advplyr
c6763dee2d
Remove invalid RSS feeds on init and remove feeds when associated entity is removed
2022-12-31 14:08:34 -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
061695f922
Add:API endpoint for opening RSS feed for collection #606 #1265
2022-12-26 17:48:39 -06:00
advplyr
e803dcd325
Update:RSS feed API routes
2022-12-26 16:58:36 -06:00
advplyr
0717ae39db
Fix music fine file with inode
2022-12-24 11:12:39 -06:00
advplyr
33e183b802
Merge branch 'master' into socket-fixes
2022-12-23 07:27:14 -06:00
advplyr
b884f8fe11
Laying the groundwork for music media type #964
2022-12-22 16:38:55 -06:00
Paul Nettleton
2cba83f1dd
Server socket event fixes
2022-12-22 16:26:11 -06:00
advplyr
616ffb8f79
Add:M4b tool configurable options bitrate/channels/codec #1029 #1257
2022-12-19 17:13:04 -06:00
advplyr
bc771a3a44
Delete DownloadManager.js
2022-12-19 16:20:18 -06:00
advplyr
d130dd6d5e
Fix:Setting file ownership for /config and /metadata/logs #584
2022-12-15 17:30:45 -06:00
advplyr
41e192c6a5
Update more vars
2022-12-12 17:52:20 -06:00
advplyr
6b654d3c2d
Update:Starting session for finished item sets the user start time back to 0
2022-12-12 17:18:56 -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
advplyr
180293ebc1
Update:Cleanup socket usage & add func for emitting events to admin users
2022-11-24 16:35:26 -06:00
advplyr
e2af33e136
Update:Refactor socket connection management into SocketAuthority
2022-11-24 15:53:58 -06:00
advplyr
64a8a046c1
Update:Backups API endpoints, add get all backups route, update socket init event payload
2022-11-24 13:14:29 -06:00
advplyr
a2f1723642
Update log level for RSS feed requests
2022-11-21 06:39:32 -06:00
Lars Kiesow
c307b1e6fb
No feed log level
...
This patch drops the log level for logging requests to non-existing
feeds from error to debug. The reasoning behind this is that this is a
client error and a client error is returned and can be handled by the
client.
Otherwise anyone can easily spam the logs with error messages by just
requesting non-existing feeds.
2022-11-21 01:54:25 +01:00
advplyr
e3ba739db5
Update:Encode & embed metadata API endpoints, separate cache & search endpoints into controllers
2022-11-19 13:28:06 -06:00
advplyr
2e5e02472c
Update:Playback session sync local status codes
2022-11-17 17:00:37 -06:00
advplyr
c7794e00f6
Update:Author image from cache API status codes
2022-11-16 15:32:32 -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
Keagan Hilliard
3824154c15
Forgot to update the merge
2022-11-03 10:20:32 -06:00
Keagan Hilliard
586c8a550a
Removed a noisy log and limit chapter embedding to items with only 1 audiofile
2022-11-03 10:09:49 -06:00
Keagan Hilliard
d57effe97c
Fixed a couple of issues, should be working well now
2022-11-03 09:32:50 -06:00
Keagan Hilliard
c1938f78c2
Added json file support
2022-11-02 19:40:50 -06:00
advplyr
efecf7ed82
Update:Podcast episode auto download schedule setting for max new episodes to download #1091
2022-10-26 16:55:16 -05:00
advplyr
142205f060
Add:Purge items cache button and api endpoint
2022-10-02 14:46:48 -05:00
advplyr
02d997897c
Add:Cancel m4b merge button #1008
2022-10-02 14:31:04 -05:00
advplyr
39979ff8a3
Add:Tasks widget in appbar for merging m4bs & remove old m4b merge routes
2022-10-02 14:16:17 -05:00
advplyr
6701551289
Fix:Ensure podcast library item folder exists before downloading episodes #1019
2022-09-30 16:55:31 -05:00
advplyr
f36a5eae6d
Update:Audiobook merge to set metadata with tone and replace m4b in library item #594
2022-09-26 18:07:31 -05:00
advplyr
97da73baf3
Update:Experimental metadata embed tool to use tone
2022-09-25 15:56:06 -05:00
advplyr
7aa89f16c9
Add:Notification system queueing and queue limit #996
2022-09-25 10:19:44 -05:00
advplyr
88726bed86
Update:Notification system descriptions #996
2022-09-25 09:46:45 -05:00
advplyr
0ef2a2e4b6
Update:Notifications onTest for testing and parse title/body template #996
2022-09-24 16:15:16 -05:00
advplyr
37a3fdb606
Notifications UI update and delete endpoint
2022-09-23 18:10:03 -05:00
advplyr
b08ad8785e
Notification create/update events UI
2022-09-22 18:12:48 -05:00
advplyr
ff04eb8d5e
Add:Notification settings, notification manager trigger #996
2022-09-21 18:01:10 -05:00
advplyr
9a7503cde2
Start adding notification manager
2022-09-20 18:08:41 -05:00
advplyr
70ef09f451
Add:Podcast quickmatch attempts quick matching unmatched episodes #983
2022-09-15 18:35:56 -05:00
advplyr
3dc848a106
Update:Podcast episodes look for new episodes after this date add input to set the max # of episodes to download
2022-09-03 08:06:52 -05:00
advplyr
575ec9d00b
Fix:Update library item RSS feed if item was updated #939
2022-08-28 15:41:51 -05:00
Ron Heft
6b02779e0f
Fix currentTime not updating on the local session
2022-08-26 20:28:41 -04:00
advplyr
e611d7a8fd
Update:Local session sync lock to prevent duplicate inserts
2022-08-23 18:10:06 -05:00
advplyr
0aadf579f3
Update:Backups include author images #781
2022-08-20 15:10:31 -05:00
advplyr
46668854ad
Add:Schedule podcast new episode checks
2022-08-19 18:41:58 -05:00
advplyr
2304f37cbe
Add:Schedule periodic library scans #655
2022-08-17 18:44:21 -05:00
advplyr
7a69afdcd9
Add:Podcast auto-download option to delete an episode if it exceeds X max episodes to keep #903
2022-08-15 17:35:13 -05:00
advplyr
24a142e718
Add:RSS feed icon over library item covers when feed is open #893
2022-08-05 19:23:18 -05:00
advplyr
d93d4f3236
Update:Auto-download new podcast episode check max failed attempts to 24
2022-07-31 14:00:17 -05:00
advplyr
516c5c3308
Add:Podcast episode match tab and find episode by title api route
2022-07-31 13:12:37 -05:00
advplyr
8416f2d6be
Fix:Remove invalid playback sessions on server start #868
2022-07-29 17:13:46 -05:00
advplyr
18123664ee
Fix:RSS Feed cover, Update:Remove experimental scanner
2022-07-18 18:39:51 -05:00
advplyr
ab08d83c04
Remove archiver dependency
2022-07-06 20:12:14 -05:00
advplyr
415e0a7b5a
Remove dependency date-and-time
2022-07-06 19:18:27 -05:00
advplyr
d0af1c3c9a
Remove fs-extra dependency
2022-07-05 19:53:01 -05:00
advplyr
d3dd13eae5
Remove node-stream-zip dependency
2022-07-05 19:24:16 -05:00
mcdinner
ebb2c5f791
Remove cachePathExists property (Issue #800 )
...
Remove cachePathsExist property to ensure missing cache directories are recreated when EnsureCachePaths() called.
2022-07-03 16:35:12 +02:00
advplyr
140b718592
Merge pull request #699 from jmt-gh/698_metadata_downloads_not_created
...
Update some instances of mkdir to ensureDir (#698 )
2022-06-08 16:05:19 -05:00
advplyr
b7e546f2f5
Update:Remove node-cron dependency
2022-06-07 20:04:51 -05:00
advplyr
26ef275ab4
Update:Remove image-type dependency
2022-06-07 19:53:05 -05:00
advplyr
416db7c981
Update:Remove read-chunk dependency
2022-06-07 19:44:38 -05:00
advplyr
03bffb725a
Update:Remove rss feed dependencies add node-xml lib
2022-06-07 19:25:14 -05:00
advplyr
fbbceaa642
Add:Persist RSS feeds in db #696 , Update:RSS feed data model
2022-06-07 18:29:43 -05:00
jmt-gh
f5aae25cc8
remove random character
2022-06-06 18:52:08 -07:00
jmt-gh
8d03943acb
remove extra debug log
2022-06-06 18:51:49 -07:00
jmt-gh
853513b926
update approach for ensuring download directory always exists
2022-06-06 18:51:08 -07:00