Jump to content

New Plugin: Smart Playlists 2.0


Recommended Posts

Posted
2 hours ago, nospotify said:

Same. Downloaded, installed, restarted Emby, clicked on "Smart Playlist" in settings and nothing happens.

Please make sure to supply a server log in order to get the best help possible on this. As I'm not the plugin developer, all I'm doing is a quick retargeting to the 4.9 libraries and then recompiling. Any other details beyond that I'm relying on you guys.

nospotify
Posted
52 minutes ago, Luke said:

Please make sure to supply a server log in order to get the best help possible on this. As I'm not the plugin developer, all I'm doing is a quick retargeting to the 4.9 libraries and then recompiling. Any other details beyond that I'm relying on you guys.

See attached. Rolled log, did a few things including play from an old SmartPlaylist-created playlist, then went to Settings and clicked Smart Playlist - nothing happened.

embyserver.txt

Posted

The new one didn't work for me either (similar issue in the log posted on the previous replay with missing .js file). Sounds like it's an incomplete assembly as the old one (uncompressed) was ~800K and the new one is ~300K.

Posted
2 hours ago, jasonb1 said:

The new one didn't work for me either (similar issue in the log posted on the previous replay with missing .js file). Sounds like it's an incomplete assembly as the old one (uncompressed) was ~800K and the new one is ~300K.

I don't really know the plugin well enough to comment on that. That's just what is produced from pulling down the source code and compiling it.

Posted
2 hours ago, Luke said:
2025-10-26 07:39:29.729 Error SmartPlaylistService-0HNGKB52F94G4:00000006: Error processing request
	*** Error Report ***
	Version: 4.9.1.80
	Command line: /volume3/@appstore/EmbyServer/system/EmbyServer.dll -programdata /var/packages/EmbyServer/var -ffdetect /var/packages/EmbyServer/target/bin/ffdetect -ffmpeg /var/packages/EmbyServer/target/bin/ffmpeg -ffprobe /var/packages/EmbyServer/target/bin/ffprobe -nolocalportconfig -ignore_vaapi_enabled_flag -pidfile /var/packages/EmbyServer/var/EmbyServer.pid -defaultdirectory /volume1/Public -updatepackage emby-server-synology72_{version}_x86_64.spk -noautorunwebapp
	Operating system: Linux version 4.4.302+ (root@build7) (gcc version 12.2.0 (GCC) ) #81180 SMP Fri Oct 3 14:03:36 CST 2025
	OS/Process: x64/x64
	Framework: .NET 8.0.11
	Runtime: volume3/@appstore/EmbyServer/system/System.Private.CoreLib.dll
	Processor count: 4
	Data path: /var/packages/EmbyServer/var
	Application path: /volume3/@appstore/EmbyServer/system
	System.MissingMethodException: System.MissingMethodException: Method not found: 'MediaBrowser.Model.Querying.QueryResult`1<System.String> MediaBrowser.Controller.Library.ILibraryManager.GetStreamLanguages(MediaBrowser.Controller.Entities.InternalItemsQuery, MediaBrowser.Model.Entities.MediaStreamType)'.
	   at Getter.<>c.<get_AudioLanguages>b__21_0()
	   at Getter.CreateListValues(Func`1 funct, String def)
	   at Getter.get_AudioLanguages()
	   at SmartPlaylist.Domain.CriteriaDefinition.CriteriaDefinitions.StreamAudioLanguageCriteriaDefinition.get_Values()
	   at SmartPlaylist.Services.SmartPlaylist.CleanupOldCriteriaDecorator.CleanupOldCriteria(SmartPlaylistDto dto)
	   at SmartPlaylist.Services.SmartPlaylist.CleanupOldCriteriaDecorator.CleanupSmartPlaylist(SmartPlaylistDto dto)
	   at System.Collections.Generic.List`1.ForEach(Action`1 action)
	   at SmartPlaylist.Services.SmartPlaylist.CleanupOldCriteriaDecorator.GetAllSmartPlaylistsAsync()
	   at SmartPlaylist.Services.SmartPlaylist.CacheableSmartPlaylistStore.<GetAllCachedSmartPlaylistAsync>b__8_0()
	   at SmartPlaylist.Infrastructure.MemCache.<>c__DisplayClass4_0.<<GetOrCreateManyAsync>b__0>d.MoveNext()
	--- End of stack trace from previous location ---
	   at SmartPlaylist.Infrastructure.MemCache.GetOrCreateManyAsync(Func`1 createAllFunc, TimeSpan absoluteExpiration)
	   at SmartPlaylist.Services.SmartPlaylist.CacheableSmartPlaylistStore.GetAllCachedSmartPlaylistAsync()
	   at SmartPlaylist.Services.SmartPlaylist.CacheableSmartPlaylistStore.LoadPlaylistsAsync(Guid userId)
	   at SmartPlaylist.PerfLoggerDecorators.Services.SmartPlaylistStorePerfLoggerDecorator.LoadPlaylistsAsync(Guid userId)
	   at SmartPlaylist.Api.SmartPlaylistService.Get(GetAppData request)
	   at Emby.Server.Implementations.Services.ServiceController.GetTaskResult(Task task)
	   at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost httpHost, IServerApplicationHost appHost, IRequest httpReq, IResponse httpRes, IStreamHelper streamHelper, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
	   at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, RestPath restPath, String urlString, String localPath, String contentTypeInPath, CancellationToken cancellationToken)
	Source: SmartPlaylist
	TargetSite: SmartPlaylist.Domain.Values.ListValue[] <get_AudioLanguages>b__21_0()
	
