PDA

View Full Version : [Announce] Essentia Integration - music classification (moods, genres, ...)



Roland0
2017-11-18, 12:03
Essentia (http://essentia.upf.edu/documentation/) is a music analysis framework, capable of (among lots of other things) statistical classification of music (e.g. by moods, genres, danceability, timbre, ...)

The Essentia Integration plugin enables importing Essentia's results into the LMS database, making them available to be used by LMS-based applications / plugins (currently, extGUI4LMS (https://www.nexus0.net/pub/sw/extgui4lms/) and the LMS Playlist Editor (https://www.nexus0.net/pub/sw/lmsplaylisteditor/)).

Details and installation / usage instructions can be found on the homepage (https://www.nexus0.net/pub/sw/lmsessentia/).

drmatt
2017-11-18, 13:20
I like this very much.........!


Transcoded from Matt's brain by Tapatalk

BosseJ
2017-11-21, 12:38
Hi,
I'm analyzing my flac collection using the LMS Essentia software, but I am a bit confused about an error message that appears for every file. I'm running the software on an x86_64 linux Mint 18 machine, accessing the music files via an NFS mount. Since I have 24000 flac files I decided to separate the analysis and the upload so I can check the results before I submit it to the LMS database. Here's the command line:
./ess-analyze.sh -o analyze -s "s#/network/music#/local/volfram1/wav#" -v -j /home/byjo/bin/essentia/jsons -m /network/music/Filmmusik

Here's the console output for a flac file:


Writing results to file /home/byjo/bin/essentia/jsons/_local_volfram1_wav_Klassisk_Rachmaninov - Piano Concertos Nos. 2 and 3; Prelude in E flat etc (192-24)_07-Prelude in E flat, Op.23, No.6.flac.json.tmp
Process step: Read metadata
Process step: Compute md5 audio hash and codec
Process step: Replay gain
[ INFO ] On connection Resample::signal → Trimmer::signal:
[ INFO ] BUFFER SIZE MISMATCH: max=2248 - asked for read size 4096
[ INFO ] resizing buffer to 36040/4505
Process step: Compute audio features
[ INFO ] On connection Resample::signal → Trimmer::signal:
[ INFO ] BUFFER SIZE MISMATCH: max=2248 - asked for read size 4096
[ INFO ] resizing buffer to 36040/4505
[ INFO ] On connection Resample::signal → Trimmer::signal:
[ INFO ] BUFFER SIZE MISMATCH: max=2248 - asked for read size 4096
[ INFO ] resizing buffer to 36040/4505
Process step: Compute aggregation
adding SVM model: /home/byjo/bin/svm_models/genre_tzanetakis.history
adding SVM model: /home/byjo/bin/svm_models/genre_dortmund.history
adding SVM model: /home/byjo/bin/svm_models/genre_electronic.history
adding SVM model: /home/byjo/bin/svm_models/danceability.history
adding SVM model: /home/byjo/bin/svm_models/genre_rosamerica.history
adding SVM model: /home/byjo/bin/svm_models/mood_acoustic.history
adding SVM model: /home/byjo/bin/svm_models/mood_aggressive.history
adding SVM model: /home/byjo/bin/svm_models/mood_electronic.history
adding SVM model: /home/byjo/bin/svm_models/mood_happy.history
adding SVM model: /home/byjo/bin/svm_models/mood_party.history
adding SVM model: /home/byjo/bin/svm_models/mood_relaxed.history
adding SVM model: /home/byjo/bin/svm_models/mood_sad.history
adding SVM model: /home/byjo/bin/svm_models/timbre.history
adding SVM model: /home/byjo/bin/svm_models/voice_instrumental.history
adding SVM model: /home/byjo/bin/svm_models/gender.history
adding SVM model: /home/byjo/bin/svm_models/tonal_atonal.history
adding SVM model: /home/byjo/bin/svm_models/ismir04_rhythm.history
Process step: SVM models
Unable to load library icui18n "Cannot load library icui18n: (icui18n: cannot open shared object file: No such file or directory)"
All done

The error line "Unable to load library icui18n .." appears for every file. I have googled and followed the hints and suggestions (I have libicu55 and it's dependencies and relatives installed) but to no avail.
Before I continue with the rest of the sub-libraries (my music share subdirectories are organized after genres and record labels) I would appreciate some information on the error message above: is it affecting the analysis, making it less complete?

I'll also attach a typical output file (JSON file corresponding to the extract above). If anyone can see if the analysis is complete in spite of the message above I'd be grateful :-)

Looking forward to trying out the Essentia plugin :-)

/Bosse

Roland0
2017-11-21, 17:06
The error line "Unable to load library icui18n .." appears for every file. I have googled and followed the hints and suggestions (I have libicu55 and it's dependencies and relatives installed) but to no avail.

icu 58.2 is the version installed on the system used to compile the extractor.



Before I continue with the rest of the sub-libraries (my music share subdirectories are organized after genres and record labels) I would appreciate some information on the error message above: is it affecting the analysis, making it less complete?

No. If it affects anything (which I doubt), it would be the metadata, and this is irrelevant, since the one from LMS will be used during normal operation.



I'll also attach a typical output file (JSON file corresponding to the extract above). If anyone can see if the analysis is complete in spite of the message above I'd be grateful :-)

Looks fine to me. You can upload a couple of analysis files and browse the data in the web interface to make sure.

btw, with that many files to analyse, you may want to run as many ess-analyze.sh instances simultaneously as your cpu has cores to speed up things (doing that on the same directory tree should work).

BosseJ
2017-11-22, 08:43
icu 58.2 is the version installed on the system used to compile the extractor.


No. If it affects anything (which I doubt), it would be the metadata, and this is irrelevant, since the one from LMS will be used during normal operation.


Looks fine to me. You can upload a couple of analysis files and browse the data in the web interface to make sure.

btw, with that many files to analyse, you may want to run as many ess-analyze.sh instances simultaneously as your cpu has cores to speed up things (doing that on the same directory tree should work).

Thank you for replying. I'll ignore the libicu-warning and continue. It seems to work very well so far, but I am in no hurry and can easily spare one core for Essentia analysis :-) I estimate the analysis of my collection will take ~70 hours or so.
Looking at the attached analysis result it is almost cute to see that Rachmaninovs piano concert is "not danceable" with a 99% likelihood :-) It also set the key to "D#" "major" which seems okay given that the recording is entitled "E flat".

Good job!

bakker_be
2017-11-24, 05:40
I get an error when trying to add the repo:


Bad repository https://www.nexus0.net/pub/sw/lmsessentia/repo.xml - Connect timed out: Transport endpoint is not connected

Roland0
2017-11-24, 15:07
Looking at the attached analysis result it is almost cute to see that Rachmaninovs piano concert is "not danceable" with a 99% likelihood :-) It also set the key to "D#" "major" which seems okay given that the recording is entitled "E flat".


I'd be interested to hear how accurate the classifications are for your library. I've analyzed ~3000 tracks from mine, and there's quite some variation how well the classifications work (e.g. classical music is detected very well, electronic gets confused a lot with rock, sad / happy is quite accurate, vocal / instrumental less, gender not at all, ...)
It most likely depends how closely one's music resembles the one used to build the classification models (which probably is of the mainstream / popular type, so the more unusual one's music is, the less accurate the pre-build models will be).
I'll try to create some classifications based on my collection next to see if I can improve the accuracy that way.

Roland0
2017-11-24, 15:09
I get an error when trying to add the repo:


Bad repository https://www.nexus0.net/pub/sw/lmsessentia/repo.xml - Connect timed out: Transport endpoint is not connected

Check if your LMS installation is SSL-enabled (e.g. on *nix, the perl modules Net::SSLeay and IO:Socket:SSL need to be installed)
If it is, check the LMS server logs.

