Jump to content

Developing a standalone embystat server


reggi

Recommended Posts

@mgworek 
Here is my config : 
5ca608508952f_embystat.png

 

And /mnt/user/appdata/embystat contains the same list than hshah give few posts before
post-163332-0-99835200-1554385217_thumb.png

Edited by kesm
  • Like 1
Link to comment
Share on other sites

cuzz1369

@DRAGUNSLAYER

 

Mmmm, looks like a bug to me. Did you recently remove a user?

The only way I can see this exception is possible is when you have devices on your Emby server linked to users who no longer exists. Ofcourse, this should not fail the sync!

 

@@kesm

Glad to hear it is working now! I will still need to find a solution for your problem.

Yes I definitely have devices there from old users. I have about 80 users which populated a few hundred devices so manually removing them isnt a viable option. Let me know if you need anything else to help debug it.

 

Sent from my SM-G965W using Tapatalk

Link to comment
Share on other sites

Hi, 

Got a new error when watching stuff

at System.Threading.ThreadPoolWorkQueue.Dispatch()
Newtonsoft.Json.JsonSerializationException: Error converting value "DirectPlayError" to type 'EmbyStat.Common.Enums.TranscodeReason'. Path '[0].TranscodingInfo.TranscodeReasons[0]'. ---> System.ArgumentException: Requested value 'DirectPlayError' was not found.

