Coder Social home page Coder Social logo

epoupon / lms Goto Github PK

View Code? Open in Web Editor NEW
1.0K 1.0K 60.0 8.71 MB

Lightweight Music Server. Access your self-hosted music using a web interface.

Home Page: http://lms-demo.poupon.dev

License: GNU General Public License v3.0

C++ 98.02% CSS 0.11% JavaScript 0.53% CMake 1.26% Shell 0.08%
audio audio-streaming music music-player music-server music-streaming raspberry-pi self-hosted subsonic-server

lms's People

Contributors

anthonytex avatar bramton avatar cacko avatar epoupon avatar kmod-midori avatar michalmoc avatar misterhat avatar stkw0 avatar tapiab avatar tazio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lms's Issues

albums with matching track titles are squashed together

there are probably way more examples but this is the first one i ran into. i'm using the 3.9 development branch:
4105b3e (HEAD -> develop) Upgrade requirements to build on ubuntu

Charli XCX - 1999 single and Prince - 1999 were squashed together, presumably because in their metadata, album is "1999". unfortunately, i didn't get nearly as far on this one. couldnt even find where to start. personally, i have multiple versions of many albums and an ideal solution would not only take artist into account, but also the storage location to prevent multiple releases from being squashed together.

2020-03-31 03_53_09-LMS
2020-03-31 03_53_42-LMS
2020-03-31 03_54_21-LMS
2020-03-31 04_08_23-New Issue · epoupon_lms
2020-03-31 04_09_55-

Docker Image

Does a Docker image exist for this? Looking to try this out on a server that's running Ubuntu, but it doesn't have the available dependencies as Debian would:

lms : Depends: libavformat58 (>= 7:4.1) but it is not installable
       Depends: libavutil56 (>= 7:4.0) but it is not installable
       Depends: libboost-system1.67.0 but it is not installable
       Depends: libmagick++-6.q16-8 but it is not installable
       Depends: libmagickcore-6.q16-6 (>= 8:6.9.10.2) but it is not installable
       Depends: libmagickwand-6.q16-6 (>= 8:6.9.10.2) but it is not installable
       Depends: libwt4 but it is not going to be installed

Album art embedded in *.flac not rendering

I have a mixed library containing some flac rips of my CDs and some mp3 rips. All the albums are properly tagged including album art, but the flac files don't render the album art in LMS.

This seems to only happen to my flac rips, all mp3 files are fine.

make error: no matching function for call to Wt::WDateTime::WDateTime.

Hello,

I'm trying to build from source using git tag v.3.1.0 with gcc 9.2.0 on Linux.
My system is Arch Linux with wt 4.1.1 (installed through package manager).

The first error I got was:

../../src/metadata/MetaData.hpp:27:1: note: ‘std::vector’ is defined in header ‘<vector>’; did you forget to ‘#include <vector>’?
   26 | #include <set>
  +++ |+#include <vector>

So I added #include <vector> to MetaData.hpp.

Now I'm getting this error:

../../src/scanner/MediaScanner.cpp: In member function ‘void Scanner::MediaScanner::scanAudioFile(const std::filesystem::__cxx11::path&, bool, Scanner::ScanStats&)’:
../../src/scanner/MediaScanner.cpp:508:75: error: no matching function for call to ‘Wt::WDateTime::WDateTime(<brace-enclosed initializer list>)’
  508 |  const Wt::WDateTime lastWriteTime {std::filesystem::last_write_time(file)};
      |                                                                           ^
In file included from ../../src/scanner/MediaScanner.hpp:26,
                 from ../../src/scanner/MediaScanner.cpp:20:
/usr/include/Wt/WDateTime.h:82:12: note: candidate: ‘Wt::WDateTime::WDateTime(std::chrono::_V2::system_clock::time_point)’
   82 |   explicit WDateTime(const std::chrono::system_clock::time_point timepoint);
      |            ^~~~~~~~~
