diff --git a/.lgtm.yml b/.lgtm.yml index 569efc34..295120c5 100644 --- a/.lgtm.yml +++ b/.lgtm.yml @@ -17,18 +17,18 @@ extraction: - libtag1-dev - libpam0g-dev after_prepare: - - export WT_VERSION=4.4.0 + - export WT_VERSION=4.5.0 - export WT_INSTALL_PREFIX=${LGTM_WORKSPACE}/wt-${WT_VERSION} - pushd ${LGTM_WORKSPACE} - git clone https://github.com/emweb/wt.git ${LGTM_WORKSPACE}/wt - pushd ${LGTM_WORKSPACE}/wt - git checkout ${WT_VERSION} - - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${WT_INSTALL_PREFIX} -DENABLE_LIBWTTEST=OFF + - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${WT_INSTALL_PREFIX} -DBUILD_EXAMPLES=OFF -DENABLE_LIBWTTEST=OFF -DCONNECTOR_FCGI=OFF - make install - popd configure: command: - - export WT_VERSION=4.4.0 + - export WT_VERSION=4.5.0 - export WT_INSTALL_PREFIX=${LGTM_WORKSPACE}/wt-${WT_VERSION} - cmake -DCMAKE_PREFIX_PATH=${WT_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release diff --git a/.travis.yml b/.travis.yml index 19b0faa3..db3f1713 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,7 @@ addons: - libtag1-dev - libpam0g-dev - libgraphicsmagick++1-dev + - libgtest-dev compiler: - clang - gcc @@ -28,7 +29,7 @@ before_install: git clone https://github.com/emweb/wt.git wt cd wt git checkout ${WT_VERSION} - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${WT_INSTALL_PREFIX} -DENABLE_LIBWTTEST=OFF + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${WT_INSTALL_PREFIX} -DBUILD_EXAMPLES=OFF -DENABLE_LIBWTTEST=OFF -DCONNECTOR_FCGI=OFF make install cd .. fi @@ -39,7 +40,7 @@ cache: env: global: - MAKEFLAGS="-j 2" - - WT_VERSION=4.4.0 + - WT_VERSION=4.5.0 - WT_INSTALL_PREFIX=${HOME}/wt-${WT_VERSION} jobs: - BUILD_TYPE=Release USE_PAM=ON IMAGE_LIBRARY=STB diff --git a/CMakeLists.txt b/CMakeLists.txt index 23dbb83e..b5ecf689 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ find_package(PkgConfig REQUIRED) pkg_check_modules(Taglib REQUIRED IMPORTED_TARGET taglib) pkg_check_modules(Config++ REQUIRED IMPORTED_TARGET libconfig++) pkg_check_modules(GraphicsMagick++ IMPORTED_TARGET GraphicsMagick++) +find_package(GTest REQUIRED) # WT if (NOT Wt_FOUND) diff --git a/INSTALL.md b/INSTALL.md index d9c08fdc..3a15efb6 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -44,7 +44,7 @@ __Notes__: * a C++17 compiler is needed * ffmpeg version 4 minimum is required ```sh -apt-get install g++ cmake libboost-program-options-dev libboost-system-dev libavutil-dev libavformat-dev libstb-dev libconfig++-dev ffmpeg libtag1-dev libpam0g-dev +apt-get install g++ cmake libboost-program-options-dev libboost-system-dev libavutil-dev libavformat-dev libstb-dev libconfig++-dev ffmpeg libtag1-dev libpam0g-dev libgtest-dev ``` __Notes__: * libpam0g-dev is optional (only for using PAM authentication) diff --git a/README.md b/README.md index ffebd306..1d8d524f 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,22 @@ The Subsonic API is enabled by default. __Note__: since _LMS_ may store hashed and salted passwords or may forward authentication requests to external services, it cannot handle the __token authentication__ method defined from version 1.13.0. +## About tags +_LMS_ relies exclusively on tags to organize your music collection. + +### Filtering +You can specify the tags you want to be used to filter your collection. By default, `GENRE`, `ALBUMGROUPING`, `MOOD` and `ALBUMMOOD` tags are used. +In the administration panel, you can set whatever tags you want, even custom tags. + +### Multiple album artists +_LMS_ requires the `ALBUMARTISTS` and `ALBUMARTISTSSORT` tags to properly handle multiple album artists on the same album. As they are a custom tags, you may need to setup your favorite tagger to add them. + +__Note__: if you use [Picard](https://picard.musicbrainz.org/), add the following script to include these tags: +``` +$setmulti(albumartists,%_albumartists%) +$setmulti(albumartistssort,%_albumartists_sort%) +``` + ## Keyboard shortcuts * Play/pause: Space * Previous track: Ctrl + Left diff --git a/approot/artists.xml b/approot/artists.xml index 2f29fbb6..cf00bdf7 100644 --- a/approot/artists.xml +++ b/approot/artists.xml @@ -12,7 +12,6 @@ ${artists} - ${loading-indicator class="Lms-horizontal-center Lms-loading-indicator"} diff --git a/approot/messages.xml b/approot/messages.xml index bd252296..b599b76c 100644 --- a/approot/messages.xml +++ b/approot/messages.xml @@ -155,7 +155,6 @@ Search... -Search results Transcoding active diff --git a/approot/messages_fr.xml b/approot/messages_fr.xml index 52f5f10c..5b688e0e 100644 --- a/approot/messages_fr.xml +++ b/approot/messages_fr.xml @@ -155,7 +155,6 @@ Rechercher... -Résultats de la recherche Transcodage actif diff --git a/approot/messages_it.xml b/approot/messages_it.xml index c50c3daa..ad690776 100644 --- a/approot/messages_it.xml +++ b/approot/messages_it.xml @@ -154,7 +154,6 @@ Ricerca... -Risultati di ricerca Transcodifica attiva diff --git a/approot/messages_zh.xml b/approot/messages_zh.xml index 16a9eed2..93cfa976 100644 --- a/approot/messages_zh.xml +++ b/approot/messages_zh.xml @@ -154,7 +154,6 @@ 搜索中... -搜索结果 转码有效 diff --git a/approot/playqueue.xml b/approot/playqueue.xml index b1c4424e..0633bcbf 100644 --- a/approot/playqueue.xml +++ b/approot/playqueue.xml @@ -8,14 +8,13 @@ +
+ ${clear-btn class="Lms-playqueue-btn Lms-btn"}${shuffle-btn class="Lms-playqueue-btn Lms-btn"}${repeat-btn class="Lms-playqueue-btn Lms-btn"}${radio-btn class="Lms-playqueue-btn Lms-btn"} +