bakker_be
2017-11-26, 05:15
Check if your LMS installation is SSL-enabled (e.g. on *nix, the perl modules Net::SSLeay and IO:Socket:SSL need to be installed)
If it is, check the LMS server logs.

Ok, baby steps :) Seems I was missing IO:Socket:SSL on my Ubuntu ... PlayList Editor, ExtGui & Essentia plugin installed & working. Analysis however doesn't seem to work :(

24078

Roland0
2017-11-26, 14:45
Analysis however doesn't seem to work :(
Maybe your CPU doesn't support certain instructions (AVX, SSE4), either because it is very old (<2008 (SSE) / < 2011 (AVX) ), or low-end (some old Celerons / Pentiums).
Check the output of

cat /proc/cpuinfo
The flags should include

flags: sse sse2 ssse3 sse4_1 sse4_2 avx

bakker_be
2017-11-27, 06:41
Maybe your CPU doesn't support certain instructions (AVX, SSE4), either because it is very old (<2008 (SSE) / < 2011 (AVX) ), or low-end (some old Celerons / Pentiums).
Check the output of

cat /proc/cpuinfo
The flags should include

flags: sse sse2 ssse3 sse4_1 sse4_2 avx

Seems I'm missing the AVX, it's not all that old though :( I'll look into another solution


login as: bart
bart@192.168.1.100's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-2-upboard x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.


Last login: Mon Nov 27 10:31:36 2017 from 192.168.1.132
bart@up-server:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 76
model name : Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz
stepping : 4
microcode : 0x406
cpu MHz : 704.250
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat
bugs :
bogomips : 2879.86
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 76
model name : Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz
stepping : 4
microcode : 0x406
cpu MHz : 617.906
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 4
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat
bugs :
bogomips : 2879.86
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 76
model name : Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz
stepping : 4
microcode : 0x406
cpu MHz : 480.881
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 4
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat
bugs :
bogomips : 2879.86
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 76
model name : Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz
stepping : 4
microcode : 0x406
cpu MHz : 479.981
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 6
initial apicid : 6
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat
bugs :
bogomips : 2879.86
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

bart@up-server:~$

Roland0
2017-11-27, 16:28
Seems I'm missing the AVX, it's not all that old though :( I'll look into another solution
I've uploaded a binary which may run without AVX.

mr_hyde
2017-11-27, 23:26
I've uploaded a binary which may run without AVX.

Hi,

thank you for looking into this. I do have a NAS with an Intel Celeron N3160. The CPU does not support AVX.

I could start the first static app and did see usage instructions, However, when I wanted to analyze a file the 'Illegal instruction' message appeared.

With the 'NoAVX' app the 'Illegal instruction' message shows up immediately. No usage instructions at all when I start the app with no arguments.

I will try to compile it on my system.

bakker_be
2017-11-28, 06:26
I've uploaded a binary which may run without AVX.

Thanks for the effort, still no luck however. I'll try compiling myself.

mr_hyde
2017-11-28, 08:47
Thanks for the effort, still no luck however. I'll try compiling myself.

There seems to be one error in the gaia instructions:



PKG_CONFIG_PATH=/opt/qt-4.8.7/lib/pkgconfig CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer" CXXFLAGS="${CFLAGS}" ./waf configure --prefix=/opt/essentia-2.1b4 --qtdir=/opt/qt-4.8.7 -mode=release

The '-mode' needs to be change to '--mode'. Otherwise it will end in an error message.

GAIA is currently compiling. Will report back once it is working (or not)

BosseJ
2017-11-28, 13:31
I'd be interested to hear how accurate the classifications are for your library. I've analyzed ~3000 tracks from mine, and there's quite some variation how well the classifications work (e.g. classical music is detected very well, electronic gets confused a lot with rock, sad / happy is quite accurate, vocal / instrumental less, gender not at all, ...)
It most likely depends how closely one's music resembles the one used to build the classification models (which probably is of the mainstream / popular type, so the more unusual one's music is, the less accurate the pre-build models will be).
I'll try to create some classifications based on my collection next to see if I can improve the accuracy that way.

I have finished the first step (analyzing 23128 flac-files) without any issue. However when I uploaded a test album and open3d the LMS Essentia webgui, there were no data - all stats were empty.
I set the log level for the plugin to Debug and this is the log-record for each and all of the uploaded files:


[17-11-26 10:28:02.7338] Plugins::LMSessentiaIntegration::Plugin::handleJSO Nupload (306) handleJSONupload ref=HASH
[17-11-26 10:28:02.7346] Plugins::LMSessentiaIntegration::Plugin::analyzeMe tadata (352) analyze_metadata res={'albumartist' => ['various artists'],'artist' => ['various artists'],'file_path' => '/local/volfram1/wav/Labels/Mercury Living Presence sampler/16 Symphony No 3 in C Minor - \'Organ\' Camile Saint-Saens.flac','length' => '137.466659546','genre' => ['Label Mercury Living Presence'],'title' => ['Symphony No 3 in C Minor - \'Organ\' Camile Saint - Saens'],'tracknumber' => ['16'],'album' => ['Mercury Living Presence sampler'],'file_name' => '16 Symphony No 3 in C Minor - \'Organ\' Camile Saint-Saens.flac','urlmd5' => 'a55a1cf60f9a54bcf69572651f496c87','file_url' => 'file:///local/volfram1/wav/Labels/Mercury%20Living%20Presence%20sampler/16%20Symphony%20No%203%20in%20C%20Minor%20-%20%27Organ%27%20Camile%20Saint-Saens.flac'}
[17-11-26 10:28:02.9702] Plugins::LMSessentiaIntegration::Plugin::handleJSO Nupload (316) processing time=0.235817

No error message related to Essentia or any other error at the approximate time that I can see. I'll attach server log (the time stamp for the upload was around 17-11-26 10:25).
Any hints on how I should proceed?

Edit: the workstation CPU where I performed the analysis do support AVX and SSE4, however my LMS server cpu does not, neither AVX nor SSE4. Can the sever cpu be the issue? It is really old ...

Roland0
2017-11-28, 16:25
There seems to be one error in the gaia instructions:
The '-mode' needs to be change to '--mode'. Otherwise it will end in an error message.
Thanks, fixed.



GAIA is currently compiling. Will report back once it is working (or not)


Thanks for the effort, still no luck however. I'll try compiling myself.


I've updated the -noAVX extractor, give it a try.

Roland0
2017-11-28, 16:53
I have finished the first step (analyzing 23128 flac-files) without any issue. However when I uploaded a test album and open3d the LMS Essentia webgui, there were no data - all stats were empty.
I set the log level for the plugin to Debug and this is the log-record for each and all of the uploaded files:


[17-11-26 10:28:02.7338] Plugins::LMSessentiaIntegration::Plugin::handleJSO Nupload (306) handleJSONupload ref=HASH
[17-11-26 10:28:02.7346] Plugins::LMSessentiaIntegration::Plugin::analyzeMe tadata (352) analyze_metadata res={'albumartist' => ['various artists'],'artist' => ['various artists'],'file_path' => '/local/volfram1/wav/Labels/Mercury Living Presence sampler/16 Symphony No 3 in C Minor - \'Organ\' Camile Saint-Saens.flac','length' => '137.466659546','genre' => ['Label Mercury Living Presence'],'title' => ['Symphony No 3 in C Minor - \'Organ\' Camile Saint - Saens'],'tracknumber' => ['16'],'album' => ['Mercury Living Presence sampler'],'file_name' => '16 Symphony No 3 in C Minor - \'Organ\' Camile Saint-Saens.flac','urlmd5' => 'a55a1cf60f9a54bcf69572651f496c87','file_url' => 'file:///local/volfram1/wav/Labels/Mercury%20Living%20Presence%20sampler/16%20Symphony%20No%203%20in%20C%20Minor%20-%20%27Organ%27%20Camile%20Saint-Saens.flac'}
[17-11-26 10:28:02.9702] Plugins::LMSessentiaIntegration::Plugin::handleJSO Nupload (316) processing time=0.235817

This (and the log) looks ok, there are no obvious issues.



No error message related to Essentia or any other error at the approximate time that I can see. I'll attach server log (the time stamp for the upload was around 17-11-26 10:25).
Any hints on how I should proceed?

Do you have no numbers in the stats view, or are they 0 ?
How about the data view? Empty?
Did you try a Essentia search in the playlist editor with a condition that should return results?

There's no entry for the stats in the log - could you try viewing the stats / data while the log level for the plugin is set to debug?
There should be a line like:


Plugins::LMSessentiaIntegration::Plugin::getStats( ) res = ...




the workstation CPU where I performed the analysis do support AVX and SSE4, however my LMS server cpu does not, neither AVX nor SSE4. Can the sever cpu be the issue? It is really old ...
No, it's only needed for the analysis.

BosseJ
2017-11-28, 17:40
This (and the log) looks ok, there are no obvious issues.


Do you have no numbers in the stats view, or are they 0 ?
How about the data view? Empty?
Did you try a Essentia search in the playlist editor with a condition that should return results?

There's no entry for the stats in the log - could you try viewing the stats / data while the log level for the plugin is set to debug?
There should be a line like:


Plugins::LMSessentiaIntegration::Plugin::getStats( ) res = ...



No, it's only needed for the analysis.

No numbers in the view, no numbers in data view. No line as you describe in the log as you describe.
I have uninstalled and re-installed the plugin three times now; the first reinstall led to surprising issues in the log regarding the plugin "Additional Browse Modes" and a delayed start of the LMS service. After I removed the "Additional ..." plugin and reinstalled the LMSessentia plugin, the restart was smoother with no errors. Still, it may be a red herring because I could reinstall the "Additional ..." plugin afterwards without any errors. LMS service still restarts nicely, within a few seconds.
I have set the logging of LMessentia to Debug and the last restart it finally showed the messages indicating that the database is created:

[17-11-28 23:58:14.8197] main::init (387) Starting Logitech Media Server (v7.9.1, 1511211491, Tue Nov 21 09:20:44 UTC 2017) perl 5.022001 - x86_64-linux-gnu-thread-multi
[17-11-28 23:58:15.7715] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (77) LMSessentiaIntegration init start
[17-11-28 23:58:15.7749] Plugins::LMSessentiaIntegration::Plugin::createDBt ables (400) creating database tables
[17-11-28 23:58:15.7756] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (127) LMSessentiaIntegration initialized (v0.0.1)

There is no trace of any logging when I open the LMSessentia webgui or reload. Uploading the testalbum do shows some logging:

[17-11-29 00:00:24.3892] Plugins::LMSessentiaIntegration::Plugin::handleJSO Nupload (306) handleJSONupload ref=HASH
[17-11-29 00:00:24.3904] Plugins::LMSessentiaIntegration::Plugin::analyzeMe tadata (352) analyze_metadata res={'length' => '147.226669312','artist' => ['various artists'],'file_url' => 'file:///local/volfram1/wav/Labels/Mercury%20Living%20Presence%20sampler/01%20Halcyon%20Days%20from%20%27he%20Tree%20Elisab eths%27%20Eric%20Coates.flac','genre' => ['Label Mercury Living Presence'],'album' => ['Mercury Living Presence sampler'],'urlmd5' => 'fb85412faf12296bf66cbb1a4edc9d30','albumartist' => ['various artists'],'file_name' => '01 Halcyon Days from \'he Tree Elisabeths\' Eric Coates.flac','tracknumber' => ['01'],'title' => ['Halcyon Days from \'he Tree Elisabeths\' Eric Coates'],'file_path' => '/local/volfram1/wav/Labels/Mercury Living Presence sampler/01 Halcyon Days from \'he Tree Elisabeths\' Eric Coates.flac'}
[17-11-29 00:00:25.4606] Plugins::LMSessentiaIntegration::Plugin::handleJSO Nupload (316) processing time=1.070665

Is there any way to view the database without using the webgui?
I'll attach some screendumps (png files) of the LMSessentia webgui in a zip-file.
Lastly, "Did you try a Essentia search in the playlist editor with a condition that should return results?" - The list of Essentia attributes is empty.

I have uploaded the json analysis files for 1 album with 21 songs in it.

BosseJ
2017-11-28, 17:48
This (and the log) looks ok, there are no obvious issues.


Do you have no numbers in the stats view, or are they 0 ?
How about the data view? Empty?
Did you try a Essentia search in the playlist editor with a condition that should return results?

There's no entry for the stats in the log - could you try viewing the stats / data while the log level for the plugin is set to debug?
There should be a line like:


Plugins::LMSessentiaIntegration::Plugin::getStats( ) res = ...



No, it's only needed for the analysis.

Well, my last reply was sent to moderation. I hope it will be approved :-)