/usr/include/Wt/WDateTime.h:82:66: note:   no known conversion for argument 1 from ‘time_point<std::filesystem::__file_clock,[...]>’ to ‘time_point<std::chrono::_V2::system_clock,[...]>’
   82 |   explicit WDateTime(const std::chrono::system_clock::time_point timepoint);
      |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/usr/include/Wt/WDateTime.h:78:3: note: candidate: ‘Wt::WDateTime::WDateTime(const Wt::WDate&, const Wt::WTime&)’
   78 |   WDateTime(const WDate& date, const WTime& time);
      |   ^~~~~~~~~
/usr/include/Wt/WDateTime.h:78:3: note:   candidate expects 2 arguments, 1 provided
/usr/include/Wt/WDateTime.h:72:12: note: candidate: ‘Wt::WDateTime::WDateTime(const Wt::WDate&)’
   72 |   explicit WDateTime(const WDate& date);
      |            ^~~~~~~~~
/usr/include/Wt/WDateTime.h:72:35: note:   no known conversion for argument 1 from ‘std::filesystem::file_time_type’ {aka ‘std::chrono::time_point<std::filesystem::__file_clock>’} to ‘const Wt::WDate&’
   72 |   explicit WDateTime(const WDate& date);
      |                      ~~~~~~~~~~~~~^~~~
/usr/include/Wt/WDateTime.h:65:3: note: candidate: ‘Wt::WDateTime::WDateTime()’
   65 |   WDateTime();
      |   ^~~~~~~~~
/usr/include/Wt/WDateTime.h:65:3: note:   candidate expects 0 arguments, 1 provided
/usr/include/Wt/WDateTime.h:55:14: note: candidate: ‘constexpr Wt::WDateTime::WDateTime(const Wt::WDateTime&)’
   55 | class WT_API WDateTime
      |              ^~~~~~~~~
/usr/include/Wt/WDateTime.h:55:14: note:   no known conversion for argument 1 from ‘std::filesystem::file_time_type’ {aka ‘std::chrono::time_point<std::filesystem::__file_clock>’} to ‘const Wt::WDateTime&’
/usr/include/Wt/WDateTime.h:55:14: note: candidate: ‘constexpr Wt::WDateTime::WDateTime(Wt::WDateTime&&)’
/usr/include/Wt/WDateTime.h:55:14: note:   no known conversion for argument 1 from ‘std::filesystem::file_time_type’ {aka ‘std::chrono::time_point<std::filesystem::__file_clock>’} to ‘Wt::WDateTime&&’
make[1]: *** [Makefile:1073: lms-MediaScanner.o] Error 1
make[1]: *** Waiting for unfinished jobs....
mv -f .deps/lms-AvFormat.Tpo .deps/lms-AvFormat.Po
mv -f .deps/lms-TagLibParser.Tpo .deps/lms-TagLibParser.Po
mv -f .deps/lms-Auth.Tpo .deps/lms-Auth.Po
mv -f .deps/lms-MediaPlayer.Tpo .deps/lms-MediaPlayer.Po
mv -f .deps/lms-PlayHistoryView.Tpo .deps/lms-PlayHistoryView.Po
mv -f .deps/lms-PlayQueueView.Tpo .deps/lms-PlayQueueView.Po
mv -f .deps/lms-main.Tpo .deps/lms-main.Po
mv -f .deps/lms-LmsApplication.Tpo .deps/lms-LmsApplication.Po
make[1]: Leaving directory '~/lms/build/src'
make: *** [Makefile:547: all-recursive] Error 1

Building git master yields the same error. How can I fix this?

Required webtoolkit (wt) dependencies

