Various cleanup
This commit is contained in:
+5
-5
@@ -10,19 +10,19 @@ lms_cssdir=$(lms_docrootdir)/css
|
|||||||
lms_jsdir=$(lms_docrootdir)/js
|
lms_jsdir=$(lms_docrootdir)/js
|
||||||
lms_imagesdir=$(lms_approotdir)/images
|
lms_imagesdir=$(lms_approotdir)/images
|
||||||
|
|
||||||
lms_css_DATA = \
|
dist_lms_css_DATA = \
|
||||||
docroot/css/lms.css
|
docroot/css/lms.css
|
||||||
|
|
||||||
lms_js_DATA = \
|
dist_lms_js_DATA = \
|
||||||
docroot/js/bootstrap-notify.js \
|
docroot/js/bootstrap-notify.js \
|
||||||
docroot/js/jquery-1.10.2.min.js \
|
docroot/js/jquery-1.10.2.min.js \
|
||||||
docroot/js/mediaplayer.js
|
docroot/js/mediaplayer.js
|
||||||
|
|
||||||
lms_images_DATA = \
|
dist_lms_images_DATA = \
|
||||||
approot/images/unknown-cover.jpg \
|
approot/images/unknown-cover.jpg \
|
||||||
approot/images/unknown-artist.jpg
|
approot/images/unknown-artist.jpg
|
||||||
|
|
||||||
lms_approot_DATA = \
|
dist_lms_approot_DATA = \
|
||||||
approot/admin-database.xml \
|
approot/admin-database.xml \
|
||||||
approot/admin-user.xml \
|
approot/admin-user.xml \
|
||||||
approot/admin-users.xml \
|
approot/admin-users.xml \
|
||||||
@@ -49,6 +49,6 @@ lms_approot_DATA = \
|
|||||||
approot/tracks.xml \
|
approot/tracks.xml \
|
||||||
approot/tracksinfo.xml
|
approot/tracksinfo.xml
|
||||||
|
|
||||||
sysconf_DATA = \
|
dist_sysconf_DATA = \
|
||||||
$(top_srcdir)/conf/lms.conf
|
$(top_srcdir)/conf/lms.conf
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,13 @@ LMS is a self-hosted music streaming software: access your music files from anyw
|
|||||||
A [demo](http://lms.demo.poupon.io) instance is available, with the following limitations:
|
A [demo](http://lms.demo.poupon.io) instance is available, with the following limitations:
|
||||||
- Settings cannot be saved
|
- Settings cannot be saved
|
||||||
- No persistent playqueue
|
- No persistent playqueue
|
||||||
|
- No administration panel
|
||||||
|
|
||||||
## Main features
|
## Main features
|
||||||
- Persistent play queue across sessions
|
|
||||||
- User management
|
- User management
|
||||||
- Recommendation engine
|
- Recommendation engine
|
||||||
- Audio transcode for maximum interoperability and low bandwith requirements
|
- Audio transcode for maximum interoperability and low bandwith requirements
|
||||||
|
- Persistent play queue across sessions
|
||||||
- Subsonic API
|
- Subsonic API
|
||||||
- Multi-value tags
|
- Multi-value tags
|
||||||
- Custom tag support (ex: "mood", "genre", "albummood", "albumgrouping", ...)
|
- Custom tag support (ex: "mood", "genre", "albummood", "albumgrouping", ...)
|
||||||
@@ -28,7 +29,7 @@ LMS provides several ways to help you find the music you like:
|
|||||||
The recommendation engine makes use of [Self-Organizing Maps](https://en.wikipedia.org/wiki/Self-organizing_map).</br>
|
The recommendation engine makes use of [Self-Organizing Maps](https://en.wikipedia.org/wiki/Self-organizing_map).</br>
|
||||||
Please note this engine:
|
Please note this engine:
|
||||||
- may require some significant computation time on very large datasets
|
- may require some significant computation time on very large datasets
|
||||||
- makes use of computed data available on [AcousticBrainz](https://acousticbrainz.org/). Therefore your music must contain the [MusicBrainz Identifier](https://musicbrainz.org/doc/MusicBrainz_Identifier) for the recommendation engine to work properly
|
- makes use of computed data available on [AcousticBrainz](https://acousticbrainz.org/). Therefore your music must contain the [MusicBrainz Identifier](https://musicbrainz.org/doc/MusicBrainz_Identifier) for the recommendation engine to work properly (otherwise, only tag-based recommendations are provided)
|
||||||
|
|
||||||
## Subsonic API
|
## Subsonic API
|
||||||
For now, the API version implemented is 1.12.0 and has been tested on Android using the official application, Ultrasonic and DSub.
|
For now, the API version implemented is 1.12.0 and has been tested on Android using the official application, Ultrasonic and DSub.
|
||||||
@@ -38,7 +39,7 @@ As LMS does not aim to implement all the features of Subsonic, some commands are
|
|||||||
The Subsonic API is enabled by default.
|
The Subsonic API is enabled by default.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
Here are the required packages to build on Debian Stretch:
|
Here are the required packages to build LMS on Debian Stretch:
|
||||||
```sh
|
```sh
|
||||||
apt-get install g++ autoconf automake libboost-filesystem-dev libboost-system-dev libavcodec-dev libavutil-dev libavformat-dev libav-tools libmagick++-dev libpstreams-dev libconfig++-dev libpstreams-dev ffmpeg libtag1-dev
|
apt-get install g++ autoconf automake libboost-filesystem-dev libboost-system-dev libavcodec-dev libavutil-dev libavformat-dev libav-tools libmagick++-dev libpstreams-dev libconfig++-dev libpstreams-dev ffmpeg libtag1-dev
|
||||||
```
|
```
|
||||||
@@ -94,7 +95,7 @@ server {
|
|||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
|
||||||
proxy_pass http://localhost:5091;
|
proxy_pass http://localhost:5082;
|
||||||
proxy_read_timeout 120;
|
proxy_read_timeout 120;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+69
-1
@@ -2,67 +2,135 @@ bin_PROGRAMS = lms
|
|||||||
|
|
||||||
lms_SOURCES = \
|
lms_SOURCES = \
|
||||||
$(srcdir)/api/subsonic/SubsonicId.cpp \
|
$(srcdir)/api/subsonic/SubsonicId.cpp \
|
||||||
|
$(srcdir)/api/subsonic/SubsonicId.hpp \
|
||||||
$(srcdir)/api/subsonic/SubsonicResource.cpp \
|
$(srcdir)/api/subsonic/SubsonicResource.cpp \
|
||||||
|
$(srcdir)/api/subsonic/SubsonicResource.hpp \
|
||||||
$(srcdir)/api/subsonic/SubsonicResponse.cpp \
|
$(srcdir)/api/subsonic/SubsonicResponse.cpp \
|
||||||
|
$(srcdir)/api/subsonic/SubsonicResponse.hpp \
|
||||||
$(srcdir)/av/AvInfo.cpp \
|
$(srcdir)/av/AvInfo.cpp \
|
||||||
|
$(srcdir)/av/AvInfo.hpp \
|
||||||
$(srcdir)/av/AvTranscoder.cpp \
|
$(srcdir)/av/AvTranscoder.cpp \
|
||||||
|
$(srcdir)/av/AvTranscoder.hpp \
|
||||||
$(srcdir)/cover/CoverArtGrabber.cpp \
|
$(srcdir)/cover/CoverArtGrabber.cpp \
|
||||||
|
$(srcdir)/cover/CoverArtGrabber.hpp \
|
||||||
$(srcdir)/database/Artist.cpp \
|
$(srcdir)/database/Artist.cpp \
|
||||||
|
$(srcdir)/database/Artist.hpp \
|
||||||
$(srcdir)/database/Cluster.cpp \
|
$(srcdir)/database/Cluster.cpp \
|
||||||
|
$(srcdir)/database/Cluster.hpp \
|
||||||
$(srcdir)/database/DatabaseHandler.cpp \
|
$(srcdir)/database/DatabaseHandler.cpp \
|
||||||
|
$(srcdir)/database/DatabaseHandler.hpp \
|
||||||
$(srcdir)/database/TrackFeatures.cpp \
|
$(srcdir)/database/TrackFeatures.cpp \
|
||||||
|
$(srcdir)/database/TrackFeatures.hpp \
|
||||||
$(srcdir)/database/TrackList.cpp \
|
$(srcdir)/database/TrackList.cpp \
|
||||||
|
$(srcdir)/database/TrackList.hpp \
|
||||||
|
$(srcdir)/database/Types.hpp \
|
||||||
$(srcdir)/database/Release.cpp \
|
$(srcdir)/database/Release.cpp \
|
||||||
|
$(srcdir)/database/Release.hpp \
|
||||||
$(srcdir)/database/ScanSettings.cpp \
|
$(srcdir)/database/ScanSettings.cpp \
|
||||||
|
$(srcdir)/database/ScanSettings.hpp \
|
||||||
$(srcdir)/database/SimilaritySettings.cpp \
|
$(srcdir)/database/SimilaritySettings.cpp \
|
||||||
|
$(srcdir)/database/SimilaritySettings.hpp \
|
||||||
$(srcdir)/database/SqlQuery.cpp \
|
$(srcdir)/database/SqlQuery.cpp \
|
||||||
|
$(srcdir)/database/SqlQuery.hpp \
|
||||||
$(srcdir)/database/Track.cpp \
|
$(srcdir)/database/Track.cpp \
|
||||||
|
$(srcdir)/database/Track.hpp \
|
||||||
$(srcdir)/database/User.cpp \
|
$(srcdir)/database/User.cpp \
|
||||||
|
$(srcdir)/database/User.hpp \
|
||||||
$(srcdir)/image/Image.cpp \
|
$(srcdir)/image/Image.cpp \
|
||||||
|
$(srcdir)/image/Image.hpp \
|
||||||
$(srcdir)/main/main.cpp \
|
$(srcdir)/main/main.cpp \
|
||||||
|
$(srcdir)/main/Service.hpp \
|
||||||
$(srcdir)/metadata/AvFormat.cpp \
|
$(srcdir)/metadata/AvFormat.cpp \
|
||||||
|
$(srcdir)/metadata/AvFormat.hpp \
|
||||||
|
$(srcdir)/metadata/MetaData.hpp \
|
||||||
$(srcdir)/metadata/TagLibParser.cpp \
|
$(srcdir)/metadata/TagLibParser.cpp \
|
||||||
|
$(srcdir)/metadata/TagLibParser.hpp \
|
||||||
$(srcdir)/scanner/MediaScanner.cpp \
|
$(srcdir)/scanner/MediaScanner.cpp \
|
||||||
|
$(srcdir)/scanner/MediaScanner.hpp \
|
||||||
|
$(srcdir)/scanner/MediaScannerAddon.hpp \
|
||||||
$(srcdir)/similarity/SimilaritySearcher.cpp \
|
$(srcdir)/similarity/SimilaritySearcher.cpp \
|
||||||
|
$(srcdir)/similarity/SimilaritySearcher.hpp \
|
||||||
$(srcdir)/similarity/cluster/SimilarityClusterSearcher.cpp \
|
$(srcdir)/similarity/cluster/SimilarityClusterSearcher.cpp \
|
||||||
|
$(srcdir)/similarity/cluster/SimilarityClusterSearcher.hpp \
|
||||||
$(srcdir)/similarity/features/AcousticBrainzUtils.cpp \
|
$(srcdir)/similarity/features/AcousticBrainzUtils.cpp \
|
||||||
|
$(srcdir)/similarity/features/AcousticBrainzUtils.hpp \
|
||||||
$(srcdir)/similarity/features/SimilarityFeaturesCache.cpp \
|
$(srcdir)/similarity/features/SimilarityFeaturesCache.cpp \
|
||||||
|
$(srcdir)/similarity/features/SimilarityFeaturesCache.hpp \
|
||||||
$(srcdir)/similarity/features/SimilarityFeaturesScannerAddon.cpp \
|
$(srcdir)/similarity/features/SimilarityFeaturesScannerAddon.cpp \
|
||||||
|
$(srcdir)/similarity/features/SimilarityFeaturesScannerAddon.hpp \
|
||||||
$(srcdir)/similarity/features/SimilarityFeaturesSearcher.cpp \
|
$(srcdir)/similarity/features/SimilarityFeaturesSearcher.cpp \
|
||||||
|
$(srcdir)/similarity/features/SimilarityFeaturesSearcher.hpp \
|
||||||
$(srcdir)/similarity/features/som/DataNormalizer.cpp \
|
$(srcdir)/similarity/features/som/DataNormalizer.cpp \
|
||||||
|
$(srcdir)/similarity/features/som/DataNormalizer.hpp \
|
||||||
|
$(srcdir)/similarity/features/som/InputVector.hpp \
|
||||||
|
$(srcdir)/similarity/features/som/Matrix.hpp \
|
||||||
$(srcdir)/similarity/features/som/Network.cpp \
|
$(srcdir)/similarity/features/som/Network.cpp \
|
||||||
|
$(srcdir)/similarity/features/som/Network.hpp \
|
||||||
$(srcdir)/ui/Auth.cpp \
|
$(srcdir)/ui/Auth.cpp \
|
||||||
|
$(srcdir)/ui/Auth.hpp \
|
||||||
$(srcdir)/ui/LmsApplication.cpp \
|
$(srcdir)/ui/LmsApplication.cpp \
|
||||||
|
$(srcdir)/ui/LmsApplication.hpp \
|
||||||
$(srcdir)/ui/LmsApplicationGroup.cpp \
|
$(srcdir)/ui/LmsApplicationGroup.cpp \
|
||||||
|
$(srcdir)/ui/LmsApplicationGroup.hpp \
|
||||||
$(srcdir)/ui/MediaPlayer.cpp \
|
$(srcdir)/ui/MediaPlayer.cpp \
|
||||||
|
$(srcdir)/ui/MediaPlayer.hpp \
|
||||||
$(srcdir)/ui/PlayQueueView.cpp \
|
$(srcdir)/ui/PlayQueueView.cpp \
|
||||||
|
$(srcdir)/ui/PlayQueueView.hpp \
|
||||||
$(srcdir)/ui/PlayHistoryView.cpp \
|
$(srcdir)/ui/PlayHistoryView.cpp \
|
||||||
|
$(srcdir)/ui/PlayHistoryView.hpp \
|
||||||
$(srcdir)/ui/SettingsView.cpp \
|
$(srcdir)/ui/SettingsView.cpp \
|
||||||
|
$(srcdir)/ui/SettingsView.hpp \
|
||||||
$(srcdir)/ui/admin/DatabaseSettingsView.cpp \
|
$(srcdir)/ui/admin/DatabaseSettingsView.cpp \
|
||||||
|
$(srcdir)/ui/admin/DatabaseSettingsView.hpp \
|
||||||
$(srcdir)/ui/admin/InitWizardView.cpp \
|
$(srcdir)/ui/admin/InitWizardView.cpp \
|
||||||
|
$(srcdir)/ui/admin/InitWizardView.hpp \
|
||||||
$(srcdir)/ui/admin/UserView.cpp \
|
$(srcdir)/ui/admin/UserView.cpp \
|
||||||
|
$(srcdir)/ui/admin/UserView.hpp \
|
||||||
$(srcdir)/ui/admin/UsersView.cpp \
|
$(srcdir)/ui/admin/UsersView.cpp \
|
||||||
|
$(srcdir)/ui/admin/UsersView.hpp \
|
||||||
$(srcdir)/ui/common/Validators.cpp \
|
$(srcdir)/ui/common/Validators.cpp \
|
||||||
|
$(srcdir)/ui/common/Validators.hpp \
|
||||||
$(srcdir)/ui/explore/ArtistInfoView.cpp \
|
$(srcdir)/ui/explore/ArtistInfoView.cpp \
|
||||||
|
$(srcdir)/ui/explore/ArtistInfoView.hpp \
|
||||||
$(srcdir)/ui/explore/ArtistLink.cpp \
|
$(srcdir)/ui/explore/ArtistLink.cpp \
|
||||||
|
$(srcdir)/ui/explore/ArtistLink.hpp \
|
||||||
$(srcdir)/ui/explore/ArtistsInfoView.cpp \
|
$(srcdir)/ui/explore/ArtistsInfoView.cpp \
|
||||||
|
$(srcdir)/ui/explore/ArtistsInfoView.hpp \
|
||||||
$(srcdir)/ui/explore/ArtistView.cpp \
|
$(srcdir)/ui/explore/ArtistView.cpp \
|
||||||
|
$(srcdir)/ui/explore/ArtistView.hpp \
|
||||||
$(srcdir)/ui/explore/ArtistsView.cpp \
|
$(srcdir)/ui/explore/ArtistsView.cpp \
|
||||||
|
$(srcdir)/ui/explore/ArtistsView.hpp \
|
||||||
$(srcdir)/ui/explore/Explore.cpp \
|
$(srcdir)/ui/explore/Explore.cpp \
|
||||||
|
$(srcdir)/ui/explore/Explore.hpp \
|
||||||
$(srcdir)/ui/explore/Filters.cpp \
|
$(srcdir)/ui/explore/Filters.cpp \
|
||||||
|
$(srcdir)/ui/explore/Filters.hpp \
|
||||||
$(srcdir)/ui/explore/ReleaseInfoView.cpp \
|
$(srcdir)/ui/explore/ReleaseInfoView.cpp \
|
||||||
|
$(srcdir)/ui/explore/ReleaseInfoView.hpp \
|
||||||
$(srcdir)/ui/explore/ReleaseLink.cpp \
|
$(srcdir)/ui/explore/ReleaseLink.cpp \
|
||||||
|
$(srcdir)/ui/explore/ReleaseLink.hpp \
|
||||||
$(srcdir)/ui/explore/ReleasesInfoView.cpp \
|
$(srcdir)/ui/explore/ReleasesInfoView.cpp \
|
||||||
|
$(srcdir)/ui/explore/ReleasesInfoView.hpp \
|
||||||
$(srcdir)/ui/explore/ReleasesView.cpp \
|
$(srcdir)/ui/explore/ReleasesView.cpp \
|
||||||
|
$(srcdir)/ui/explore/ReleasesView.hpp \
|
||||||
$(srcdir)/ui/explore/ReleaseView.cpp \
|
$(srcdir)/ui/explore/ReleaseView.cpp \
|
||||||
|
$(srcdir)/ui/explore/ReleaseView.hpp \
|
||||||
$(srcdir)/ui/explore/TracksInfoView.cpp \
|
$(srcdir)/ui/explore/TracksInfoView.cpp \
|
||||||
|
$(srcdir)/ui/explore/TracksInfoView.hpp \
|
||||||
$(srcdir)/ui/explore/TracksView.cpp \
|
$(srcdir)/ui/explore/TracksView.cpp \
|
||||||
|
$(srcdir)/ui/explore/TracksView.hpp \
|
||||||
$(srcdir)/ui/resource/ImageResource.cpp \
|
$(srcdir)/ui/resource/ImageResource.cpp \
|
||||||
|
$(srcdir)/ui/resource/ImageResource.hpp \
|
||||||
$(srcdir)/ui/resource/AudioResource.cpp \
|
$(srcdir)/ui/resource/AudioResource.cpp \
|
||||||
|
$(srcdir)/ui/resource/AudioResource.hpp \
|
||||||
$(srcdir)/utils/Config.cpp \
|
$(srcdir)/utils/Config.cpp \
|
||||||
|
$(srcdir)/utils/Config.hpp \
|
||||||
|
$(srcdir)/utils/Exception.hpp \
|
||||||
$(srcdir)/utils/Logger.cpp \
|
$(srcdir)/utils/Logger.cpp \
|
||||||
|
$(srcdir)/utils/Logger.hpp \
|
||||||
$(srcdir)/utils/Path.cpp \
|
$(srcdir)/utils/Path.cpp \
|
||||||
$(srcdir)/utils/Utils.cpp
|
$(srcdir)/utils/Path.hpp \
|
||||||
|
$(srcdir)/utils/Utils.cpp \
|
||||||
|
$(srcdir)/utils/Utils.hpp
|
||||||
|
|
||||||
lms_CXXFLAGS=-std=c++14 -Wall -I$(srcdir)/ui $(MAGICKXX_CFLAGS) -D_REENTRANT
|
lms_CXXFLAGS=-std=c++14 -Wall -I$(srcdir)/ui $(MAGICKXX_CFLAGS) -D_REENTRANT
|
||||||
lms_LDADD=$(MAGICKXX_LIBS)
|
lms_LDADD=$(MAGICKXX_LIBS)
|
||||||
|
|||||||
+2
-2
@@ -51,7 +51,7 @@ std::vector<std::string> generateWtConfig(std::string execPath)
|
|||||||
|
|
||||||
if (Config::instance().getBool("tls-enable", false))
|
if (Config::instance().getBool("tls-enable", false))
|
||||||
{
|
{
|
||||||
args.push_back("--https-port=" + std::to_string( Config::instance().getULong("listen-port", 5081)));
|
args.push_back("--https-port=" + std::to_string( Config::instance().getULong("listen-port", 5082)));
|
||||||
args.push_back("--https-address=" + Config::instance().getString("listen-addr", "0.0.0.0"));
|
args.push_back("--https-address=" + Config::instance().getString("listen-addr", "0.0.0.0"));
|
||||||
args.push_back("--ssl-certificate=" + Config::instance().getString("tls-cert"));
|
args.push_back("--ssl-certificate=" + Config::instance().getString("tls-cert"));
|
||||||
args.push_back("--ssl-private-key=" + Config::instance().getString("tls-key"));
|
args.push_back("--ssl-private-key=" + Config::instance().getString("tls-key"));
|
||||||
@@ -59,7 +59,7 @@ std::vector<std::string> generateWtConfig(std::string execPath)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
args.push_back("--http-port=" + std::to_string( Config::instance().getULong("listen-port", 5081)));
|
args.push_back("--http-port=" + std::to_string( Config::instance().getULong("listen-port", 5082)));
|
||||||
args.push_back("--http-address=" + Config::instance().getString("listen-addr", "0.0.0.0"));
|
args.push_back("--http-address=" + Config::instance().getString("listen-addr", "0.0.0.0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user