Anyway, at last there were some useful information (I think) in the log when I opened the Essentia attributes list in the LMS Playlist Editor:

[17-11-29 01:35:41.4405] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'cmd' => 'getTrackAttributesAsTree'}
[17-11-29 01:35:41.4410] Plugins::LMSessentiaIntegration::Plugin::getTrackA ttributesAsTree (689) node =
[17-11-29 01:35:41.5208] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't locate object method "selectall_array" via package "DBI::db" at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSessentiaIntegration/Plugin.pm line 692.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xf9f6148)
[17-11-29 01:36:56.0106] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'cmd' => 'getTrackAttributesAsTree'}
[17-11-29 01:36:56.0111] Plugins::LMSessentiaIntegration::Plugin::getTrackA ttributesAsTree (689) node =
[17-11-29 01:36:56.0118] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't locate object method "selectall_array" via package "DBI::db" at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSessentiaIntegration/Plugin.pm line 692.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xf9f9880)
[17-11-29 01:38:10.0082] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'cmd' => 'getTrackAttributesAsTree'}
[17-11-29 01:38:10.0085] Plugins::LMSessentiaIntegration::Plugin::getTrackA ttributesAsTree (689) node =
[17-11-29 01:38:10.0090] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't locate object method "selectall_array" via package "DBI::db" at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSessentiaIntegration/Plugin.pm line 692.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xbd9ad08)

Anything that seems odd? Any missing Perl module or similar?

mr_hyde
2017-11-28, 21:43
Thanks, fixed.

I've updated the -noAVX extractor, give it a try.

Gaia compilation went through til step 90. Linking libraries failed. However, this is not that important as the latest binary seems to work.

However, I might also try to run it on the workstation if it is only required for the analysis as it has more power than the NAS. Doing right now the same thing with MusicIP.

Thx,
Alex

bakker_be
2017-11-29, 08:12
Thanks, fixed.





I've updated the -noAVX extractor, give it a try.

Yes, this one seems to work! Thanks, this avoids me having to tackle yet another project in parallel :)

Roland0
2017-11-29, 09:18
Anyway, at last there were some useful information (I think) in the log when I opened the Essentia attributes list in the LMS Playlist Editor:

[17-11-29 01:38:10.0090] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't locate object method "selectall_array" via package "DBI::db" at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSessentiaIntegration/Plugin.pm line 692.


