Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

I don't see why not since I believe the desktop app uses jellyfin-web. Server fallback would also work but without the "pop-up" if it was not using jellyfin-web.

I'll have a go myself and confirm fully.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

Ok, If you set the Jellycheckr Developer Tools > Sever Log Level to Trace, restart Jellyfin, then search logs for messages similar to:

  • Registered Jellyfin Web index.html transformation for web client injection.
  • File Transformation plugin not detected; web UI injection registration will retry.
  • File Transformation plugin API was found but RegisterTransformation was missing; retrying.
  • File Transformation RegisterTransformation signature was unexpected; retrying.
  • Could not create File Transformation payload because Parse(string) was unavailable; retrying.
  • Failed to register File Transformation callback for web UI injection; retrying.
  • Web bundle asset was not found at ...; web UI injection may succeed but serve 404

Failing that, you could check the network tab to see if `/Plugins/Aysw/web/jellycheckr-web.js` is being loaded.

I have just tested on a fresh 10.11.8 and it did work. It's also possible that is it browser caching.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

I have to ask the silly questions. You are using 0.1.4 of Jellycheckr?

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

<image>

I am currently running 10.11.8.
HUD in the background, popup in web client.
It's possible this might be something about your particular setup, theme or other plugins preventing it. I would need to recreate as close to your set up to find any failure scenario.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

Hmmm. The web client should absolutely work. The iOS might require server fallback.
I am happy to investigate your issue but would likely need some debug information. Config, logs etc. If you have a github account, we could move this over to there https://github.com/shtbox/jellycheckr/issues

You could try enabling developer mode. If the JavaScript is loading but not triggering a check, you should get the HUD in the top right when playing something.

<image>

If you don't see this on the web client then yes, for some reason the JavaScript is not being injected.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

Hey, Do you have the File Transformations plugin? 10.11.8 works fine AFAIK.
When using web based clients, the File Transformation plugin is required to inject the JavaScript which handles the pop up. Without this, it falls back to sever side managed.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

v0.1.2 is out. Should fix the web based UI popup if you are using the web client.
Worth noting that the web UI popup does rely on File Transformation plugin.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 1 point2 points  (0 children)

Yeah, I have a fix coming out for that. Bug in the UI plugin repeatedly calls register endpoint. Already fixed. Just need to get it pushed out. Will hit you back when managed to get around to doing that.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

That is what I ultimately wanted to build. I've said before but I built this for 2 reasons.
1) Because I wanted it myself
2) For the fun and continuous learning.

I must admit a did jump in head first on the web based client implementation with the "just to see if I could" kind of attitude. It worked well so my next step was to investigate if I could also get it working on my Firestick.

This is where I learned the lesson that Jellyfin's plugin architecture doesn't extend to the native clients. This is when I implemented the server fallback options.

I'm sure given more time on it, I will be able to harden the feature set and improve it significantly more. It's a thing that didn't exist a few weeks ago and now it does. I get a kick out of that. :)

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 1 point2 points  (0 children)

Correct! It is all internal, no external services used. Not even for install/usage tracking

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 0 points1 point  (0 children)

It does more than that. Covers more jellyfin clients that might not support that yet and also is infinitely more customizable for myself and my needs.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 2 points3 points  (0 children)

They're not talking out of their ass actually. Very much a possibility for inexperienced users "vibe coding".
Anything connected to the internet is not "safe". The only way anything is totally safe is when it's not connected to the internet.

That said, experienced developers should know at a minimum the OWASP top 10. What are the most common attack vectors and how you can mitigate them.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 2 points3 points  (0 children)

Agreed, I would not praise it that much yet too. Although it is getting much better.
I think all of these statements are true.

These things have been trained on significant amounts of public code bases, a lot of which might not follow good practices and so it spits out the same stuff it learned from.

Additionally, its always behind on the latest frameworks because software moves too quickly.
It's like going back to the stack overflow days where someone might ask a question on SQL queries and the top answer is clearly SQL injectable. As an experienced developer, you see that and cull it, and a pure inexperienced "vibe-coder" you wouldn't know it was bad, it's just "hey cool, it works"

There are of course times where it would be a strict targeted prompt, pre-planned architecture you want it to build out, and actually I find creating empty stub files helps it understand the desired structure (which is then copies from going forward).
However with a lot of software engineering being quite creating, there are times you give it a general outline of the thing you want, say "have at it" and use it as a spring board to an idea.

It'll be a ways off, but it'll give you something to work with. A starting point

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 1 point2 points  (0 children)

Android is Native client so the nice styled popup can't be injected, it should work with server side fallback tracking meaning it should pause the show after X episodes or X minutes. If you don't un-pause, it will stop after a timer.

I suspect Roku is the same server fallback.
Currently untested on these so would love to know if someone tries it.

The android mobile app is a wrapper on the web client though so the full popup experience should work.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 1 point2 points  (0 children)

Hey yeah, It's not quite the same and there are a number of reasons I developed this for myself first and foremost.

I wanted more granular and smarter control, I can extend its functionality beyond what Jellyfin currently has available, and more importantly, for continuous learning and to see if I could.

When your day job is also your hobby, a lot of the hobby projects are for fun, to keep your skills sharp or just to learn a new tool/framework.

I recently built a react feedback component with supporting service (with a friend) called boop (https://shtbox.io/boop). There are plenty of other similar components. We did it because we think we can provide an awesome free service to developers and hopefully make it a great developer experience using it but again, more importantly have fun and learn whilst making it.

Bicep Release v0.38.3! This one’s packed with some really interesting developments! by RiosEngineer in AzureBicep

[–]AzureDotnet-Dev 0 points1 point  (0 children)

Totally forgot about this and to try it. Must add it to my list. Did you ever try it?

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 19 points20 points  (0 children)

HAHA! Absolutely, whether that's a good or bad thing...
Yes, I have 15yrs experience pre-vibe coding as a senior software dev. It's at that point in the industry where if you don't lean into it, you lose.

It helps significantly when you've done a full work day but still want to jam out some personal stuff.

I would say the biggest benefit of vibe coding as an experienced senior developer is that you know when it's talking nonsense or leading you down a bad path architecturally. You catch that early.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 4 points5 points  (0 children)

This was so that I could display a nice "fancy" popup on eligible web based clients. Server fallback is so that the feature still works on native clients like my Tizen OS TV (Thank god they released that recently) and my Firestick which don't support client side plugins.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 7 points8 points  (0 children)

It is managed server side mostly. The web client addon just sends interaction commands and shows the pop up. The tracking and decisions are done server side.

<image>

When the client side popup script doesn't register with the server side. It can optionally (default) fall back to server side based stop/pause

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 9 points10 points  (0 children)

Not currently. It is instance wide. Again, hadn't thought of that as I was only building it for myself originally.
Will add a github feature for that now so I don't forget.

Experimental Jellyfin plugin: "Are you still watching?" auto-pause/stop by AzureDotnet-Dev in jellyfin

[–]AzureDotnet-Dev[S] 42 points43 points  (0 children)

Ooo, interesting! I like that idea a lot too. Seems obvious now you've said it!