at Newtonsoft.Json.Utilities.EnumUtils.ParseEnum(Type enumType, NamingStrategy namingStrategy, String value, Boolean disallowNumber)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
--- End of inner exception stack trace ---
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)
at Newtonsoft.Json.Linq.JToken.ToObject[T]()
at EmbyStat.Common.Converters.SessionConverter.ConvertToSessions(JArray sessions)+MoveNext() in /EmbyStat.Common/Converters/SessionConverter.cs:line 39
at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at EmbyStat.Services.WebSocketService.WebSocketApiSessionsUpdated(Object sender, GenericEventArgs`1 e) in /EmbyStat.Services/WebSocketService.cs:line 100
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ThreadPoolWorkQueue.Dispatch()
Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:5432
Application started. Press Ctrl+C to shut down.

Unhandled Exception:
Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Newtonsoft.Json.Linq.Extensions.Value[T,U](IEnumerable`1 value)
at EmbyStat.Common.Converters.SessionConverter.ConvertToSessions(JArray sessions)+MoveNext() in /EmbyStat.Common/Converters/SessionConverter.cs:line 31
at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at EmbyStat.Services.WebSocketService.WebSocketApiSessionsUpdated(Object sender, GenericEventArgs`1 e) in /EmbyStat.Services/WebSocketService.cs:line 100
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ThreadPoolWorkQueue.Dispatch()System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Newtonsoft.Json.Linq.Extensions.Value[T,U](IEnumerable`1 value)
at EmbyStat.Common.Converters.SessionConverter.ConvertToSessions(JArray sessions)+MoveNext() in /EmbyStat.Common/Converters/SessionConverter.cs:line 31
at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at EmbyStat.Services.WebSocketService.WebSocketApiSessionsUpdated(Object sender, GenericEventArgs`1 e) in /EmbyStat.Services/WebSocketService.cs:line 100
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ThreadPoolWorkQueue.Dispatch()

Link to comment
Share on other sites

reggi

@@cuzz1369

Thanks for the info, I create a bug for it and will fix it in the next release. It a fast fix, I just have to remove the hard link between devices and users.

 

@@kesm

Ha, you found a new error :) Created a bug for it as well, will be fixed in the next beta release soon.

  • Like 2
Link to comment
Share on other sites

reggi

Hey guys, 

 

I just created a featureupvote page here => https://embystat.featureupvote.com/

Feel free to add, up/down vote ideas or comment on them so I can see what you guys would like to see next.

 

I know there is still a lot of basic work to do but would love to hear your ideas as well.

  • Like 1
Link to comment
Share on other sites

hshah

Hey guys,

 

I just created a featureupvote page here => https://embystat.featureupvote.com/

Feel free to add, up/down vote ideas or comment on them so I can see what you guys would like to see next.

 

I know there is still a lot of basic work to do but would love to hear your ideas as well.

An obvious one but asking because I'm not sure if I'm just being silly... there doesn't seem to be a login / user authentication feature?

  • Like 1
Link to comment
Share on other sites

reggi

No you are correct, that needs to be implemented as well soon. I created a feature for it to see what solution would be best.

Link to comment
Share on other sites

KMBanana

Doesn't seem to handle passwords with certain characters properly.  Couldn't authenticate to Emby with an Admin password that had the characters in the code block below.  My randomly generated password happened to have a bunch so not sure which was causing the problems.  Alpha-numeric password worked fine.  Using docker with beta-linux tag.  

& " @ ; : , 
  • Like 1
Link to comment
Share on other sites

Spaceboy

@@kesm / @@reggi - In the Docker UI for Synology I defined the entire /app folder to mount to a directory of my choosing.  Port 5432 is used by Synology somewhere so I also had to use the "--port 65432" arguement (I just added a 6 in front) to define an alternative port - using Docker's UI for that didn't seem to work and it always defaulted to 5432.

 

My sync is running at the moment and I can see a ~12mb data.db file in /app but whilst the timestamp is changing the size isn't for some reason. I had removed the original container, created a new one, and then put the data.db file back in.  When I started the sync it did say it was clearing the database but the ~12mb I mentioned is what it was before.

 

I will let you guys know when this has finished - it has taken 2 hours to do my films and probably another 2-3 hours to cover the episodes :)

hi, can you explain this in more detail please? i am stuck at this point and i've never used docker before this. i saw your screenshots too which were helpful but i can't see how to get docker to use a port other than 5432. thanks

Link to comment
Share on other sites

hshah

hi, can you explain this in more detail please? i am stuck at this point and i've never used docker before this. i saw your screenshots too which were helpful but i can't see how to get docker to use a port other than 5432. thanks

 

When adding a new container, the Synology Docker UI has the option of selecting Bridged network mode and then defining local and container ports.  The other option is to have a Direct connection to the local network, and they would just be like adding a new device to the network.

 

Using bridged mode with the settings in my screenshot didn't work for some reason, and instead I had to put "--port 65432" as an Execution Command.  What would be good is if the user could define their own port as a parameter (in the 3rd screenshot), rather than a startup command.

post-284361-0-20252400-1554562557_thumb.png

post-284361-0-63048900-1554562561_thumb.png

post-284361-0-52590000-1554562564_thumb.png

  • Like 1
Link to comment
Share on other sites

reggi

When adding a new container, the Synology Docker UI has the option of selecting Bridged network mode and then defining local and container ports.  The other option is to have a Direct connection to the local network, and they would just be like adding a new device to the network.

 

Using bridged mode with the settings in my screenshot didn't work for some reason, and instead I had to put "--port 65432" as an Execution Command.  What would be good is if the user could define their own port as a parameter (in the 3rd screenshot), rather than a startup command.

 

Seems like you need the --port 65432 parameter because you set the local port to 65432 in the second screenshot. What happens if you map port 5432 (local) to 5432 (container) without the execution command?

I'm assuming that the local port is the port inside the container and the container port is the port that you use to connect to the container. But I could be wrong here! 

Link to comment
Share on other sites

hshah

Seems like you need the --port 65432 parameter because you set the local port to 65432 in the second screenshot. What happens if you map port 5432 (local) to 5432 (container) without the execution command?

I'm assuming that the local port is the port inside the container and the container port is the port that you use to connect to the container. But I could be wrong here! 

 

The screenshots were just examples of what you can do. I am not actually using bridged mode because whatever I do with those settings, it doesn't work.

 

Local Port = the exposed one which you would use for access

Container Port = what the container uses and what the Local Port directs to

 

Synology prevents me from using 5432 as the local port because one of its background services uses it, so initially I tried the settings shown in the 2nd screenshot.  The container logs stated that it was listening on port 5432, which was expected, but I couldn't access the UI using 65432.  I'm not entirely sure why, especially since I have Tautulli running in another container with 34400/8181 (local/container) and I access it absolutely fine using 34400.  I didn't bother investigating and just set "--port 65432" with bridged mode disabled.

 

 

 

On a slightly separate note, is there an easy way of seeing the nightly change log?

  • Like 1
Link to comment
Share on other sites

Spaceboy

When adding a new container, the Synology Docker UI has the option of selecting Bridged network mode and then defining local and container ports.  The other option is to have a Direct connection to the local network, and they would just be like adding a new device to the network.

 

Using bridged mode with the settings in my screenshot didn't work for some reason, and instead I had to put "--port 65432" as an Execution Command.  What would be good is if the user could define their own port as a parameter (in the 3rd screenshot), rather than a startup command.

She's Alive!!! :)

 

ta

  • Like 1
Link to comment
Share on other sites

ebrithiljonas

Hello, I have the problem that EmbyStat isn't starting at all. I use the beta-linux build from docker. My Emby also runs in a docker on the same machine.

The error I get in the log is:

unable to open database file
SYSTEM	Server shutdown

I created the container with the following comand:

docker create \
    --name=embystat \
    --restart=unless-stopped \
    -u 1001:113 \  <-- ID of the docker user
    -p 5432:5432 \
    uping/embystat:beta-linux

what am I doing wrong?

Link to comment
Share on other sites

reggi

@@hshah, that is indeed some very strange behavior then that I need to look into. But I haven't had the time to check for some NAS operationg systems if they need some custom docker container or not. It's on my todo list :)

As for the nightly, no there are not really any release notes because I'm still jumping around a lot between branches and dev so dev is not really in finished state at the moment. Will try to update that as well soon, I found some auto release info generator on github!

 

@@Spaceboy

Glad to hear it!! If you have the time, feel free to create some small todo list for other users. I can post it on the github wiki as well.

 

@@ebrithiljonas

Is that the full log file? You can always try to change the nlog.config file line 10 into the following

<logger name="*" minlevel="Debug" writeTo="file" />

Then restart the container again, normally you should see a lot more logs then.

Don't forget to change the minlevel back to "Info" when you are done.

Link to comment
Share on other sites

Hi @@reggi

Got a new error but not sure if it's the same than the one I already logged, the second part from my previous message looks like this but I searched and didn't find any active issue about this. I can't found anything in log files but I got this from docker logs : 

Unhandled Exception:Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Newtonsoft.Json.Linq.Extensions.Value[T,U](IEnumerable`1 value)
at EmbyStat.Common.Converters.SessionConverter.ConvertToSessions(JArray sessions)+MoveNext() in /EmbyStat.Common/Converters/SessionConverter.cs:line 31
at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at EmbyStat.Services.WebSocketService.WebSocketApiSessionsUpdated(Object sender, GenericEventArgs`1 e) in /EmbyStat.Services/WebSocketService.cs:line 100
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ThreadPoolWorkQueue.Dispatch()System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Newtonsoft.Json.Linq.Extensions.Value[T,U](IEnumerable`1 value)
at EmbyStat.Common.Converters.SessionConverter.ConvertToSessions(JArray sessions)+MoveNext() in /EmbyStat.Common/Converters/SessionConverter.cs:line 31
at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at EmbyStat.Services.WebSocketService.WebSocketApiSessionsUpdated(Object sender, GenericEventArgs`1 e) in /EmbyStat.Services/WebSocketService.cs:line 100
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ThreadPoolWorkQueue.Dispatch()
Edited by kesm
Link to comment
Share on other sites

reggi

At the moment I'm finishing my first graph (views per hour of the day) for a user. But seems that chartjs and flexbox don't play well together. As a result I will have to switch to bootstrap to eliminate future problems with flexbox.

 

Because I'm not really a good designer I'm thinking about use a bootstrap template, I selected a few that you can look at and see what you like most

 

http://ableproadmin.com/7.0/default/index.html (with dark background)

http://preview.themeforest.net/item/material-design-angular-2-admin-web-app-with-bootstrap-4/full_screen_preview/19421267

http://radixtouch.in/templates/admin/redstar/source/dark/index.html

http://www.urbanui.com/chroma/index.html

 

Feel free to vote here => https://forms.gle/uiPuJhJBL2T7dtZBA

 

Using a template will force me to get a uniform styling in the application as well will reduce the time I'm working on the UI design a lot.

So let me know what template you like!

Edited by reggi
  • Like 1
Link to comment
Share on other sites

reggi

@@kesm

 

Looks like another value is null where I except a value when you receive a session update from Emby.

I will try to split up the code so we can see in the logs what property is null.

Link to comment
Share on other sites

reggi

@@reggi

 

Looks like it happened when some of my users watched a saved trailer before a movie with cinema mode

 5cac40c4ba74d_stats.png

 

Ow thanks! I'll try the trailer feature myself and see what is null then. I'll keep you posted

Link to comment
Share on other sites

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...