2025-10-26 07:39:29.729 Info SmartPlaylistService-0HNGKB52F94G4:00000006: http/1.1 Response 500 to host1. Time: 602ms. GET http://host2:8096/smartplaylist/appData?v=2.5.0.4810&X-Emby-Client=Emby Web&X-Emby-Device-Name=Chrome macOS&X-Emby-Device-Id=4e362fe4-efba-45e9-9e64-c3deab38a468&X-Emby-Client-Version=4.9.1.80&X-Emby-Token=x_secret2_x&X-Emby-Language=en-gb&reqformat=json. 
2025-10-26 07:39:33.197 Info SessionsService-0HNGKB52F94G4:0000000A: http/1.1 POST http://host2:8096/emby/Sessions/Capabilities/Full?X-Emby-Client=Emby Web&X-Emby-Device-Name=Chrome macOS&X-Emby-Device-Id=4e362fe4-efba-45e9-9e64-c3deab38a468&X-Emby-Client-Version=4.9.1.80&X-Emby-Token=x_secret2_x&X-Emby-Language=en-gb&reqformat=json. Source Ip: host1, UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
2025-10-26 07:39:33.199 Info SessionsService-0HNGKB52F94G4:0000000A: http/1.1 Response 204 to host1. Time: 2ms. POST http://host2:8096/emby/Sessions/Capabilities/Full?X-Emby-Client=Emby Web&X-Emby-Device-Name=Chrome macOS&X-Emby-Device-Id=4e362fe4-efba-45e9-9e64-c3deab38a468&X-Emby-Client-Version=4.9.1.80&X-Emby-Token=x_secret2_x&X-Emby-Language=en-gb&reqformat=json. 
2025-10-26 07:39:33.243 Error SmartPlaylistService-0HNGKB52F94G4:0000000D: Error processing request
	*** Error Report ***
	Version: 4.9.1.80
	Command line: /volume3/@appstore/EmbyServer/system/EmbyServer.dll -programdata /var/packages/EmbyServer/var -ffdetect /var/packages/EmbyServer/target/bin/ffdetect -ffmpeg /var/packages/EmbyServer/target/bin/ffmpeg -ffprobe /var/packages/EmbyServer/target/bin/ffprobe -nolocalportconfig -ignore_vaapi_enabled_flag -pidfile /var/packages/EmbyServer/var/EmbyServer.pid -defaultdirectory /volume1/Public -updatepackage emby-server-synology72_{version}_x86_64.spk -noautorunwebapp
	Operating system: Linux version 4.4.302+ (root@build7) (gcc version 12.2.0 (GCC) ) #81180 SMP Fri Oct 3 14:03:36 CST 2025
	OS/Process: x64/x64
	Framework: .NET 8.0.11
	Runtime: volume3/@appstore/EmbyServer/system/System.Private.CoreLib.dll
	Processor count: 4
	Data path: /var/packages/EmbyServer/var
	Application path: /volume3/@appstore/EmbyServer/system
	System.MissingMethodException: System.MissingMethodException: Method not found: 'MediaBrowser.Model.Querying.QueryResult`1<System.String> MediaBrowser.Controller.Library.ILibraryManager.GetStreamLanguages(MediaBrowser.Controller.Entities.InternalItemsQuery, MediaBrowser.Model.Entities.MediaStreamType)'.
	   at Getter.<>c.<get_AudioLanguages>b__21_0()
	   at Getter.CreateListValues(Func`1 funct, String def)
	   at Getter.get_AudioLanguages()
	   at SmartPlaylist.Domain.CriteriaDefinition.CriteriaDefinitions.StreamAudioLanguageCriteriaDefinition.get_Values()
	   at SmartPlaylist.Services.SmartPlaylist.CleanupOldCriteriaDecorator.CleanupOldCriteria(SmartPlaylistDto dto)
	   at SmartPlaylist.Services.SmartPlaylist.CleanupOldCriteriaDecorator.CleanupSmartPlaylist(SmartPlaylistDto dto)
	   at System.Collections.Generic.List`1.ForEach(Action`1 action)
	   at SmartPlaylist.Services.SmartPlaylist.CleanupOldCriteriaDecorator.GetAllSmartPlaylistsAsync()
	   at SmartPlaylist.Services.SmartPlaylist.CacheableSmartPlaylistStore.<GetAllCachedSmartPlaylistAsync>b__8_0()
	   at SmartPlaylist.Infrastructure.MemCache.<>c__DisplayClass4_0.<<GetOrCreateManyAsync>b__0>d.MoveNext()
	--- End of stack trace from previous location ---
	   at SmartPlaylist.Infrastructure.MemCache.GetOrCreateManyAsync(Func`1 createAllFunc, TimeSpan absoluteExpiration)
	   at SmartPlaylist.Services.SmartPlaylist.CacheableSmartPlaylistStore.GetAllCachedSmartPlaylistAsync()
	   at SmartPlaylist.Services.SmartPlaylist.CacheableSmartPlaylistStore.LoadPlaylistsAsync(Guid userId)
	   at SmartPlaylist.PerfLoggerDecorators.Services.SmartPlaylistStorePerfLoggerDecorator.LoadPlaylistsAsync(Guid userId)
	   at SmartPlaylist.Api.SmartPlaylistService.Get(GetAppData request)
	   at Emby.Server.Implementations.Services.ServiceController.GetTaskResult(Task task)
	   at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost httpHost, IServerApplicationHost appHost, IRequest httpReq, IResponse httpRes, IStreamHelper streamHelper, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
	   at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, RestPath restPath, String urlString, String localPath, String contentTypeInPath, CancellationToken cancellationToken)
	Source: SmartPlaylist
	TargetSite: SmartPlaylist.Domain.Values.ListValue[] <get_AudioLanguages>b__21_0()
	