I’m attempting to build wt from source, and the wt documentation lists a bunch of optional dependencies:

  • OpenSSL, which is used to support the HTTPS protocol in the web client, and the HTTPS protocol in the built-in wthttpd connector.
  • Haru Free PDF Library, which is used to provide support for painting to PDF (WPdfImage).
  • GraphicsMagick, for supporting painting to raster images (PNG, GIF, ...) (WRasterImage).
  • Pango, for improved font support in the WPdfImage and WRasterImage paint devices.
  • PostgreSQL, for the PostgreSQL backend for Wt::Dbo (Dbo::backend::Postgres).
  • Firebird, for the Firebird backend for Wt::Dbo (Dbo::backend::Firebird).
  • the C API for MySQL (mysqlclient), or the MariaDB connector library, for the MySQL/MariaDB backend for Wt::Dbo (Dbo::backend::MySQL).
  • unixODBC, for the SQL Server backend for Wt::Dbo (Dbo::backend::MSSQLServer).
  • libunwind, for the saving of backtraces in exceptions (useful for debugging).
  • zlib (libz), for compression over HTTP and WebSockets.
  • Qt, for the libwtwithqt interopability layer

Which ones are required for LMS?

It seems like you’re using only sqlite, so I guess postgresql / firebird / mysql / mariadb / unixODBC are not needed. Openssl is not neeeded too if your recommendation of running a reverse proxy is followed. What else can be dumped?

(I’m asking because I’m having problems building firebird on armv7l.)

m4a files not transcoded

Just a minor bug, I have some files with extension m4a (apple lossless) which get scanned but never transcoded. I think I will need to convert them into flac but in case you want to address this I am reporting this minor bug. Thanks again for your software, best in the field.

Wrong codec when transcoding for stream request using the Subsonic API

Description

When using LMS with the Subsonic API for streaming the transcoding output is always mp3 even when transcoding is disabled, web stream transcoding works as intended since does not implements the Subsonic API.

Things I tried

Clients tested:

  • Clementine (Subsonic provider, Linux)
  • Dsub (Android)
  • Curl (Linux)

The request clementine sends to the server is the following

GET /rest/stream.view?v=1.8.0&c=Clementine&u=myuser&p=enc%myencodedpassword&id=tr-40164

HTTP/1.1
Host:lms.myhost.com
User-Agent:Clementine 1.3.1
icy-metadata:1
Connection:Keep-Alive

Tried using curl to force Subsonic Api query parameters for raw format but the trancoding still happened , also tried with several request with Accept header (not documented here)

curl \
-H "Host:lms.myhost.com" \
-H "User-Agent:Clementine 1.3.1" \
-H "icy-metadata:1" \
-H "Connection:Keep-Alive" \
'https://lms.myhost.com/rest/stream.view?v=1.8.0&c=Clementine&u=myuser&p=enc%myencodedpassword&id=tr-40160&format=raw'

Dsub has the same behaviour

Aditional info

The transcoding uses the bitrate configured in the web settings but always chooses MP3 for it instead of the selected format.

LMS runs the following as user lms.

/usr/bin/ffmpeg -loglevel quiet -nostdin -i /path/to/music.flac -vn -b:a 320000 -f mp3 pipe:1


The server I'm running my LMS instance has the following things installed (I don't think it's important but I'll add it anyways):

Element Version
Distro Debian buster
Kernel 4.19.0-6-amd64
ffmpeg 7:4.1.4-1~deb10u1
lms 3.1.0-1

I Installed LMS following the Debian Buster packages installation instructions.

Config is default except for behind-reverse-proxy set to true since the server is proxied behind apache with forced tls

Haven't check the code yet but I will if I have time.

Handle cover art for multi-disc albums stored in seperate folders

Issue description

I typically store multi-disc albums using the following directory structure:

$albumname/CD01/01 $disc01-track01_name
$albumname/CD01/02 $disc01-track02_name
$albumname/CD01/...
$albumname/CD02/01 $disc02-track01_name
$albumname/CD02/...
$albumname/cover.jpg

In this case, cover.jpg is not picked up as the album cover, even though LMS correctly recognises all the directories as a single album.

Q: How are covers currently handled?

I’ve tried looking at the code, but I’m a bit confused. When is cover art retrieved using Grabber::getFromRelease vs Grabber::getFromTrack (in src/cover/CoverArtGrabber.cpp)? Isn’t cover art displayed only for entire albums, and not for the individual track?

Strawberry: Parameter 'id': bad format error

When trying to refresh catalog in Strawberry (Clementine fork) I get "Parameter 'id': bad format" error. Relevant LMS logs:

Jan 20 04:10:46 host lms[25291]: <IP> - - [2020-Jan-20 04:10:46.087] "GET /rest/getAlbumList2.view?type=alphabeticalByName&c=Strawberry&v=1.11.0&f=json&u=<redacted>&p=enc%<redacted> HTTP/1.0" 200 623
Jan 20 04:10:46 host lms[25291]: <IP> - - [2020-Jan-20 04:10:46.250] "GET /rest/getAlbumList2.view?type=alphabeticalByName&offset=2&c=Strawberry&v=1.11.0&f=json&u=<redacted>&p=enc%<redacted> HTTP/1.0" 200 97
Jan 20 04:10:46 host lms[25291]: [2020-Jan-20 04:10:46.364] 25291 - [error] - [API_SUBSONIC] Error while processing request 'getAlbum', params = [{c=Strawberry}, {f=json}, {id=0}, {p=*SENSIBLE DATA*}, {u=<redacted>}, {v=1.11.0}, ], code = 0, msg = 'Parameter 'id': bad format'
Jan 20 04:10:46 host lms[25291]: <IP> - - [2020-Jan-20 04:10:46.366] "GET /rest/getAlbum.view?id=0&c=Strawberry&v=1.11.0&f=json&u=<redacted>&p=enc%<redacted> HTTP/1.0" 200 157

Not sure where this 0 comes from, album ids are definitely not zeroes:

{
	"subsonic-response" : {
		"albumList2" : {
			"album" : [
				{
					"artist" : "<>",
					"artistId" : "ar-348",
					"coverArt" : "al-718",
					"duration" : "<>",
					"genre" : "<>",
					"id" : "al-718",
					"name" : "<>",
					"songCount" : "9",
					"year" : "<>"
				},
				...
			]
		},
		"status" : "ok",
		"version" : "1.12.0"
	}
}

I've noticed that in my Airsonic output and Subsonic example id fields are different from coverArt and lack the al- prefix. Also artistId contains just no ar- prefix:

{
   "subsonic-response" : {
      "status" : "ok",
      "version" : "1.15.0",
      "albumList2" : {
         "album" : [ {
            "id" : "542",
            "name" : "<>",
            "artist" : "<>",
            "artistId" : "148",
            "coverArt" : "al-542",
            "songCount" : 5,
            "duration" : 2034,
            "created" : "<>",
            "year" : <>,
            "genre" : "<>"
         },
         ...
         } ]
      }
   }
}

My wild guess is that apps like Strawberry just handle id field as a number and get 0 when trying to parse ids with letters from LMS. If that's the case, maybe it's better to change id and artistId format on LMS side to provide better compatibility?

I'm running LMS 3.2.0, Strawberry 0.6.8 and Airsonic 10.5.0.

Small mistake on the transcoding settings

I don't even know if this is worth opening an issue, but at least it should be an easy fix.

"kbps" should be next to the bitrate :)

Thanks for the update today, I'm trying out the new release.

Keep media player settings persistent

It would be nice to keep the local player settings over time.
For example, if you set the volume to 0.5, you would like to get it back at this specific value next time.
We could save it in HTML5 local storage.

Unable to play m4a files

I noticed that when I try to play a m4a file (aac codec) using either DSub client or web UI, the song never starts and I get the following errors in the log:

[2020-Mar-04 01:40:06.515] 1 [/ 8TCpFxPx0ZGnr7sD] [info] - [TRANSCODE] [35] - Transcoding file '/music/Brahms - Piano Trios 2 and Piano Trio in A Major op. posthume (Guarneri Trio Prague)/02 Piano Trio No. 2 in C major, Op. 87 - II. Andante con moto.m4a'
[2020-Mar-04 01:40:06.515] 1 [/ 8TCpFxPx0ZGnr7sD] [error] - [AV] Cannot guess media file format for '/music/Brahms - Piano Trios 2 and Piano Trio in A Major op. posthume (Guarneri Trio Prague)/02 Piano Trio No. 2 in C major, Op. 87 - II. Andante con moto.m4a'
[2020-Mar-04 01:40:06.515] 1 [/ 8TCpFxPx0ZGnr7sD] [error] - [UI] Cannot start transcoder
[2020-Mar-04 01:35:31.558] 1 - [info] - [TRANSCODE] [23] - Transcoding file '/music/Smetana, Sibelius - String Quartets - Kocian Quartet [M4A]/10 Andante Festivo for string quartet, JS 34a.m4a'
[2020-Mar-04 01:35:31.558] 1 - [error] - [AV] Cannot guess media file format for '/music/Smetana, Sibelius - String Quartets - Kocian Quartet [M4A]/10 Andante Festivo for string quartet, JS 34a.m4a'

These files are regular aac encoded tracks as shown by ffmpeg:

  Duration: 00:08:52.39, start: 0.047891, bitrate: 321 kb/s
    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 320 kb/s (default)

Also, after that happens the lms process starts using max CPU on my server (but continues to play other tracks normally) until I restart the container.

I would also like to completely disable transcoding on the server so that it always use the original file. It's already disabled in the /settings page but is it still enabled somehow?

freebsd port issue

hello, i'm very new to clang. i was attempting to test out lms on my freebsd box and went to work making the necessary edits to build.

a few hours later, success!! it builds! i went through the rest of the setup but unfortunately it crashes doing something with graphicsmagick. i've attached the output here, but i dont think that it's the real issue.

my thought is that i dont want to edit the libary yet, but that maybe i should to get a more verbose output? attempts to find out where this assertion all failed, but i need to learn more.

any ideas?

