Last updated: September 15, 2020
These instructions are for the Booksonic Legacy server. This server is no longer updated and it is not recommended to install it. Please see the guide for the new and improved Booksonic Air server available here
If you are like me then you probably love audiobooks and services like Amazon’s Audible that lets you stream your books directly to your phone. Audible is great but what about all those other books that you buy on cd in the store or as mp3 downloads online, or how about those that you download for free from sites like Librivox? Those you need to put on your phone before you can listen to them right? No, you actually don’t anymore.
Until recently I used a software called Subsonic to stream audiobooks to my phone. Subsonic is a great piece of software but it’s aimed at music so there are some problems with using it for streaming audiobooks, for example you can’t get book descriptions in the app. Back in October 2015 this lead me to start looking for a replacement but surprisingly it seems there really aren’t any, or at least there wasn’t back then. Now there is Booksonic, the fork of Subsonic and DSub that I started working on when I realized that was going to be stuck with Subsonic for my streaming needs.
So what is Booksonic then, well the short version is that it’s Subsonic for audibooks. You install a server software on your home PC and then you connect to it with your android phone and it will allow you to stream all your audiobooks to your phone regardless of if you are at home or not. The server is completely free but the Android app will cost you a one time fee of $3, well worth it if you ask me but you probably should ask someone else since I’m a bit partial, being the developer and all.
Now that we know what Booksonic is lets get started installing it. In this guide we will be installing it on a windows machine but it’s also available as a war file so you can run it with tomcat. To make it easier on yourself when running it on other operating systems then Windows I recommend using the Booksonic Docker container created by Linuxserver.io
If you want to run Booksonic in the cloud I recommend renting a Contabo VPS and installing booksonic there. It starts as low as 3.99 euro for 300GB storage and 4GB ram.
Obs, if you click the contabo links and rent a server I will receive a small commision at no extra cost to you, this has not influenced my decision to recommend them in any way, they are what I use personally and what the Booksonic demo is hosted on.
If you don’t want to rent a server you can install it on a computer you have at home.
Step 1. Getting the server
The server is available for download at booksonic.org, since we are installing it on a windows machine we will be downloading the Windows Installer version
Step 2. Installing the server
Once the file has been downloaded you double click it to start the installation. The installer will start to look for java on your machine and if it can’t find it it will ask if you want to install it, hit yes. Once it finds java you will get a welcome screen, here you should click the next button. The next screen will allow you to change where to install booksonic, unless you have a specific reason for changing it you can leave it as it is and click Install. Now uncheck the view getting started document checkbox and hit finish. Congratulations, you have installed the Booksonic server!
Step 3. Setting up the audiobook files
Now it’s time to start setting your up audiobooks. Find somewhere on your computer where you want to store them and go there. I have a folder called Ljudbocker on an external drive called F so for me the location would be F:\Ljudbocker\. In your folder create a new folder for every author you have. It will look something like this
Now go into into the author folders and create new folders for every book. I like to use the format “year – Bookname”, that way I can quickly see what order they should be listened to directly in my file manager but you can use just the bookname as well if you want. Booksonic will get the year from the tags inside the files. As an example this is what my folder for Arthur Conan Doyle looks like this.
Now it’s time to put in your files. Booksonic can handle all major audio file formats. Put your audio files into the books folder, to add a cover put it in as a jpg called cover, if you want to add a book description create a file called desc.txt and put you description in that. To add a narrator you create a file called reader.txt and put in your narrator there. There is a third party tool called Booksonic Library Editor that can help you manage these txt files which has worked great for me.
As an example here is my directory for A Study in Scarlet.
As a last step we are going to set the tags of the music files. For editing those I am going to use a free piece of software called Mp3Tag, it can handle a lot of different formats including mp3, m4a and m4b. I should probably note here that while m4a and m4b usually works with Booksonic there have been some reports about weird bugs with them so I would recommend using mp3 files if possible.
How you prefer to tag the files is up to you but for me I do it like this. If I have a chapter name I set that as the title, if not I set the books name as the title. I set the Author as both Artist and Album artist. The Album is of course the book name, the year I prefer to set as the year the book was released but if you want to use the year the audiobook was released then go for it. Then I set the track number and the cover image. If you want to save some space you don’t have to set the cover in the tags since you already have the jpg in the folder but I recommend you set it anyway in case you want to use it somewhere else. To make it a bit easier for you here is what it looks like for my track 1 of A Study in Scarlet.
Step 4. Configuring the server
Now that you have the server and files in place we need to configure the server so it knows where to find your audiobooks and since we are going to make the server accessible from the Internet we are also going to change the default password. To do this click this URL and it will open Booksonic for you in a new tab. http://localhost:4040
Once the page has loaded you sign in with both the username and password admin
When you sign in for the first time you will be shown a getting started guide. The first thing on this guide is changing the password so lets do that, click on Change administrator password and it will take you to the manage users page. Make sure the user admin is selected and then check the change password box. Enter your new password in the textboxes that appear and hit save. You will be signed out, don’t worry about that, it is normal.
Sign back in with your new password and you will once again see the getting started guide. This time click on Set up media folders. You will see that there is already one folder added that is called music, you can rename that to whatever you want but I usually go Audiobooks, in the field for the folder put in the location to the folder containg your author folders, in my case this was F:\Ljudbocker\. Once that is done, scroll to the bottom and hit save. After this I recommend you do a scan, you can do this by clicking the link called Scan media folders now.
Click on home in the top navigation bar and you will be taken back to the getting started guide, at the bottom of the page you will see a link called Don’t show this again, click that. An alert box will pop up telling you how to get the guide again, click ok.
Step 5. Enable internet access
Congratulations, the server has been completely set up and if you only want to use it at home you are ready, if you want to use it from outside your own network you need to port forward port 4040. Since port forwarding is different on every router I am not going to shw you how to do that but you can find instructions for your router at this portforwarding.com page. You only need to forward port 4040 and should ignore port 80.
Step 6. Installing the Android app
Now it is time to install the Android app. You can find it by searching for Booksonic on Google Play or clicking this link
Step 7. Configuring the app
It’s time to configure the app yo use your server and doing so is very easy.
When you open the app you will see a login prompt. It is prefilled with the information for the demo server but since we have just set up our own server we want to use that instead. Change the address, username and password so they match your server and then click on sign in. If you don’t know the address of your server, click demo and move on to the next paragraph where we go in to more detail about this.
If you want to add more servers or change the server you just added you can do so by tapping the three lines at the top of the left, this will get you a sidemenu or a drawer as it is called in the android world. Click on settings. Now click on servers. You will already have your server or a Demo server here. You can either set up another server or modify the one you already have.
Before we set the server address we will need the IP of your server so on the machine you installed Booksonic go to popeen.com/tools/ip, this will show you your IP address. Now on your app hit server address and set it to http://IP:4040 where IP is the ip of your server. Remember to use both http:// and :4040 or it will not work.
Now set the username and password in the same way and hit Test connection. It should say Connection is OK, if you get anything else go back and redo step 5 and if you still can’t get it to work you can contact me and ask for help at support@ptjwebben.se or leave a comment below. Once the tests sais Connection is OK you can hit the arrow at the top left corner a couple of times until you get the lines again, click them and the click home.
Congratulations, you are now ready to start streaming your own audiobooks.
I hope this guide has helped you understand how to use Booksonic and if you have any questions at all don’t hesitate to leave a comment below, send me an email at support@ptjwebben.se, visit /r/Booksonic on reddit or read the Booksonic FAQ. If you have any suggestions on how to make Booksonic better I would love to hear them (once again, here, email or reddit).
To end this post I would like to recommend you go and check out David Clarke at . He is the reader of the free Sherlock Holmes books (LibriVox recordings) you saw in my collection and the quality of the recordings are just as good as the stories. If you are seeing this David, thank you once again for your amazing work!
Thanks – I did read and well done with the comprehensive instructions – I’m sure you will help a lot of people – have you come across the Inkstone app Audiobook – it allows commercial and free audiobooks to be downloaded – including Librivox and is built to play those audiobooks in a user friendly manner
Actually no I hadn’t, I looked it up now thou. The problem for me is that they don’t seem to have an Android version so I can’t try it out but the fact that they have premium services built in to the app sounds great. Adding LibriVox support is something I have planned for Booksonic as well but I thought the DRM on Audible would prevent us from using a third party app, will have to look in to this more and see if it would be possible to add it as well because that would be awesome.
Any instructions for a linux server?
The configurations should be the same, as for installation I recommend you check out this docker container written by a guy called ironicbadger.
EDIT: There was also a guide for installing it on Linux posted in the comments by Luite, you can find it here
Thanks, but that doesn’t explain anything for someone not in the know about docker 🙁
Sorry for the late reply, but if you or anyone else reading this are still looking for instructions check out the instructions posted by Luite below
Here’s my lessons learned installing Booksonic server on Linux (Ubuntu 17:04), turned into installation instructions: https://goo.gl/uyUJNB
Love Booksonic so far.
Thats great!
I’ll add a link to your comment in the post
Hey looks exactly like what I’m searching for my Qnap NAS. One question about the app: is it also possible to download the audiobooks from the server for listening without active internet connection? Thats a must have for my needs.
Yeah, the app will always cache the files for offline use. How many tracks you want it to preload when you start to listen to a book can be set in the app settings and it’s possible to have different settings for wi-fi and mobile data.
By default it is allowed to use 2GB for cache (of I remember correctly) but this can also be changed in the settings.
Does this server work on qnap nas.. if so is there instructions for installation
Honestly, I don’t know but it seems that it is possible to install Subsonic and if so Booksonic should be able to be installed as well.
I would try the instructions for Tomcat installation found here
https://ridwankhan.com/installing-subsonic-on-a-qnap-nas-7a942c4542d0
Instead of the Subsonic file use the war file from https://booksonic.org/download
@popeencom: I’ve been playing with your software, but am having a hard time managing my audiobooks. (Reason I am looking for another streaming server for audiobooks than Plex is because of the lack of support for bookmarking the last point of play in a book). I installed the server on Win7.
When testing the basics for local file access I notice that the created c:\audiobooks is found. However, when adding w:\àudiobooks2 or \\POLAR_WIND\audiobooks3 to the mix, these folders are not found (I have created them in windows and have added a few mp3 files for testing). What could be the cause of this?
In the webbrowser, when playing a file by clicking on the play-arrow (index page), my Chrome responds by downloading the file. In IE it starts playing the file. How to fix this?
When playing the file half way, stopping playback, closing and reopening the index page, and play the same file, it starts from the beginning. Shouldn’t it remember where I was (past point of play)?
Finally I would like to test your android app (no plans for iOS?). When comparing to Plex, I am uncertain if your server really streams, or that download of the audiobook is required. I’ve been reading that you are caching files?
Hi, sorry to hear that you are having some trouble.
First of all what version of the server are you running?
I would guess that you can’t use the first one becuase of the ´ on top of the a, if you use a regular a it should work fine.
The network drive is a bit interesting and something I haven’t thought about before so thank you for bringing it to my attention. What you need to do is set what user should be used to access the drive booksonic service settings.
I will be posting instructions for this in a few minutes.The instructions are available here.Every device (or browser) you use will have it’s own player settings, it sound like your chrome player is set to use an external player. What I would recommend is that you set it to use the webplayer instead, usually the easiest thing is to just delete all the players for your user, next time you start to use Booksonic the server will just create a new one for you with the standard settings which should be web player for chrome. You delete your players at settigs->players.
In the app yes, the web player doesn’t have this functionality at the moment.
No, sorry. I have no plans for iOS however you could use any Subsonic app for iOS to connect to the server. I have heard good things about AVSub but I haven’t tried it myself.
Yeah, technically it pre downloads the books when you hit play to a cache and plays them from there. You can set how many tracks you want to pre download and how much space you will allow the cache to use.
I just stumble across BookSonic and I have a question regarding running Subsonic and Booksonic on the same machine.
I currently have Subsonic installed and have used it for several years now. Looks like Subsonic and Booksonic both uses http://localhost:4040. How do I differentiate Subsonic vs Booksonic at http://localhost:4040?
You could technically change the port for one of them but due to the fact that the Booksonic server is just a modified Subsonic server you won’t be able to run them on the same machine anyway unless you use something like docker (Booksonic is availiabe as a docker container through a third party, link is on booksonic.org).
They way I have mine set up is I use only a Booksonic server, then I have one folder for music and one for audiobooks. I then have two different accounts, one that only has access to the music folder and one that only has access to the audobook folder. It works great.
I just installed the server and have a couple questions.
1) Can I run my regular subsonic server and the booksonic server side by side? I’d still like to access my music using Dsub.
2) It shows that it scanned my library and there are 317 books, but nothing showing up when I go to the library.
1. No you can’t but you can still continue to use use DSub for music and Booksonic for audiobooks, thats the way I do it too. The way I have mine set up is I use only a Booksonic server, then I have one folder for music and one for audiobooks. I then have two different accounts, one that only has access to the music folder and one that only has access to the audiobook folder. It works great.
2. That sounds very weird. Contact me at support@ptjwebben.se and I will try to help you out with it.
It would have been nice if it contained cloud player, wherein people could paste their cloud url to stream abooks directly from those hosts.
Anyways , a good program, but only limitation is it depends on diskspace of local drive. I have many audiobooks stored in my dropbox than on my HDD.
I won’t be adding cloud support directly to the app BUT I am currently working on a framework for something I call Emulated Servers that will allow for online hosts like Dropbox, Librivox etc to be used as separate servers inside the app.
I would really like to organize my audiobooks by genre first, then author and then title. Your server does not seem to support that kind of subdivision. My desire is based on knowing the rest of my family will not be interested in plowing through my large sci-fi collection to get to their fiction or non-fiction books.
Thanks for your hard work!
Hi all,
I just finished installing Booksonic on my QNAP NAS through Container Station. Unfortunately I have not been able to add any media folders. My audiobooks are stored locally on this same NAS. I have tried multiple formats such as \\\share name\etc, /share/CACHE_DATA2/etc/etc. No matter what I add Booksonic does not find the folder. Could this be a permissions issue not allowing Booksonic to access the folder? Any ideas on how I can get my media folders added?
Thanks,
Bryan
It sounds like it might be yeah. Could also be that Container Station is using some kind of sanbox that prevents it from seeing the folders. Unfortunately I don’t know anything about Container Station so I can’t give you a good answer I’m afraid.
If you where using a windows shared folder I would recommend checking this small guide but that won’t help in your case, I’m mentioning it only in case anyone else reading this is having the problem on a windows folder.
https://popeen.com/2016/05/27/using-a-network-shared-folder-in-booksonic/
Seriously a shame to have to uninstall this. Why on earth you would take code from a project like subsonic and not think to modify it so that it could run alongside it. It is called standing on shoulders of giants. Not standing on a giants severed head laying claim to all that he had accomplished as your own.
I’m not going to run a completely separate vm/docker/container etc just because of your sloppiness.
I’m sorry you feel this way and I sort of get it too. But the thing is it wasn’t just sloppiness that made me not modify it, there are tools out there that requires the service to be named Subsonic to function. I decided that I wanted to support those as well.
That said I am working on a new solution where there will be no Subsonic server at all (well, at least not in the same way) so that you can use the Subsonic based server you prefer (in my case Madsonic)
Oh and as a last note, I really hope that people don’t think I accomplished Booksonic on my own, the fact is that the Booksonic part of both the server and the app is incredibly small compared to the Subsonic and DSub parts. I have always tried to be very clear about this.
still no love for IOS?
Hi, just a helpful little tip for those running the docker by linuxserver on Unraid: You need to add the context_path variable in the docker settings after the :4040 in the server address field. Mine wouldn’t connect otherwise.
So the server address needs to be as follows on the linuxserver docker in Unraid:
http://[your-ip-address]:4040/booksonic (or whatever you changed the context path to in the docker settings).
Just a heads up!
Thanks for this amazing software Popeen, really great!
So on iOS specifically, does the server automatically bookmark where the audio was last played? I’m using iSub and I couldn’t get this to work. Am I doing something incorrectly, or is this a feature thats only available on the app for Android?
The server itself doesn’t do it no.
But Subsonic (and therefore also Booksonic) has support for Bookmarks so if the app supports it it should work. As for if iSub supports it, I don’t know.
Absolutely great stuff. I set up server in docker container and it is totally amazing. My other home media run from a mini-dlna server, but that was not good enough for books. Running booksonic server from the same server machine with booksonic android clients on home devices is however superb. Keep up the great work and I will try to spread the word and donate.
Glad to hear you are liking it 🙂
Dear Popeen
you did a very good job in creating this software “Booksonic – Audiobook streamer”! Thank you
Nevertheless I do have some problems as I am a novice to linux. I am sure they are simple and I would be glad to learn from you:
1 First and most important:
Settings / Media folders:
Is it possible to create a media folder with Booksonic or only organize if / if not an existing media folder is being used / scanned for audiobooks
AND — is it possible to delete folders / audiobooks by using booksonic or does booksonic only deletes the link to the audiobook / folder
2 Please explain
More / Upload File
The destination of Upload is by default: /books/Incoming. And Actually there is also a tags on the Index-page: <>. Please explain why this is needed. I would like to delete this.
3 Plans to update the Index page?
As for now it is only possible to list Authors by Name. tags like <>, <>, type (fiction, fantasy, roman, historical…) are not possible to apply. Any plans to change this in the near future?
—-background information—
Booksonic is running on a Linux / Ubuntu Server without a GUI. I’m running the Server by terminal commands only.
Thanks for your help!
Henning
Hi,
I just installed, and it works great. However, is there a way to “track” the location in an audiobook? If I re-install or load booksonic on another device, it would be nice to sync where I left off.
Is this a feature that is already included? or do I need to enable something?
thanks
Hi,
Glad you like it.
This feature is already included. When you open the app on a new device the app should ask you if you want to keep playing where you left off on another device.
You can also continue any book where you last left it by going in to the book and clicking the play icon at the top bar instead of an individual track.
Bought the app today and installed the server.
So far so good and my 400+ audiobooks all look good though not looking forward to downloading pics for all of them.
I have a question though.
I am able to connect to the server on my cell signal but get server offline when on my home wifi. Any idea what I need to do to connect to the server when on the same network?
Thanks
This is just a guess but I think it has to do with how your router handles loopbacks. If you try to visit the server in the browser (using external IP) from your home network I am guessing you will see your router interface instead.
You might be able to change settings for this in your router but what I would do instead is just set up the local address in the app.
* Make sure you are connected to your wifi
* Go to settings -> servers -> your server
* Select Local network SSID and click the button, this will make the app save your current network as the home network
* Click ok
* Select Local network address and enter the local address for the server, then click ok
Now whenever you are at home it should connect over your local network instead of over the internet.
If this doesn’t work. Try to connect on your home network and when it fails, send me a log file, you can do that from the top three dots of the main screen.
Hi all
I’m planing to install the BookSonic Container (Docker) on a Qnap.
I tried earlier and getting the Container up and Running.
Well i like to add an SMB to the Book Sonic Server. So i can Store the Books on a normaly SMB Share on the Qnap and can also access to it additional on SMB.
Is there any guide who explain how to add an smb share over the Linux Container to the BookSonic?
This is the Container i like to use.
https://hub.docker.com/r/linuxserver/booksonic
Nevermind i got a solution.
It was a qnap docker thing
https://blog.linuxserver.io/2017/09/17/how-to-setup-containers-on-qnap/
Disappointed from Aduiobook treatment by Plex i am looking for an alternative and would like to ask two questions before investing more time into this:
1. From my time using Subsonic i remember to be able to have multiple users on the server. Does this also apply for Booksonic?
2. Do you have plans to integrate providers for metadata like Audible? Copy & Paste all the information into text files seems pretty time consuming at first sight.
Hi,
1. Yes, you can have multiple users. The server side of Booksonic is pretty much the same as Subsonic but with a few extra api endpoints to support more metadata.
2. Yes, I am currently working on replacing the current server with a new thing and that will get support for fetching metadata, maybe not at first but it is on the todo list.
At the moment there is some limited meta data collection already. If the server contains no metadata the app will try to look it up on Google Books or Boktipset.se.
Hi,
I am also looking for an alternative to Prex and Kodi Audiobook, so I am happy to find your project even if it is ongoing for some time. Let me ask some questions:
1. Is there a documentation of this project available? And where to find the latest status? On GitHub I could only find stuff which is about 1 year old.
2. How does the following folder structure by adding to the server work? Are there any issues expected?
Structure 1:
Audiobooktitle (folder)
– CD1 (folder)
— (files)
– CD2 (folder)
— (files)
Structure 2:
Audiobookgroup (folder)
– Audiobook (folder)
— (1 file/track – sorted by tag number)
– Audiobook (folder)
— (single audio file)
3. Are you also responsible for the Doker image for Debian (e.g. Open Media Vault) and its updates?
4. Is there another App for iOS which can be used for Booksonic? e.g. Subsonic
Thank you for your time and all the work you’ve already done.
Best regards
André
PS: I became aware of Booksonic through this video https://www.youtube.com/watch?v=z4apf-4n2tw .
Hi, hope you will like it 🙂
1. Unfortunately no, there is no documentation at this time.
The current server can be found here but it is deprecated and will be replaced by this one. The source will be available for the new one when it is released. The app can be found here
2. I haven’t tested those structures but I think it would be like this.
The first one would see see the book name as the author and then CD1, CD2 etc as the books. The structure would work fine if you added an author folder at the top.
The second one the group would be seen as the author and then work fine.
3. No, docker images are third party but a lot of people use them and they seem to work fine. I probably couldn’t answer any questions about them as I haven’t really used docker but if you run in to any problems there are some people in the Booksonic Subreddit that at this stuff.
4. None that I have personally tested and can recommend but any client that supports Subsonic should work fine with Booksonic as well, only thing you Will be missing out on is book description and narrator info in the app.
Hi Patrik,
That’s great news. Thank you very much for the quick feedback on my questions! I am looking forward to testing your server. 🙂 Thanks again for all the work and effort you’ve put in!
Best regards
André
No problem, hope you’ll end up liking it and if you run in to any problems or have suggestions for improvements don’t hesitate to let me know 🙂
Hi Patrik,
I am happy to confirm that Booksonic can work perfectly with large amounts of data! I noticed a few things and it would be great if they could be improved:
1. Multiple CDs of the same book are displayed individually in the overview. It happens with the following folder structure:
– Collection x
— Book 1
— CD 1
— CD 2
— Book 2
— CD 1
— CD 2
…
I would be better if 1 book were displayed than every single CD. (Workaround would be: no CD folders and all tracks from CD1 and 2 in Book x folder)
2. subsonic link availabe in note about software 1.1 update (e.g. right menu). The link refers to subsonic website.
3. changing port 4040 is not possible. Would be nice to change it to 80 for webinterface.
4. covers where width and height are not equal are destroying the design in the overview. “load more” – button is covered by covers.
5. an extension to display more than 40 audiobooks per page would be great. (e.g. infinite scrolling)
Many thanks for your hard work!
Best regards
André
Hi,
Nice, glad it worked out.
I am in the progress of replacing the current server model with a new one, all of these should be possible in the new server once it is released
I forgot about another very important thing. I saw a very nice functionality in another software. If you have too many entries for one letter on your Authors page it is very confusing. For example in German there are 3 translations for “the” available (“der”, “die”, “das”). Thats why the “d”-category is used very often. Would it possible to have a separation here?
An implementation could be to check whether an initial letter is used particularly often. If this is the case, the first 2 letters in each category are displayed.
e.g.
Andre, Anton, Anne, Anke, Aubrey, Auden, August, Azalea, Azami
The category is not “A” but “An”, “Au” and “Az”.
Greetings
André
That’s a great idea!
I’ll add it to my todo list
Sorry, one last thing. In some of my audiobooks there are several genres, which are separated by a comma or a simicolon. Is it possible to assign them in the genre drop-down list not as separate genres, but individually to the respective genre?
Example:
Genre Meta-Tag in one Audiobook: “Fantasy,Dragon,Magic,Mystery”
Currently listed as “Fantasy,Dragon,Magic,Mystery (1)” in Dropdownlist.
It would be better to assign it to:
Fantasy (1)
Dragon (1)
Magic (1)
Mystery (1)
Maybe a view with checkboxes would be possible later, where you can select different genres and find the matching entries.
This should be possible in the new server once it is released. It might not be in the first release but it is on my todo list. Overall I want to make metadata for books work in a more flexible way
Hi,
Thanks for your work! How does Booksonic scale when adding about 800GB (about 4000) Audiobooks? Do you have any experiences with such a scenario?
Greetings
Steffan
Hi,
I haven’t personally tested a library of that size no but I know there are people that are running Booksonic with huge libraries without problems so you should be good
Hi Patrik, so far loving Booksonic Server, Thank you! Came to you by Plex (they seem to have no intention of supporting Audiobooks anytime soon).
My one question (for now) is is there a way of making the Android App place a folder image for Series/Saga’s? For example I have my folder structure set up for Series (IE: Harry Potter, Themis Files, Song of Ice and Fire, etc.) The app show the folders/series correctly and I have images showing for all Audiobooks but the Top of the Folder has a place for an image but usually just blank (sometimes a star image is there).
Keep up the great work!
Hi,
Glad you like it 🙂
The series folder should select a cover from a random book that is in the series. The next version of the app has some improvements for the series structure, for example you will be able to add descriptions to the series.
Thanks I’ll look for it. Also a small thing I found is I tried the BookSonic Library Editor but the reader.txt adds an upside down question mark and an exclamation mark at the front and back of the Reader tag in the Android app. So I ended up deleting the .txt files for the time being.
I need to move my server to another machine. Anything I need to look out for?
Sorry for the late reply, no not really.
It has been a while since I migrated the server last but as I remember it it was a pretty straight forward process. Let me know if you run/ran in to any problems.
Hi,
How can I enter author information as shown in your example?
https://preview.redd.it/8i3sqz4un1q41.png?width=1466&format=png&auto=webp&s=5ef5b1b1014539d89a0050edf0cbd3440c5dd33b
Hi,
That info is collected automatically from Last.fm
You can put a desc.txt folder in the author folder just as with books and it will show up in the app but at the moment it will not show up in the server, it is on my todo list that the server should show it as well.
Hi,
I would love to get this to work, but know nothing!!
I am trying to get it to work on my Synology, with Docker. I have launched the container and it has found my directory, but it cannot see any of the content. When I try to refresh it just blinks and nothing is added. I am using the same file structure that you recommend. When I go to the ‘About Booksonic’ it seems that I have an error. Sorry, I know you are not a helpline, but I could use any help I can get!
Thanks
Paul
Exception javax.servlet.ServletException
Message org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/config/Lookup
Java version Private Build 1.8.0_252
Operating system Linux 4.4.59+
Server jetty/9.4.24.v20191120
Memory Used 115 of 239 MB
Stack trace javax.servlet.ServletException: org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/config/Lookup
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:162)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:500)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/config/Lookup
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:924)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(ServletHolder.java:1400)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:760)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
at net.sourceforge.subsonic.filter.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:47)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:59)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1596)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:221)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
... 17 more
Caused by: java.lang.NoClassDefFoundError: org/apache/http/config/Lookup
at org.apache.http.impl.client.DefaultHttpClient.setDefaultHttpParams(DefaultHttpClient.java:183)
at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:158)
at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:447)
at net.sourceforge.subsonic.service.VersionService.readLatestVersion(VersionService.java:234)
at net.sourceforge.subsonic.service.VersionService.refreshLatestVersion(VersionService.java:219)
at net.sourceforge.subsonic.service.VersionService.getLatestFinalVersion(VersionService.java:102)
at net.sourceforge.subsonic.service.VersionService.isNewFinalVersionAvailable(VersionService.java:158)
at net.sourceforge.subsonic.controller.HelpController.handleRequestInternal(HelpController.java:56)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
... 72 more
Caused by: java.lang.ClassNotFoundException: org.apache.http.config.Lookup
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:543)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 83 more