2025-10-26 07:39:33.244 Info SmartPlaylistService-0HNGKB52F94G4:0000000D: http/1.1 Response 500 to host1. Time: 10ms. GET http://host2:8096/smartplaylist/appData?v=2.5.0.4810&X-Emby-Client=Emby Web&X-Emby-Device-Name=Chrome macOS&X-Emby-Device-Id=4e362fe4-efba-45e9-9e64-c3deab38a468&X-Emby-Client-Version=4.9.1.80&X-Emby-Token=x_secret2_x&X-Emby-Language=en-gb&reqformat=json. 

Tested the new version, looks like the same result

collateraldamage
Posted (edited)

The configuration page is absolutely still busted, but I have noticed pulling the logs for the plugin itself out of /var/lib/emby/data/smartplaylists that it's actually running through existing ones again, where previously it was failing altogether. This is running the test version luke posted above. I do think it was working with the updated version from the first page of the forum post as well though - there's definitely something screwy with the config page:

 

 
2025-10-27 19:42:43.568 Error WebAppService-0HNGL3FRGGFPT:00000001: Error processing request
*** Error Report ***
Version: 4.9.1.80
Command line: /opt/emby-server/system/EmbyServer.dll -programdata /var/lib/emby -ffdetect /opt/emby-server/bin/ffdetect -ffmpeg /opt/emby-server/bin/ffmpeg -ffprobe /opt/emby-server/bin/ffprobe -restartexitcode 3 -updatepackage emby-server-deb_{version}_amd64.deb
Operating system: Linux version 6.14.11-4-pve (build@proxmox) (gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT_DYNAMIC PMX 6.14.11-
OS/Process: x64/x64
Framework: .NET 8.0.11
Runtime: opt/emby-server/system/System.Private.CoreLib.dll
Processor count: 2
Data path: /var/lib/emby
Application path: /opt/emby-server/system
System.IO.FileNotFoundException: System.IO.FileNotFoundException: File not found: smartplaylist.2.5.1.4850.js
File name: 'smartplaylist.2.5.1.4850.js'
at Emby.Web.Api.WebAppService.Get(GetDashboardConfigurationPage request)
at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost httpHost, IServerApplicationHost appHost, IRequest httpReq, IResponse httpRes, IStreamHelper streamHelper, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, RestPath restPath, String urlString, String localPath, String contentTypeInPath, CancellationToken cancellationToken)
Source: Emby.Web
TargetSite: System.Threading.Tasks.Task`1[System.Object] Get(Emby.Web.Api.GetDashboardConfigurationPage)
 
Edited by collateraldamage
Posted

I'd rather Luke work on the Core Smart Views - all the time he is debugging this, he could be working on the core feature that does the same - just saying... 🤔

  • Agree 9
FredFeinbein
Posted
19 hours ago, collateraldamage said:

The configuration page is absolutely still busted, but I have noticed pulling the logs for the plugin itself out of /var/lib/emby/data/smartplaylists that it's actually running through existing ones again, where previously it was failing altogether. This is running the test version luke posted above. I do think it was working with the updated version from the first page of the forum post as well though - there's definitely something screwy with the config page:

 

 
2025-10-27 19:42:43.568 Error WebAppService-0HNGL3FRGGFPT:00000001: Error processing request
*** Error Report ***
Version: 4.9.1.80
Command line: /opt/emby-server/system/EmbyServer.dll -programdata /var/lib/emby -ffdetect /opt/emby-server/bin/ffdetect -ffmpeg /opt/emby-server/bin/ffmpeg -ffprobe /opt/emby-server/bin/ffprobe -restartexitcode 3 -updatepackage emby-server-deb_{version}_amd64.deb
Operating system: Linux version 6.14.11-4-pve (build@proxmox) (gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT_DYNAMIC PMX 6.14.11-
OS/Process: x64/x64
Framework: .NET 8.0.11
Runtime: opt/emby-server/system/System.Private.CoreLib.dll
Processor count: 2
Data path: /var/lib/emby
Application path: /opt/emby-server/system
System.IO.FileNotFoundException: System.IO.FileNotFoundException: File not found: smartplaylist.2.5.1.4850.js
File name: 'smartplaylist.2.5.1.4850.js'
at Emby.Web.Api.WebAppService.Get(GetDashboardConfigurationPage request)
at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost httpHost, IServerApplicationHost appHost, IRequest httpReq, IResponse httpRes, IStreamHelper streamHelper, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, RestPath restPath, String urlString, String localPath, String contentTypeInPath, CancellationToken cancellationToken)
Source: Emby.Web
TargetSite: System.Threading.Tasks.Task`1[System.Object] Get(Emby.Web.Api.GetDashboardConfigurationPage)
 