ARG = ./src/lms/lms
ARG = --config=/var/lms/wt_config.xml
ARG = --docroot=/usr/local/share/lms/docroot/;/resources,/css,/images,/js,/favicon.ico
ARG = --approot=/usr/local/share/lms/approot
ARG = --resources-dir=/usr/local/share/Wt/resources
ARG = --http-port=8080
ARG = --http-address=0.0.0.0
[2020-Mar-26 02:36:53.075] 61843 - [info] "config: reading Wt config file: /var/lms/wt_config.xml (location = './src/lms/lms')"
[2020-Mar-26 02:38:08.090] 61843 - [error] "SocketNotifier: connect socket1 failed. Error code 60"
[2020-Mar-26 02:38:08.092] 61843 - [info] - [DB] Creating connection pool on file /var/lms/lms.db
[2020-Mar-26 02:38:08.177] 61843 - [info] - [DB] Tables created
[2020-Mar-26 02:38:08.178] 61843 - [info] - [DB] Database version = 13, LMS binary version = 13
[2020-Mar-26 02:38:08.203] 61843 - [info] - [DB] Creating cluster type ALBUMGROUPING
[2020-Mar-26 02:38:08.204] 61843 - [info] - [DB] Creating cluster type ALBUMMOOD
[2020-Mar-26 02:38:08.204] 61843 - [info] - [DB] Creating cluster type GENRE
[2020-Mar-26 02:38:08.204] 61843 - [info] - [DB] Creating cluster type MOOD
[2020-Mar-26 02:38:08.215] 61843 - [info] - [DB UPDATER] Using scan settings version 1
Assertion failed: (copy->signature == MagickSignature), function CopyException, file magick/error.c, line 222.
Magick: abort due to signal 6 (SIGABRT) "Abort"...
Abort (core dumped)```

Feature request: jukebox mode

Please consider adding jukebox mode (direct playback on server's hardware without transcoding). Probably the easiest is to use mpv or similar well-tested and flexible CLI app. Preferably the command should be configurable (so that one can select output device or other options). This feature is supported by e. g. DSub Android client.
Subsonic docs: http://www.subsonic.org/pages/api.jsp#jukeboxControl

Scan errors?

I managed to compile v2.2.0 for debian stretch ;) ... after scanning the media folder, I got the following summary:

[info] - [DB UPDATER] Scan complete. Changes = 160874 (added = 160874, removed = 0, updated = 0), Not changed = 0, Scanned = 160881 (errors = 0, not imported = 7), duplicates = 0 (hash = 0, mbid = 0)

and

[info] - [UI] Notifying message 'Scan complete: 160874 total files, 160874 additions, 0 updates, 0 deletions, 0 duplicates, 7 errors' of type 'info'

How can I figure out, which files have errors? Unfortunately the log does not contain any log messages that point to the files (no "Skipped " message that increments the stats.incompleteScans).

Do you have any hint or idea?

Random album feature

Pressing play and shuffling essentially gives you random tracks, but there is no possibility in LMS to get a random album. Might be a nice way to find new albums if we had a random album button. Airsonic also has a landing page with a wall of random albums, which is another nice idea.

Keep up the great work! :)

Strange error messages

Hi, happy user here of LMS, however, on some flac files I am getting some strange error messages:

10.8.0.4 - - [2019-Dec-23 12:21:19.463] "GET /rest/savePlayQueue.view?u=admin&p=enc:3f506167616e656c3234&v=1.2.0&c=DSub&id=tr-13094&id=tr-13087&id=tr-13088&id=tr-13090&id=tr-13091&id=tr-13095&id=tr-13092&id=tr-13089&id=tr-13093&current=tr-13091&position=0 HTTP/1.1" 200 154
[2019-Dec-23 12:24:48.734] 1 - [error] - [API_SUBSONIC] Unhandled command 'savePlayQueue'
[2019-Dec-23 12:24:48.734] 1 - [error] - [API_SUBSONIC] Error while processing request 'savePlayQueue', params = [{c=DSub}, {current=tr-13095}, {id={tr-13094,tr-13087,tr-13088,tr-13090,tr-13091,tr-13095,tr-13092,tr-13089,tr-13093,}}, {p=*SENSIBLE DATA*}, {position=0}, {u=admin}, {v=1.2.0}, ], code = 0, msg = 'Not implemented'
10.8.0.4 - - [2019-Dec-23 12:24:48.734] "GET /rest/savePlayQueue.view?u=admin&p=enc:3f506167616e656c3234&v=1.2.0&c=DSub&id=tr-13094&id=tr-13087&id=tr-13088&id=tr-13090&id=tr-13091&id=tr-13095&id=tr-13092&id=tr-13089&id=tr-13093&current=tr-13095&position=0 HTTP/1.1" 200 154
[2019-Dec-23 12:28:02.047] 1 - [error] - [API_SUBSONIC] Unhandled command 'savePlayQueue'
[2019-Dec-23 12:28:02.047] 1 - [error] - [API_SUBSONIC] Error while processing request 'savePlayQueue', params = [{c=DSub}, {current=tr-13092}, {id={tr-13094,tr-13087,tr-13088,tr-13090,tr-13091,tr-13095,tr-13092,tr-13089,tr-13093,}}, {p=*SENSIBLE DATA*}, {position=0}, {u=admin}, {v=1.2.0}, ], code = 0, msg = 'Not implemented'

As visible, trying to play it on Android via DSub. Can you tell us more about what is this "Not implemented" message?

Idea/Suggestion: Add listing by Album Artist

I'm loving the simplicity of LMS so far! One suggestion which would make it much more usable for me would be an Album Artist only listing. All my tracks are tagged with artist (often including the featuring artist) and an album artist (which is the same across the whole album).

With the current Artist listing page, I end up with the following:
image

It would be a great option to have a list with only the Album Artists in there.

MusicBee Subsonic API

Trying to connect to LMS via the Subsonic API plugin of MusicBee. I can confirm that other server Subsonic API implementations work fine. However, I am not able to connect to LMS Subsonic API implementation. Can you have a look whether it is in LMS or in MusicBee?

aac file is not find in scan.

Sorry for my bad English.

In source I finded defined file types. "aac" is included in that. but aac file is not found in scan. is not support ADTS AAC?

  • m4a file was find. but could not decoded. becouse ffmpeg is not support aac.

I using
• Raspberry Pi
• CentOS 7
• Docker Image epoupon/lms:arm-3.2.0

Frontend error

I hit some kind of fatal error (I can't make it work again even with a restart). I guess I put an invalid media in the playlist, but I can't reset it before the application crashes on me

Running the 3.6.0 version on docker, I got this on server:

172.18.0.8 - - [2020-Feb-06 00:11:23.411] "POST /?wtd=JBA1o1gThZeoABqm HTTP/1.1" 200 5546
[mp3 @ 0x55c85eb59440] Could not find codec parameters for stream 1 (Video: mjpeg, none): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
172.18.0.8 - - [2020-Feb-06 00:11:23.617] "GET /resources/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0 HTTP/1.1" 200 56780
172.18.0.8 - - [2020-Feb-06 00:11:23.640] "POST /?wtd=JBA1o1gThZeoABqm HTTP/1.1" 200 12026
[2020-Feb-06 00:11:23.748] 1 [/ JBA1o1gThZeoABqm] [error] "WApplication: JavaScript error: {""exception_description"":""Unexpected identifier"",""exception_js"":""Wt._p_.response(1267426010);{var j31=Wt4_2_0.$('ovefeug');\nvar j32=document.createElement('button');j31.parentNode.replaceChild(j32,j31);\nj32.setAttribute('id', 'ovefeug');\nj32.setAttribute('type','button');\n\nj32.className='navbar-toggle btn btn-default with-label';\nj32.style.display='none';\nfunction f33(event) { var e=event||window.event,o=this;if($(o).hasClass('disabled')){Wt4_2_0.cancelEvent(e);return;}Wt._p_.update(o,'s1a',e,true);}\nj32.onclick=f33;\nWt4_2_0.setHtml(j32,'\\r\\n

and browser side:

Uncaught SyntaxError: Unexpected identifier
    at eval ()
    at Fa (/?wtd=Le4aVrEpfEBFzYad&sid=1843536681&webGL=true&scrW=1280&scrH=800&tz=60&tzS=Europe%2FParis&htmlHistory=true&deployPath=%2F&request=script&rand=3177558302:95)
    at P (/?wtd=Le4aVrEpfEBFzYad&sid=1843536681&webGL=true&scrW=1280&scrH=800&tz=60&tzS=Europe%2FParis&htmlHistory=true&deployPath=%2F&request=script&rand=3177558302:96)
    at z (/?wtd=Le4aVrEpfEBFzYad&sid=1843536681&webGL=true&scrW=1280&scrH=800&tz=60&tzS=Europe%2FParis&htmlHistory=true&deployPath=%2F&request=script&rand=3177558302:28)
    at XMLHttpRequest.x (/?wtd=Le4aVrEpfEBFzYad&sid=1843536681&webGL=true&scrW=1280&scrH=800&tz=60&tzS=Europe%2FParis&htmlHistory=true&deployPath=%2F&request=script&rand=3177558302:28)

Can choose "artist of album" or all artist in subsonic api

I start to use LMS for replace my subsonic server but there are a point make me little annoying.
In the webui we can choose see artist of album but when i use DSub i see all artist.

Can you think it will be possible do have a option in LMS for change that?

mergerfs: Value too large for defined data type

When I enter mergerfs union file system path as media root directory, input field becomes red with message "Value too large for defined data type". If I specify one of the merged physical drives, everything works fine. As a check, Airsonic seems to work with mergerfs path without problems.

I use Debian package on Raspberry Pi and mergerfs 2.24.2.

Multiple entries for artists

After the initial scan of my library I noticed many duplicate entries for (Album) Artists (ie, I currently have four different "Various Artists" items.

LMS appears to create its artist nodes based on Artist/AlbumArtist tags in combination with musicbrainzArtistID, musicbrainzAlbumArtistID, the ARTISTS tag, and.. anything else? I've spent a few days ensuring that every track with an artist listed in MusicBrainz has consistent IDs, [unknown] and Various Artists are tagged with those specific special IDs.

The ARTISTS tag is the most recent discovery: A Tribe Called Quest has multiple entries because Picard added an additional (featured) ARTISTS tag to one of the tracks.

Related to this: now that all my tracks have musicbrainz artist IDs, I've noticed that those with multiple IDs (two tags, like how id3v2.4 genres are done) - (ARTIST: "Willie Nelson and Emmylou Harris", MBID:{Willie Nelson}\MBID:{Emmylou Harris}) - will bring up a listing of both associated artists' catalogs - an OR type operation. In such cases it might make sense to do an AND instead, and only bring up other pairings of the same artists/IDs.

As musicbrainz itself seems to format some multiple-value tags with delimters in a single tag (musicbrainzAlbumType: "album / soundtrack / compilation") I'm not sure if I shouldn't be handling multiple ID's the same way? That might be a way to only list "Willie+Emmylou" items, but might not list "Emmylou+Willie", if the IDs are entered in a different order.

[suggestion] api + pwa apps

hey m8
i intend to create a simple music streaming platform, my collection of indie royalty free music is quite big (about 30k tracks), i got all my tags correct, and currently using ampachi for managing the collection

but as you probably guess, enabling discovery is VERY hard, which is why i am intersted in lms

would you care about doing a project as a paid gig :D (mostly having wraped pwa's for offline playlists, and firebase tools integrations)

lms:latest

Is it only me, but I have to manually update the docker whenever an upgrade is available, e.g. epoupon/lms:3.2.0 or epoupon/lms:3.6.0 but I get an error when putting epoupon/lms:latest. Is this an error on my side, or is this on purpose?

PNG album art not supported

Some of my albums' art isn't displayed in the web interface and also isn't sent to Subsonic clients, instead a generic one is used. The albums with the issue seem to all have .png album art, embedded in the files as PNG as well.

Screenshot from the web app
Screenshot from Strawberry

CUE sheet support

Hi, does LMS support CUE sheets? I didn't see any mention of it either way in the docs. CUE sheets are commonly used in audio CD archives (usually CUE + BIN or CUE + FLAC).

LMS does not build under ArchLinuxARM with ImageMagick 7.0.9

I'm trying to build LMS on a Raspberry Pi 3 using Arch.

I have all the requirements installed, including imagemagick 7.0.9, which under Arch should have the proper headers as well.

My ../configure --prefix=/usr step, however, does not pick it up:

checking for IMAGEMAGICKXX... no

Which ImageMagick version is supported at the moment?�

Support Multiple Music Paths

Hello,

Currently, as far as I can tell, LMS does not have support for specifying multiple directories, e.g. one for music, one for audio books, etc.

As a workaround, I have tried creating symlinks, unfortunately LMS does not follow them.

I currently have a directory for everything audio, which contains audio books, audio dramas, music, etc, which I would like to add to LMS. I could specify the root directory, however, there are directories that I would like to exclude.

Unless I am missing something, would it be possible to support this scenario later on?

Only getting first word of tags

Updated to 3.6.1-1 yesterday, and after a scan most of my library now only has the first word of a multi word tag. For instance, "The Beatles" has become "The" and the album "Abbey Road" is now "Abbey".

soxi 01\ -\ Come\ Together.flac

Input File     : '01 - Come Together.flac'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:04:19.95 = 11463648 samples = 19496 CDDA sectors
File Size      : 26.9M
Bit Rate       : 828k
Sample Encoding: 16-bit FLAC
Comments       :
TITLE=Come Together
ALBUM ARTIST=Beatles
Album=Abbey Road
Artist=The Beatles
Genre=Classic Rock; Rock; Pop
ALBUMARTIST=The Beatles
COMPOSER=The Beatles
DATE=1969
TRACKNUMBER=01

Transcoded mp3s' tags are erased

This has been occurring since one of the latest releases, the transcoded mp3s I stream to DSub have none of the original tags. I'm running the 3.9.0 Docker image.

DSub shows incorrect long track time

I'm using the latest Docker image, and when streaming to DSub over Subsonic API, the lengths are properly shown in the album list, but upon playback are incorrect and often insanely long (58 minutes for ~6 minute track).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.