${nb-tracks}

+
-
- ${clear-btn class="Lms-playqueue-btn Lms-btn"}${shuffle-btn class="Lms-playqueue-btn Lms-btn"}${repeat-btn class="Lms-playqueue-btn Lms-btn"}${radio-btn class="Lms-playqueue-btn Lms-btn"} -

${nb-tracks}

-
${entries} - ${loading-indicator class="Lms-horizontal-center Lms-loading-indicator"}
diff --git a/approot/release.xml b/approot/release.xml index ba7e36b3..b440c6c6 100644 --- a/approot/release.xml +++ b/approot/release.xml @@ -14,7 +14,8 @@

${name}

- ${}

${artist class="Lms-btn Lms-artistname text-muted"}

${
} + ${}${artists}${} + ${}
${tr:Lms.Explore.various-artists}
${
}
${}${year}${}${} (${orig-year})${}
${clusters} ${play-btn class="Lms-explore-btn Lms-btn"}${more-btn class="Lms-explore-btn Lms-btn"} @@ -52,7 +53,11 @@
- + +

${artist class="Lms-btn Lms-artistname text-muted"}

+
+ +

${disc-title}

${tracks}
diff --git a/approot/releases.xml b/approot/releases.xml index 65e3cb8a..c472c8e1 100644 --- a/approot/releases.xml +++ b/approot/releases.xml @@ -7,10 +7,7 @@ ${mode class="nav nav-pills Lms-explore-mode-container"} ${play-btn class="Lms-explore-btn Lms-btn"}${more-btn class="Lms-explore-btn Lms-btn"}
-
- ${releases} -
- ${loading-indicator class="Lms-horizontal-center Lms-loading-indicator"} + ${releases}
@@ -21,10 +18,18 @@
${release-name class="Lms-btn Lms-releasename text-primary"}
-
${}${year}${}${}${artist-name class="Lms-btn Lms-artistname text-muted"}${}
+
${}${year}${}${}${artist-name class="Lms-btn Lms-artistname text-muted"}${}${}
${tr:Lms.Explore.various-artists}
${
}
+ +
+ ${elements} +
+ ${loading-indicator class="Lms-horizontal-center Lms-loading-indicator"} +
+ + diff --git a/approot/search.xml b/approot/search.xml index a6f8c536..afa104fd 100644 --- a/approot/search.xml +++ b/approot/search.xml @@ -4,36 +4,9 @@
-

${tr:Lms.Explore.Search.search}

-
-
- ${} -
-
-

${tr:Lms.Explore.artists}

- ${artists} -
-
- ${
} - ${} -
-
-

${tr:Lms.Explore.releases}

-
- ${releases} -
-
-
- ${
} - ${} -
-
-

${tr:Lms.Explore.tracks}

- ${tracks} -
-
- ${
} + ${mode class="nav nav-pills Lms-explore-mode-container"}
+ ${stack}
diff --git a/approot/templates.xml b/approot/templates.xml index 5be1e07d..f2aa8a7b 100644 --- a/approot/templates.xml +++ b/approot/templates.xml @@ -18,8 +18,8 @@