Anything that seems odd? Any missing Perl module or similar?
That's helpful. It seems one perl module (DBI) bundled with LMS is so old that it's missing a method the plugin is using (which I didn't notice, since I have a newer version of said module installed).
I've release a new version which hopefully works around this issue.



Is there any way to view the database without using the webgui?
Yes, the data is stored in: /var/lib/squeezeboxserver/cache/persist.db (tables essentia_tracks and essentia_values)
e.g.


sqlite3 /var/lib/squeezeboxserver/cache/persist.db
SQLite version 3.21.0 2017-10-24 18:55:49
sqlite> select count(*) from essentia_tracks;
2641

mr_hyde
2017-11-29, 10:20
sqlite3 /var/lib/squeezeboxserver/cache/persist.db
SQLite version 3.21.0 2017-10-24 18:55:49
sqlite> select count(*) from essentia_tracks;
2641


I have probably a similar issue. The GUI and the LMSplaylist plugins are working. However, the essentia plugin does not seem to work at all on my system. The window opens in the web browser. But I cant do anything in Firefox. If I open it in Edge or Internet Explorer, I can at least get to the Administration page. But No content is shown.

I also do not see any entries in the log files although I have enabled debugging mode. The LMSGUI plugin does show entries on the log (no errors)

I checked if there is something in the database:


root@Logitechmediaserver:/opt/lmsessentia# sqlite3 /var/lib/squeezeboxserver/cache/persist.db
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select count(*) from essentia_tracks;
17
sqlite>

The analysis and the upload was obviously working (I tested only on path of my library).

Will further test.

BosseJ
2017-11-29, 12:53
That's helpful. It seems one perl module (DBI) bundled with LMS is so old that it's missing a method the plugin is using (which I didn't notice, since I have a newer version of said module installed).
I've release a new version which hopefully works around this issue.


Yes, the data is stored in: /var/lib/squeezeboxserver/cache/persist.db (tables essentia_tracks and essentia_values)
e.g.


sqlite3 /var/lib/squeezeboxserver/cache/persist.db
SQLite version 3.21.0 2017-10-24 18:55:49
sqlite> select count(*) from essentia_tracks;
2641



A clear improvement: I can create a playlist in LMSplaylist based on Essentia attributes! I could also see that my earlier uploads did leave traces in the database:


root@linux2:~# sqlite3 /var/lib/squeezeboxserver/cache/persist.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> select count(*) from essentia_tracks;
237

From the server log when listing attributes and searching for "non danceable"tracks:


[17-11-29 20:28:18.0226] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'cmd' => 'getTrackAttributesAsTree'}
[17-11-29 20:28:18.0229] Plugins::LMSessentiaIntegration::Plugin::getTrackA ttributesAsTree (692) node =
[17-11-29 20:28:18.2992] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (281) processing time=0.276252
[17-11-29 20:28:40.4979] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'dbAtts' => [],'dbSearch' => [],'cmd' => 'getTracksByParams','player' => '','essAtts' => [{'value' => 'not_danceable','attrib' => 'danceability'}]}
[17-11-29 20:28:40.4983] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (584) track search page 0, 500, 1 DBsearchs=[] DBatt=[] ESSatt=[{'value' => 'not_danceable','attrib' => 'danceability'}]
[17-11-29 20:28:40.4986] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (593) getTracksByParams where final={}
[17-11-29 20:28:40.4988] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (607) final DB atts={'prefetch' => ['persistent','album','primary_artist'],'page' => '1','rows' => '500'}
[17-11-29 20:28:40.4991] Plugins::LMSessentiaIntegration::Plugin::getUrlMD5 byValues (514) essAttribToSQL atts=[{'value' => 'not_danceable','attrib' => 'danceability'}]
[17-11-29 20:28:40.4993] Plugins::LMSessentiaIntegration::Plugin::getUrlMD5 byValues (525) sql=select urlmd5 from essentia_tracks where id in (select etrackid from essentia_values where ( attrib='danceability' and value='not_danceable') group by etrackid having count(etrackid)=1 )
[17-11-29 20:28:41.9162] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (281) processing time=1.417773


Still can't see any numbers in the webgui though, but now I know it works to upload and retrieve values from the database. Excellent, thank you :-)
I'll upload the rest of the files shortly.

BosseJ
2017-11-30, 09:36
A clear improvement: I can create a playlist in LMSplaylist based on Essentia attributes! I could also see that my earlier uploads did leave traces in the database:


root@linux2:~# sqlite3 /var/lib/squeezeboxserver/cache/persist.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> select count(*) from essentia_tracks;
237

From the server log when listing attributes and searching for "non danceable"tracks:


[17-11-29 20:28:18.0226] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'cmd' => 'getTrackAttributesAsTree'}
[17-11-29 20:28:18.0229] Plugins::LMSessentiaIntegration::Plugin::getTrackA ttributesAsTree (692) node =
[17-11-29 20:28:18.2992] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (281) processing time=0.276252
[17-11-29 20:28:40.4979] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'dbAtts' => [],'dbSearch' => [],'cmd' => 'getTracksByParams','player' => '','essAtts' => [{'value' => 'not_danceable','attrib' => 'danceability'}]}
[17-11-29 20:28:40.4983] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (584) track search page 0, 500, 1 DBsearchs=[] DBatt=[] ESSatt=[{'value' => 'not_danceable','attrib' => 'danceability'}]
[17-11-29 20:28:40.4986] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (593) getTracksByParams where final={}
[17-11-29 20:28:40.4988] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (607) final DB atts={'prefetch' => ['persistent','album','primary_artist'],'page' => '1','rows' => '500'}
[17-11-29 20:28:40.4991] Plugins::LMSessentiaIntegration::Plugin::getUrlMD5 byValues (514) essAttribToSQL atts=[{'value' => 'not_danceable','attrib' => 'danceability'}]
[17-11-29 20:28:40.4993] Plugins::LMSessentiaIntegration::Plugin::getUrlMD5 byValues (525) sql=select urlmd5 from essentia_tracks where id in (select etrackid from essentia_values where ( attrib='danceability' and value='not_danceable') group by etrackid having count(etrackid)=1 )
[17-11-29 20:28:41.9162] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (281) processing time=1.417773


Still can't see any numbers in the webgui though, but now I know it works to upload and retrieve values from the database. Excellent, thank you :-)
I'll upload the rest of the files shortly.

After loading all analyzed tracks (23077 json-files) resulting in 22002 entries in the database (upload went smooth AFAICT), i still can't see anything in the webgui. Unfortunately the popup for Essentia attributes in the LMSplaylist editor is also empty now :-(. Below is the corresponding server.log entry:

[17-11-30 17:09:16.1569] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'cmd' => 'getTrackAttributesAsTree'}
[17-11-30 17:09:16.1575] Plugins::LMSessentiaIntegration::Plugin::getTrackA ttributesAsTree (692) node =
[17-11-30 17:10:13.5804] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (281) processing time=57.422971
[17-11-30 17:10:13.6231] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (299) publisher for piCorePlayer PID Proc::Background=HASH(0xa6197a0) will be terminated.
[17-11-30 17:10:13.6325] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (299) publisher for piCorePlayerDigi PID Proc::Background=HASH(0xa1b46a0) will be terminated.
[17-11-30 17:10:13.6394] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (299) publisher for Touch Vardagsrum PID Proc::Background=HASH(0xaa5b340) will be terminated.
[17-11-30 17:10:13.6454] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (299) publisher for Touch Arbetsrum PID Proc::Background=HASH(0xa8b0458) will be terminated.
[17-11-30 17:10:13.6610] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "piCorePlayerDigi"
[17-11-30 17:10:13.8138] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0x7386588) with proc Proc::Background=HASH(0xa8fbe68)
[17-11-30 17:10:13.8222] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "piCorePlayer"
[17-11-30 17:10:13.8971] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0xa25f720) with proc Proc::Background=HASH(0x9248a68)
[17-11-30 17:10:13.9417] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "Touch Vardagsrum"
[17-11-30 17:10:14.0124] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0x76028d0) with proc Proc::Background=HASH(0xa57ddb8)
[17-11-30 17:10:14.0269] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "Touch Arbetsrum"
[17-11-30 17:10:14.0944] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0x97a9210) with proc Proc::Background=HASH(0xb0dc878)
(I left in the recreation of my players that were immediately triggered after loading the attributes table; probably not significant though...)