I have the exact same error in my logs also running server 4.9.1.80.

And thanks to Luke for trying to keep this plugin alive.

mickle026
Posted (edited)

you'll not get it to load because the JS file is missing, it seems to have been a jellyfin pugin, and the emby JS file created via TS/React code, to build it you need to either know how to recreate that or rebuild a whole new dashboard page in emby format

Edited by mickle026
FredFeinbein
Posted (edited)

And i also wondered about the file size difference. latest old version was approx. 800kb filesize. The new from Luke was only approx. 300 kb. I think, according to the Exception maybe its missing the embedded resources (js files) ? .. just a wild guess.

Edited by FredFeinbein
typos
Posted (edited)
12 hours ago, LongMan said:

@rbjtechDo you use the plugin?

 

Have done - not sure why you ask the question as whether I've used it or not, my immediate thoughts were why would you spend precious development time on an unsupported 3rd party plugin, when the 'Smart Views' core features promised in the last Beta was not delivered ?  Logic suggests to me, it would be better to redirect that effort - unless the 'Smart Views' is way off, in which case fixing the Plugin could be justified as an interim fix.   But as always, we simply don't know how long we need to wait for the Core feature - could be weeks, could be months and in some cases could be years away ... 🤔

Edited by rbjtech
  • Agree 4
mickle026
Posted

You are trying to fix the jellyfin version, both the icon and the js file are missing, the js file in this version uses adapters that are not in emby, they dont work.
Version 2.2.0.0 is the emby one as far as I can tell

Posted (edited)
On 10/28/2025 at 5:57 AM, rbjtech said:

unless the 'Smart Views' is way off, in which case fixing the Plugin could be justified as an interim fix.   But as always, we simply don't know how long we need to wait for the Core feature - could be weeks, could be months and in some cases could be years away ... 🤔

I think you understand my position.
As to why I asked, just wanted to know if your decision involved you making the same personal sacrifice (ie deferred gratification) that you are asking others to make.

Edited by LongMan
sydlexius
Posted (edited)
11 hours ago, LongMan said:

I think you understand my position.
As to why I asked, just wanted to know if your decision involved you making the same personal sacrifice (ie deferred gratification) that you are asking others to make.

What are you even going on about? This is a plugin developed by a third party that by all appearances has been abandoned. That @Luketook a swing at giving us a minimum viable product (something anybody can do since the source and Emby SDK is available to anyone) is more than anyone could reasonably expect. I share a lot of the frustration that many of us have experienced at promised features not being delivered, but this is not an example of that issue. 

Edited by sydlexius
Grammar harder
feerlessleadr
Posted
On 9/5/2025 at 2:48 PM, feerlessleadr said:

I unfortunately had to migrate my music to jellyfin since there is a very easy to use smart playlist plugin that works very well (and consistently). Looking forward to trying out the new emby smart playlist function once it is merged in 4.9 (hopefully).

For those missing this functionality, as I mentioned previously, there is a fantastic jellyfin plugin that handles smart playlists that I've been using for the last few months (only music is on jellyfin, everything else I've kept in emby).

https://github.com/jyourstone/jellyfin-smartplaylist-plugin

I'd much rather keep everything in emby, but for now this is perfect (also allows me to use music assistant since that allows jellyfin as a source for music but not emby).

  • Thanks 1
Posted

Ugh, I wish I knew this before I upgraded just now... I really rely on the smart playlists functionality.

And now I can't even roll back because my database has been changed. Grr.

Posted
On 10/30/2025 at 1:05 PM, sydlexius said:

What are you even going on about? This is a plugin developed by a third party that by all appearances has been abandoned. That @Luketook a swing at giving us a minimum viable product (something anybody can do since the source and Emby SDK is available to anyone) is more than anyone could reasonably expect. I share a lot of the frustration that many of us have experienced at promised features not being delivered, but this is not an example of that issue. 

I mean, given that its stopped working in 4.9 means its because of emby changes. The plugin hasn't changed. So isn't there no one better informed about emby changes from 4.8 -> 4.9 than @Luke?

Aside form not having written the plugin, I'm sure one of the emby devs is able to look at it and find the issue and fix either the plugin or make emby backward compatible with it.

sydlexius
Posted

So goofing around with VSCode + Copilot + Claude 4.5, I was able to cobble together a version that could successfully load my old collections.  @LukeI assume it'd be a waste of time to submit this (admittedly most likely slop code) as a PR to the original author.  I don't feel comfortable sharing the DLL itself, since I'm just a a "joe average" internet user.  I'd like for someone who know their way around plugins to review this, and would be willing to host a fork of this for someone to evaluate (and hopefully has a strong stomach).

Posted (edited)
9 minutes ago, sydlexius said:

So goofing around with VSCode + Copilot + Claude 4.5, I was able to cobble together a version that could successfully load my old collections.  @LukeI assume it'd be a waste of time to submit this (admittedly most likely slop code) as a PR to the original author.  I don't feel comfortable sharing the DLL itself, since I'm just a a "joe average" internet user.  I'd like for someone who know their way around plugins to review this, and would be willing to host a fork of this for someone to evaluate (and hopefully has a strong stomach).

I'm a software engineer with 15 years experience so I'm happy to take a look and validate any changes you've made for sanity. Unfortunately I don't have the time to look into it myself atm

Edited by tOLJY
sydlexius
Posted

Here's my fork of it, leveraging the latest Emby SDK

Posted (edited)

With a surface reading it seems fine. I don't really have the time to build it and test it, but the diff in GitHub seems sane enough - at least to someone who doesn't know the emby SDK or how plugins work with it.

I think it's probably fine for some patchwork code to bridge the gap until we get there new core functionality in emby itself, whenever that is...

Edited by tOLJY
sydlexius
Posted
12 hours ago, tOLJY said:

With a surface reading it seems fine. I don't really have the time to build it and test it, but the diff in GitHub seems sane enough - at least to someone who doesn't know the emby SDK or how plugins work with it.

I think it's probably fine for some patchwork code to bridge the gap until we get there new core functionality in emby itself, whenever that is...

I setup a github action to use the existing build.sh to build tagged releases.  Anyone is free to test out the release, as found here:

https://github.com/sydlexius/Emby.SmartPlaylist.Plugin/releases/tag/v2.5.2.4862

Note that I am not a developer.  I don't grok js, ts, or c#.  If you experience an issue, you're welcome to share relevant log files or browser developer mode console output, but I can't promise I have any ability to fix it.  Peter principal through the power of AI!

  • Thanks 2

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...