Wrt to the question of what perl-version my server has, here's the server info in LMS:

Logitech Media Server Version: 7.9.1 - 1511211491 @ Tue Nov 21 09:20:44 UTC 2017
Värdnamn: linux2
Serverns IP-adress: 192.168.20.3
HTTP-serverns portnummer: 9000
Operativsystem: Debian - SV - utf8
Plattformsarkitektur: x86_64-linux
Perl-version: 5.22.1 - x86_64-linux-gnu-thread-multi
Audio::Scan: 0.95
Databasversion: DBD::SQLite 1.34_01 (sqlite 3.7.7.1)
Totalt antal anslutna spelare: 6

OS-information:

root@linux2:~# uname -a
Linux linux2 4.4.0-101-generic #124-Ubuntu SMP Fri Nov 10 18:29:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
root@linux2:~# cat /etc/issue.net
Ubuntu 16.04.3 LTS

The server itself has 10+ year old HW but was fully wiped and reinstalled late 2012 (with Ubuntu 12.04LTS) and upgraded to 14.04LTS and 16.04LTS in 2014 and 2016, respectively. Fully updated since the beginning. I haven't installed any separate Perl versions AFAIR.

I tried to look in the code but I have very little knowledge of perl and the indirections (I think) via LMS Slim perl makes it difficult for me to trace via code reading only. I gave up that path, realizing my shortcomings :-)

I am not sure exactly how to proceed, but I am thinking of installing and starting another LMS on another machine, starting from fresh and only installing LMSessentia, ext4gui and LMSplaylisteditor to ensure there's no interference from any other plugin. If that works I can add back the plugins I use on the production machine until something breaks (hopefully).
This will take some time though ...

Thank you for your efforts so far! Your plugin has great potential I think and once I get the issues sorted out I'm looking forward to train some extra genres :-)
Best regards & Thank you again /Bosse

Roland0
2017-11-30, 15:22
Unfortunately the popup for Essentia attributes in the LMSplaylist editor is also empty now :-(. Below is the corresponding server.log entry:

[17-11-30 17:09:16.1569] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (191) handleJSONP args={'cmd' => 'getTrackAttributesAsTree'}
[17-11-30 17:09:16.1575] Plugins::LMSessentiaIntegration::Plugin::getTrackA ttributesAsTree (692) node =
[17-11-30 17:10:13.5804] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (281) processing time=57.422971



From what I can tell from the log, the server took a very long time (~1 min) to process the request. The web ui doesn't wait that long for a reply from the server, which might explain the empty popup.
I've uploaded a new version which should have a better performance. If it doesn't work the first time, try reloading the web ui (the plugin now caches the database results, so subsequent requests should be even faster (until a server restart)).
Check the log if the processing time is shorter.

Roland0
2017-11-30, 15:38
I have probably a similar issue. The GUI and the LMSplaylist plugins are working. However, the essentia plugin does not seem to work at all on my system. The window opens in the web browser. But I cant do anything in Firefox. If I open it in Edge or Internet Explorer, I can at least get to the Administration page. But No content is shown.

That's weird. I've tested with Firefox (v52esr) and Vivaldi (which is based on Chromium), both work. Can you check the browser console (ctrl-shift-k in FF)?
What do you mean by "no content"? An empty page?



I also do not see any entries in the log files although I have enabled debugging mode. The LMSGUI plugin does show entries on the log (no errors)
The analysis and the upload was obviously working (I tested only on path of my library).

Since the upload worked, the plugin was loaded successfully, and in this case, if logging for the plugin is set to debug, you should at least see something like:


[17-11-30 22:07:42.5221] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (77) LMSessentiaIntegration init start
[17-11-30 22:07:42.5305] Plugins::LMSessentiaIntegration::Plugin::createDBt ables (419) creating database tables
[17-11-30 22:07:42.5328] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (127) LMSessentiaIntegration initialized (v0.0.3)

Check if debugging is really enabled. It may be easiest to just add these options to LMS startup:


--debug plugin.lmsnewgui=DEBUG,plugin.lmsplsedit=DEBUG,plu gin.lmsessentia=DEBUG

BosseJ
2017-11-30, 16:47
That's weird. I've tested with Firefox (v52esr) and Vivaldi (which is based on Chromium), both work. Can you check the browser console (ctrl-shift-k in FF)?
What do you mean by "no content"? An empty page?


Since the upload worked, the plugin was loaded successfully, and in this case, if logging for the plugin is set to debug, you should at least see something like:


[17-11-30 22:07:42.5221] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (77) LMSessentiaIntegration init start
[17-11-30 22:07:42.5305] Plugins::LMSessentiaIntegration::Plugin::createDBt ables (419) creating database tables
[17-11-30 22:07:42.5328] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (127) LMSessentiaIntegration initialized (v0.0.3)

Check if debugging is really enabled. It may be easiest to just add these options to LMS startup:


--debug plugin.lmsnewgui=DEBUG,plugin.lmsplsedit=DEBUG,plu gin.lmsessentia=DEBUG


Thank you! It works far better now (except for the still empty webgui), but the soft restart prompted after the updated plugin was detected within LMS is no good. After the soft restart there were strange messages from the LMSessentia webgui ("No players found!") and the Essentia attributes menu item was grayed in the Custom Search in LMSplaylisteditor.
A restart of the LMS service on the OS level seems to have fixed the issues above (empty statistics page though) - and the LMSplaylisteditor worked perfectly :-) I got the full Essentia attributes list, made (for me) appealing choices and got 18 suggestions for tracks. Great chices BTW, about half were from my absolute favorites (of course, appealing attributes) and the other half were surprises. Exactly what I expected!
Server log from the OS service restart and up to creation and loading of the playlist:

[17-12-01 00:19:29.0126] main::init (387) Starting Logitech Media Server (v7.9.1, 1511211491, Tue Nov 21 09:20:44 UTC 2017) perl 5.022001 - x86_64-linux-gnu-thread-multi
[17-12-01 00:19:30.2868] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (77) LMSessentiaIntegration init start
[17-12-01 00:19:30.2929] Plugins::LMSessentiaIntegration::Plugin::createDBt ables (418) creating database tables
[17-12-01 00:19:30.2940] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (127) LMSessentiaIntegration initialized (v0.0.3)
[17-12-01 00:19:30.4872] Plugins::ShairTunes2W::Plugin::initPlugin (198) Initialising 0.81.1 on x86_64-linux-gnu-thread-multi
[17-12-01 00:19:30.4899] Plugins::ShairTunes2W::Plugin::initPlugin (226) selected helper: /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/ShairTunes2W/Bin/shairport_helper-x64-linux
[17-12-01 00:19:32.3709] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "Touch Arbetsrum"
[17-12-01 00:19:32.3802] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0xa8d1850) with proc Proc::Background=HASH(0xa81c698)
[17-12-01 00:19:32.3975] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "Touch Vardagsrum"
[17-12-01 00:19:32.4069] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0x7c6d960) with proc Proc::Background=HASH(0xaa571b8)
[17-12-01 00:19:33.3538] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "piCorePlayer"
[17-12-01 00:19:33.3662] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0xab2a828) with proc Proc::Background=HASH(0xab8b8d8)
[17-12-01 00:19:33.6684] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "piCorePlayerDigi"
[17-12-01 00:19:33.6809] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0xac51820) with proc Proc::Background=HASH(0xabc2ba8)
[17-12-01 00:24:29.9956] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (207) handleJSONP args={'cmd' => 'getTrackAttributesAsTree'}
[17-12-01 00:24:29.9962] Plugins::LMSessentiaIntegration::Plugin::memoizeNo rmalizer (166) memoizeNormalizer=ea24e0f966c39e3dac98c1833a13985f c790ba64
[17-12-01 00:24:29.9966] Plugins::LMSessentiaIntegration::Plugin::getTrackA ttributesAsTree (712) node =
[17-12-01 00:24:30.2754] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (297) processing time=0.279235
[17-12-01 00:26:58.8478] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (207) handleJSONP args={'cmd' => 'getTracksByParams','essAtts' => [{'value' => 'danceable','attrib' => 'danceability'},{'attrib' => 'gender','value' => 'female'},{'attrib' => 'genre_dortmund','value' => 'electronic'},{'value' => 'ambient','attrib' => 'genre_electronic'},{'attrib' => 'mood_acoustic','value' => 'acoustic'},{'value' => 'not_aggressive','attrib' => 'mood_aggressive'},{'value' => 'not_electronic','attrib' => 'mood_electronic'},{'attrib' => 'mood_happy','value' => 'happy'},{'value' => 'relaxed','attrib' => 'mood_relaxed'},{'attrib' => 'mood_sad','value' => 'not_sad'},{'attrib' => 'voice_instrumental','value' => 'instrumental'}],'dbAtts' => [],'dbSearch' => [],'player' => ''}
[17-12-01 00:26:58.8484] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (604) track search page 0, 500, 1 DBsearchs=[] DBatt=[] ESSatt=[{'value' => 'danceable','attrib' => 'danceability'},{'attrib' => 'gender','value' => 'female'},{'attrib' => 'genre_dortmund','value' => 'electronic'},{'value' => 'ambient','attrib' => 'genre_electronic'},{'attrib' => 'mood_acoustic','value' => 'acoustic'},{'value' => 'not_aggressive','attrib' => 'mood_aggressive'},{'value' => 'not_electronic','attrib' => 'mood_electronic'},{'attrib' => 'mood_happy','value' => 'happy'},{'value' => 'relaxed','attrib' => 'mood_relaxed'},{'attrib' => 'mood_sad','value' => 'not_sad'},{'attrib' => 'voice_instrumental','value' => 'instrumental'}]
[17-12-01 00:26:58.8488] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (613) getTracksByParams where final={}
[17-12-01 00:26:58.8491] Plugins::LMSessentiaIntegration::Plugin::getTracks ByParams (627) final DB atts={'prefetch' => ['persistent','album','primary_artist'],'page' => '1','rows' => '500'}
[17-12-01 00:26:58.8494] Plugins::LMSessentiaIntegration::Plugin::memoizeNo rmalizer (166) memoizeNormalizer=0b0f5872a0c6cf45162ee15a03d36a2a d359839a
[17-12-01 00:26:58.8499] Plugins::LMSessentiaIntegration::Plugin::getUrlMD5 byValues (534) essAttribToSQL atts=[{'value' => 'danceable','attrib' => 'danceability'},{'attrib' => 'gender','value' => 'female'},{'attrib' => 'genre_dortmund','value' => 'electronic'},{'value' => 'ambient','attrib' => 'genre_electronic'},{'attrib' => 'mood_acoustic','value' => 'acoustic'},{'value' => 'not_aggressive','attrib' => 'mood_aggressive'},{'value' => 'not_electronic','attrib' => 'mood_electronic'},{'attrib' => 'mood_happy','value' => 'happy'},{'value' => 'relaxed','attrib' => 'mood_relaxed'},{'attrib' => 'mood_sad','value' => 'not_sad'},{'attrib' => 'voice_instrumental','value' => 'instrumental'}]
[17-12-01 00:26:58.8502] Plugins::LMSessentiaIntegration::Plugin::getUrlMD5 byValues (545) sql=select urlmd5 from essentia_tracks where id in (select etrackid from essentia_values where ( attrib='danceability' and value='danceable') or ( attrib='gender' and value='female') or ( attrib='genre_dortmund' and value='electronic') or ( attrib='genre_electronic' and value='ambient') or ( attrib='mood_acoustic' and value='acoustic') or ( attrib='mood_aggressive' and value='not_aggressive') or ( attrib='mood_electronic' and value='not_electronic') or ( attrib='mood_happy' and value='happy') or ( attrib='mood_relaxed' and value='relaxed') or ( attrib='mood_sad' and value='not_sad') or ( attrib='voice_instrumental' and value='instrumental') group by etrackid having count(etrackid)=11 )
[17-12-01 00:26:59.9134] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (297) processing time=1.064937


I'll play with this the coming days and report back if I notice anything else. Thanks for your fixes, I think your plugin is a great idea :-)
/Bosse
edit: logging is set to
lmsessentia = Debug
lmsnewgui = Information
lmsplsedit = Information
Sorry, I didn't read your instructions carefully enough. I have set logging (permanently as you suggested.

BosseJ
2017-11-30, 17:21
Thank you! It works far better now
.....
edit: logging is set to
lmsessentia = Debug
lmsnewgui = Information
lmsplsedit = Information
Sorry, I didn't read your instructions carefully enough. I have set logging (permanently as you suggested.

After setting logging to debug I made a service restart. Here's the server log for the restart:


[17-12-01 01:12:16.0820] main::init (387) Starting Logitech Media Server (v7.9.1, 1511211491, Tue Nov 21 09:20:44 UTC 2017) perl 5.022001 - x86_64-linux-gnu-thread-multi
[17-12-01 01:12:17.2168] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (77) LMSessentiaIntegration init start
[17-12-01 01:12:17.2229] Plugins::LMSessentiaIntegration::Plugin::createDBt ables (418) creating database tables
[17-12-01 01:12:17.2240] Plugins::LMSessentiaIntegration::Plugin::initPlugi n (127) LMSessentiaIntegration initialized (v0.0.3)
[17-12-01 01:12:17.2244] Plugins::LMSnewGUI::Plugin::initPlugin (118) LMSnewGUI init start
[17-12-01 01:12:17.2258] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions resolveAlbum
[17-12-01 01:12:17.2264] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getAllAlbums
[17-12-01 01:12:17.2270] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getGenres
[17-12-01 01:12:17.2275] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getAllArtists
[17-12-01 01:12:17.2280] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getTracksByArtist
[17-12-01 01:12:17.2287] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getTracksByAlbum
[17-12-01 01:12:17.2294] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getTracksByArtists
[17-12-01 01:12:17.2299] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getTracksByGenre
[17-12-01 01:12:17.2304] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getTracksByParams
[17-12-01 01:12:17.2310] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getAlbumsByParams
[17-12-01 01:12:17.2315] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getAlbumsByArtist
[17-12-01 01:12:17.2320] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions searchTrackByArtist
[17-12-01 01:12:17.2325] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions searchAlbumsByName
[17-12-01 01:12:17.2330] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions searchTracksByName
[17-12-01 01:12:17.2336] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getStatRatings
[17-12-01 01:12:17.2341] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getStatTrackByYear
[17-12-01 01:12:17.2347] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getStatAlbumByYear
[17-12-01 01:12:17.2352] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getStatTrackByGenre
[17-12-01 01:12:17.2358] Plugins::LMSnewGUI::Plugin::memoizeFunctions (200) memoizeFunctions getStatTopArtistsByAlbums
[17-12-01 01:12:17.2366] Plugins::LMSnewGUI::Plugin::initPlugin (142) LMSnewGUI initialized (v0.9.1)
[17-12-01 01:12:17.2369] Plugins::LMSplaylistEditor::Plugin::initPlugin (74) LMSplaylistEditor init start
[17-12-01 01:12:17.2379] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/classic/resources/font-ext/fonts/ExtJS.ttf.* => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/classic/resources/font-ext/fonts/ExtJS.ttf
[17-12-01 01:12:17.2383] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/DroidSans-Bold-webfont.woff => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/DroidSans-Bold-webfont.woff
[17-12-01 01:12:17.2388] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Bold.ttf => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Bold.ttf
[17-12-01 01:12:17.2393] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Regular.ttf => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Regular.ttf
[17-12-01 01:12:17.2397] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Light.ttf => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Light.ttf
[17-12-01 01:12:17.2402] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/modern.json.* => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/modern.json
[17-12-01 01:12:17.2407] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/font-awesome/fonts/fontawesome-webfont.woff2.* => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/font-awesome/fonts/fontawesome-webfont.woff2
[17-12-01 01:12:17.2412] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/font-awesome/fonts/fontawesome-webfont.ttf => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/font-awesome/fonts/fontawesome-webfont.ttf
[17-12-01 01:12:17.2418] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/DroidSans-webfont.woff => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/DroidSans-webfont.woff
[17-12-01 01:12:17.2423] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/classic.json.* => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/classic.json
[17-12-01 01:12:17.2428] Plugins::LMSplaylistEditor::Plugin::initPlugin (113) LMSplaylistEditor initialized (v0.0.2)
[17-12-01 01:12:17.4311] Plugins::ShairTunes2W::Plugin::initPlugin (198) Initialising 0.81.1 on x86_64-linux-gnu-thread-multi
[17-12-01 01:12:17.4337] Plugins::ShairTunes2W::Plugin::initPlugin (226) selected helper: /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/ShairTunes2W/Bin/shairport_helper-x64-linux
[17-12-01 01:12:19.1448] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "Touch Vardagsrum"
[17-12-01 01:12:19.1551] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0xa8dcfa0) with proc Proc::Background=HASH(0xaa88d88)
[17-12-01 01:12:19.1770] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "Touch Arbetsrum"
[17-12-01 01:12:19.1874] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0x79b3798) with proc Proc::Background=HASH(0xa9f9268)
[17-12-01 01:12:19.4285] Slim::Web::Cometd::handler (422) errorNeedsClient: b8:27:eb:cc:44:5a, status, -, 10, menu:menu, useContextMenu:1, subscribe:600
[17-12-01 01:12:20.1369] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "piCorePlayer"
[17-12-01 01:12:20.1470] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0xa9ddbe0) with proc Proc::Background=HASH(0xae53b60)
[17-12-01 01:12:20.5001] Plugins::ShairTunes2W::Plugin::publishPlayer (375) start avahi-publish-service "piCorePlayerDigi"
[17-12-01 01:12:20.5137] Plugins::ShairTunes2W::Plugin::playerSubscriptionC hange (291) create client Slim::Player::SqueezePlay=ARRAY(0xadf64a8) with proc Proc::Background=HASH(0xaf9f048)

BTW, opening the webgui for LMS Essentia Integration does not leave any debug messages in the server log.
/Bosse

mr_hyde
2017-12-02, 07:17
Hi,

now I have analyzed all my songs and the Custom Search in LMSPlaylist seems to work.


LMS Essentia does still not work. I have analyzed this a little bit more and it seems to be that there is something hardcoded when I analyze the network requests for this page:


15:12:32 script http://raspi3-64:9000/plugins/LMSessentiaIntegration/js.html?_dc=1512223952925&args=%7B%22cmd%22%3A%22getAllTracks%22%7D&page=1&start=0&limit=25&callback=Ext.data.JsonP.callback1
15:12:32 xhr http://192.168.163.105:9001/plugins/LMSessentiaIntegration/html/classic.json?_dc=1512223952432
15:12:32 xhr http://raspi3-64:9000/plugins/LMSessentiaIntegration/js.html
15:12:32 xhr http://raspi3-64:9000/plugins/LMSessentiaIntegration/js.html
15:12:31 css http://192.168.163.105:9001/plugins/LMSessentiaIntegration/html/classic/resources/LMSessentiaIntegration-all_2.css
15:12:31 css http://192.168.163.105:9001/plugins/LMSessentiaIntegration/html/classic/resources/LMSessentiaIntegration-all_1.css
15:12:31 script http://192.168.163.105:9001/plugins/LMSessentiaIntegration/html/classic/app.js?_dc=20171129161442
15:12:31 css http://192.168.163.105:9001/plugins/LMSessentiaIntegration/html/app.css?_dc=20171129161442
15:12:31 css http://192.168.163.105:9001/plugins/LMSessentiaIntegration/html/classic/resources/LMSessentiaIntegration-all.css?_dc=20171129161442
15:12:31 whitelisted ++ doc http://192.168.163.105:9001/plugins/LMSessentiaIntegration/html/index.html?player=00:04:20:22:fe:94

The 'raspi3-64:9000' won't result in any response in my network.

I have changed the file app.js in ../cache/InstalledPlugins/Plugins/LMSessentiaIntegration/HTML/EN/plugins/LMSessentiaIntegration/html/classic/

and replaced the raspi6-64:9000 with my server address and it is working now.

This part should be replaced with the corresponding variables and it should work.

I just have the problem, that Firefox is not working with the Webpage on my Laptop, while it is working on my wife's laptop.... Will check.

Alex

Roland0
2017-12-02, 12:47
now I have analyzed all my songs and the Custom Search in LMSPlaylist seems to work.

Well, that's good news...


LMS Essentia does still not work. I have analyzed this a little bit more and it seems to be that there is something hardcoded when I analyze the network requests for this page:

Thanks for investigating this issue, I've released a new version which hopefully fixes it.


I just have the problem, that Firefox is not working with the Webpage on my Laptop, while it is working on my wife's laptop.... Will check.

Same FF version? I have yet to test with FF 57...

mr_hyde
2017-12-02, 13:59
Well, that's good news...

Thanks for investigating this issue, I've released a new version which hopefully fixes it.

Same FF version? I have yet to test with FF 57...

I have updated the version and it is working now.

I am using FF57, but still no luck.

The page was loading and the window with the information on an updated version opened. But it is not possible to click any of the buttons. The same is true for the LMS playlist plugin. ext4gui is working under FF57.

It is not so important. I will look into this at a laer point of time.

BosseJ
2017-12-03, 04:48
Thanks Roland0 for fixing this! The webgui LMS Essentia Integration now works on my LMS showing statistics and possibility to explore the new tracks attributes, the LMS Playlist Editor produce playlists based on Essentia attributes - with pleasant results. Great plugin :-)

/Bosse

mr_hyde
2017-12-05, 23:12
Hi,

I have updated to 0.0.5 and this version brings back the issue that the plugin does not find/show any data.

However, the requests go to the correct LMS server address. This points to a different problem.

The playlist plugin does now also not find any essentia entries.

The direct sql request on the database does still show the correct number of tracks.

Roland0
2017-12-06, 09:00
Hi,
I have updated to 0.0.5 and this version brings back the issue that the plugin does not find/show any data.
The playlist plugin does now also not find any essentia entries.
The direct sql request on the database does still show the correct number of tracks.
Very strange - the only change in the plugin was in a function not even used by the WebUI.
Does the plugin even load at all? If you set the log to debug for the plugin, any messages?

mr_hyde
2017-12-06, 09:24
Very strange - the only change in the plugin was in a function not even used by the WebUI.
Does the plugin even load at all? If you set the log to debug for the plugin, any messages?Hi, I have currently no access to the server. But I downgraded to 0.0.4 and it started working.

Gesendet von meinem Moto G (5) Plus mit Tapatalk

Roland0
2017-12-06, 15:23
Hi, I have currently no access to the server. But I downgraded to 0.0.4 and it started working.
I'd still appreciate it if you could check the logs for 0.0.5 when you have access again - others may have the same issue, and I'm unable to reproduce it on my setup.

mr_hyde
2017-12-07, 10:16
I'd still appreciate it if you could check the logs for 0.0.5 when you have access again - others may have the same issue, and I'm unable to reproduce it on my setup.

Hi,

the only thing I have found was this:


[17-12-06 07:05:35.6281] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Light.ttf => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Light.ttf
[17-12-06 07:05:35.6285] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Bold.ttf => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Bold.ttf
[17-12-06 07:05:35.6289] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/font-awesome/fonts/fontawesome-webfont.ttf => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/font-awesome/fonts/fontawesome-webfont.ttf
[17-12-06 07:05:35.6293] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Regular.ttf => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/OpenSans-Regular.ttf
[17-12-06 07:05:35.6297] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/resources/fonts/DroidSans-webfont.woff => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/resources/fonts/DroidSans-webfont.woff
[17-12-06 07:05:35.6302] Plugins::LMSplaylistEditor::Plugin::initPlugin (107) ^plugins/LMSplaylistEditor/html/classic.json.* => /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/LMSplaylistEditor/HTML/EN/plugins/LMSplaylistEditor/html/classic.json
[17-12-06 07:05:35.6306] Plugins::LMSplaylistEditor::Plugin::initPlugin (113) LMSplaylistEditor initialized (v0.0.2)
[17-12-06 07:05:35.6640] Plugins::SugarCube::Breakout::init (226) Initialising SugarCube Database
[17-12-06 07:05:35.6663] Plugins::SugarCube::Breakout::init (240) Database tables are up to date
[17-12-06 07:05:35.6668] Plugins::SugarCube::Breakout::init (245) Database tables are really up to date
[17-12-06 07:05:35.7562] Plugins::TrackStat::Storage::refreshTracks (1242) TrackStat: Synchronizing TrackStat data, please wait...
[17-12-06 07:05:47.3403] Plugins::TrackStat::Storage::refreshTracks (1891) TrackStat: Synchronizing TrackStat data finished
[17-12-06 07:05:54.3729] Slim::Web::JSONRPC::requestMethod (443) 00:04:20:12:4d:7e: request not dispatchable!
[17-12-06 07:06:50.1581] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (208) handleJSONP args={'cmd' => 'getStats'}
[17-12-06 07:06:50.1586] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (298) processing time=1.7e-05
[17-12-06 07:06:50.2037] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (208) handleJSONP args={'cmd' => 'getAllTracks'}
[17-12-06 07:06:50.2041] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (298) processing time=1.5e-05
[17-12-06 07:06:50.7621] Plugins::LMSessentiaIntegration::Plugin::handleJSO NP (208) handleJSONP args={'cmd' => 'getStats'}


with the error message in between:


[17-12-06 07:05:54.3729] Slim::Web::JSONRPC::requestMethod (443) 00:04:20:12:4d:7e: request not dispatchable!


This message does not appear in version 0.0.4

mr_hyde
2017-12-10, 12:40
[17-12-06 07:05:54.3729] Slim::Web::JSONRPC::requestMethod (443) 00:04:20:12:4d:7e: request not dispatchable!


This message does not appear in version 0.0.4

Issue is gone after re-installation of 0.0.5

BosseJ
2017-12-10, 14:47
FWIW, I noticed the updates of LMS Essentia Integration plugin required me to restart the LMS service twice before it worked smoothly (the latest update v0.0.5 even three times). The first restart, from the popup within LMS plugins settings page, led to Essentia choice grayed out in the dropdown list for Custom Search in the LMS Playlist Editor. After a restart of the LMS service from the OS level the Essentia choice was available again.
Also, for every update when I open the LMS Essentia Integration webpage a pop-up appears informing me about new version available (or something similar) with OK or Cancel as choices. No idea what happens if I choose Cancel (I never did) since the new version was already installed?

The description above may be simply a record of my confused actions and/or faulty memory, but it may explain mr_hyde's experience above? I.e., a repeated service restart of LMS could have remedied the situation in the first place?

mherger
2017-12-11, 00:59
> FWIW, I noticed the updates of LMS Essentia Integration plugin required
> me to restart the LMS service twice before it worked smoothly (the
> latest update v0.0.5 even three times).

Are you running LMS < 7.9 or some older version of 7.9? Previously LMS
didn't wait for the plugin to be downloaded before asking the user to
restart. Just give it a minute or two before the restart, and it should
work first time. 7.9.1 would wait until it has finished downloading
before prompting you to restart.

--

Michael

Roland0
2017-12-12, 13:02
Issue is gone after re-installation of 0.0.5
I haven't been able to reproduce this issue, and the error message you posted could be caused by any plugin / application accessing LMS, so for the time being I hope it was a fluke...

Roland0
2017-12-12, 13:21
Also, for every update when I open the LMS Essentia Integration webpage a pop-up appears informing me about new version available (or something similar) with OK or Cancel as choices. No idea what happens if I choose Cancel (I never did) since the new version was already installed?

The application consists of two parts: the plugin (installed and run on the server), and a web application (installed on the server, run in the browser, and is also cached there). When the plugin is updated, a new version of the web application is also installed on the server, which is "noticed" by the old version of the web application still running in the browser, resulting a prompt to update the web application in the browser.



FWIW, I noticed the updates of LMS Essentia Integration plugin required me to restart the LMS service twice before it worked smoothly (the latest update v0.0.5 even three times). The first restart, from the popup within LMS plugins settings page, led to Essentia choice grayed out in the dropdown list for Custom Search in the LMS Playlist Editor. After a restart of the LMS service from the OS level the Essentia choice was available again.

This most likely happens when the plugin isn't available for the web application to check (Playlist Editor, Essentia Admin and extGUI4LMS all query LMS if the Essentia plugin is installed)
One possible scenario is the one described by Michael, another is that the server is still restarting / unavailable when the check is done.
Next time this happens, try just reloading the web application (Ctrl-R or Ctrl-Shift-R) when LMS is up again.

JensD
2017-12-23, 08:47
What a cool project ;-)

If I understood correctly, there´s not only a JSON interface for uploading, but for queries also.
Is there some doc about the usage?

BTW: I had to change all "continue" to "return" in the ess-analyze.sh to make it run properly ... maybe my personal problem. It runs, but e.g. does not skip analyzing songs where a JSON file already exists.

Jens

Roland0
2017-12-25, 15:00
If I understood correctly, there´s not only a JSON interface for uploading, but for queries also.

Yes



Is there some doc about the usage?

There is, now (https://www.nexus0.net/pub/sw/lmsessentia/api.html)



BTW: I had to change all "continue" to "return" in the ess-analyze.sh to make it run properly ... maybe my personal problem. It runs, but e.g. does not skip analyzing songs where a JSON file already exists.

Strange - continue is a very basic shell builtin command. What exactly happens? Error messages?
Maybe try replacing the ones in the analyze_file function with return

JensD
2017-12-26, 04:05
Hi Roland0


Strange - continue is a very basic shell builtin command. What exactly happens? Error messages?
Maybe try replacing the ones in the analyze_file function with return

Thanks for the documentation ;-)

About the continue: I received warnings that continue is allowed only in a loop, so the script just skipped that (what makes perfectly sense to me, as it was executing a function) and executed the next step in the function. Changing continue to return (i.e. ending the function) did the job for me.

Cheers
Jens

Roland0
2018-01-01, 10:53
About the continue: I received warnings that continue is allowed only in a loop, so the script just skipped that (what makes perfectly sense to me, as it was executing a function) and executed the next step in the function. Changing continue to return (i.e. ending the function) did the job for me.
Good point - the code in question used to be in a loop before I moved it to a function. However, since it continued working, I didn't bother changing it. Still strange why it works on some systems, and not on others.
Anyway, I'll upload a new version.