Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WebOS (LG) client #588

Closed
taconaut opened this issue Jan 15, 2019 · 81 comments
Closed

WebOS (LG) client #588

taconaut opened this issue Jan 15, 2019 · 81 comments
Labels
feature Adding a new feature, or substantial improvements on existing functionality

Comments

@taconaut
Copy link

Describe the feature you'd like
As it seems, the Emby WebOS client has never been released as open source and thus is not part of the clients managed by Jellyfin.
Would anyone want to work on this?

Additional context
I'd like to also participate in Jellyfin (backend) development. As I'm using an LG TV as my main renderer, it is importantn for me that the Jellyfin community can maintain the client to support new features; and even more to have a way to make it work with the Jellyfin server if/when Emby decides to break it.

@taconaut taconaut added the feature Adding a new feature, or substantial improvements on existing functionality label Jan 15, 2019
@JustAMan
Copy link
Contributor

I also use LG as viewer, though mine is kind of old (WebOS 2.0).
You can take a look at https://github.com/sleuth255/screenplay as alternative client, though (available in LG Appstore last time I checked).

@taconaut
Copy link
Author

taconaut commented Jan 15, 2019

Nice! So the next steps would probably be to

  • Fork it to Jellyfin
  • Rebrand it
  • Make it available

As the project doesn't include a license the first step will probably be to get in touch with the only maintenair of this project.
I'm also on WebOS 2.0 btw.

@sparky8251
Copy link
Contributor

In case someone reads this and wants to write a new client from the ground up, look into React Native.

Has a lot of support for various platforms and it's the current plan for a new "universal" client from jellyfin-web to jellyfin-ios.

@alois-git
Copy link

alois-git commented Jan 19, 2019

So you know I have tried to install https://github.com/sleuth255/screenplay but it is not compatible with my LG TV which is pretty recent (2017). I am using the emby client right know ... shame on me

@agilob
Copy link

agilob commented Jan 19, 2019

As it seems, the Emby WebOS client has never been released as open source and thus is not part of the clients managed by Jellyfin.

Isn't most of the src shared with samsung client?

@cfunseth
Copy link

cfunseth commented Mar 4, 2019

I wanted to chime in and say that I just loaded the sleuth/screenplay app from the LG Store and it's working with Jellyfin v10.1.0. It looks like it was recently updated on LG's store so it's still being developed on.

@theSuess
Copy link

I've just updated the official emby app on my WebOS TV which broke support for jellyfin with the message "Please update your emby system". I'm just posting here so current users might not make the same mistake I did.

@VoodooZ
Copy link

VoodooZ commented Mar 16, 2019

@theSuess Thanks for the warning. I just noticed the same on my 65B7P. It's version 1.0.15 in my case...
I decided to wait and found this thread in the process of researching user feedbacks/changelogs.
Let's hope the alternatives work because I find the emby app slow as hell.

@VoodooZ
Copy link

VoodooZ commented Mar 16, 2019

Just tried the Screenplay webos app. It works but it's very barebone at this stage compared to the emby one. Minimal configuration and the player is very basic.
But I do like feature of allowing customizing the coloured LG remote buttons though. :)

@agilob
Copy link

agilob commented Mar 16, 2019

@VoodooZ if your TV has ebmy app it most likely also has DLNA client, so you can stream to the TV from your phone/webbrowser. But unfortunately this is currently also partially broken due to #1078

@DpunktKpunkt
Copy link

DpunktKpunkt commented Mar 16, 2019

@theSuess Same here. I tcpdumped the entire communication between LG Emy Theater App 1.0.15 with Jellyfin 10.2.2, maybe someone has time to fiddle with some settings (version number, exchange the String 'jellyfin' ;-) ... Edit: Dump shorted

GET /emby/system/info/public HTTP/1.1

HTTP/1.1 200 OK
{"LocalAddress":"http://192.168.0.3:8096","WanAddress":"http://12.345.67.890:8096","ServerName":"xxxxx","Version":"10.2.2","OperatingSystem":"Linux","Id":"1234567890abcdef"}

GET /emby/web/manifest.json HTTP/1.1

HTTP/1.1 200 OK
{
"name": "Emby",
"_comment": "This should be Jellyfin, but that breaks apps...",
"description": "Jellyfin: the Free Software Media System.",
"lang": "en-US",
"display": "minimal-ui",
"short_name": "Emby",
"start_url": "/web/index.html",
...

GET /emby/web/strings/en-US.json HTTP/1.1

HTTP/1.1 404 OK
Could not find file 'jellyfin-web/src/strings/en-US.json'.

@VoodooZ
Copy link

VoodooZ commented Mar 16, 2019

@agilob Yeah, that's what I mostly used before switching from emby to jellyfin but DLNA by itself is kind of barebone and doesn't provide any movie/tv descriptions organizational features. It's like playing movies using a File Explorer in windows. And although the video player on the LG plays everything well (including HDR!), the rest is just too barebone for every use.
The emby app has decent customizability, beside being a bit slow on my OLED. That's why I resisted the temptation to ugprade to latest. But I love jellyfin so I'm hoping we'll eventually have our own app.
Keep up the excellent work guys...
ps: my past programming experience is mostly firmware so I can't help much but I'm good at testing (aka breaking) stuff so I'll test anything you guys put out.

@DpunktKpunkt
Copy link

@theSuess LG App 1.0.15 is working now again with jellyfin 10.2.2 (same problem as Android app):

Replace all occurences of the String "jellyfin" (case insensitive) in en-US.json, index.html and manifest.json with something else (e.g. "Emby" ...) and restart your server.

@VoodooZ
Copy link

VoodooZ commented Mar 16, 2019

Did somebody find a changelog for 1.0.15? I couldn't find anything.

@DpunktKpunkt
Copy link

Last update - nginx serving 3 static files with substituted Strings - replacing the original files.
Nginx acts as a proxy for the rest. Works flawlessly and jellyfin can be left in original state + updates to newer jellyfin versions work out of the box.

@anthonylavado
Copy link
Member

anthonylavado commented Mar 16, 2019

@theSuess LG App 1.0.15 is working now again with jellyfin 10.2.2 (same problem as Android app): ...

@DpunktKpunkt Yes, you can do this, but be warned that your changes will be overwritten the next time you update Jellyfin.

Also, Emby can change their methods at any time. On top of that, while we’re not deliberately breaking compatibility, eventually we’ll have enough changes that it might not work anymore.

Otherwise, carry on 😄

@DpunktKpunkt
Copy link

@VoodooZ Not yet published: https://emby.media/community/index.php?/topic/49958-status-on-official-lg-app/page-21

According to official emby threads

  • Some issues with chapters, actors ...
  • Subtitle issues
  • Locking out jellyfin users ;-)
  • ...

@DpunktKpunkt
Copy link

DpunktKpunkt commented Mar 16, 2019

@anthonylavado Yes, you can do this, but be warned that your changes will be overwritten the next time you update Jellyfin.

I know so I changed my nginx configuration.

Also, Emby can change their methods at any time. On top of that, while we’re not deliberately breaking compatibility, eventually we’ll have enough changes that it might not work anymore.

I expected such behavior sooner or later. Now that we are warned I won't update my Emby LG app that fast the next time - I'll also block some of the connection attempts of my TV to LG update servers as I'm afraid of my wife and kids updating the app :-)

@iSeanRyan
Copy link

Just got burned by the update :( Emby no longer works.

Using this in the meantime.

https://github.com/sleuth255/screenplay

@JustAMan
Copy link
Contributor

That is actually a good choice, at least on my WebOS 2.0 Emby app lags as hell while this one works smoothly (albeit it has way less shiny features... but for these I could just use Web UI and use Screenplay for 4K content which WebOS 2.0 fails to play via browser).

@anthonylavado
Copy link
Member

For anyone tracking status of this, we got clearance and a license from the person that developed PlayZ for Emby. This is the code that ScreenPlay was based on.

Now we just need ScreenPlay to provide a license as well: sleuth255/screenplay#4 (comment)

@eCxgyY5V0xdFJxoEYpxl
Copy link

Hi, @DpunktKpunkt I tried your "hack" it does not work.
You have another solution?
Jellyfin version 10.2.2
Emby Client LG version 1.0.15

@DpunktKpunkt
Copy link

DpunktKpunkt commented Apr 18, 2019

Nginx serves four static files:

/emby/system/info/public (LocalAddress and WanAddress manually edited, as jellyfin publishes it's internal address and listening ports)
/emby/web/index.html (replaced all occurances of String "Jellyfin")
/emby/web/manifest.json (string replacement)
/emby/web/strings/en-US.json (just a copy of / symlink to en-us.json, LG app asks for that file with capital letters)

All other requests are passed trough to jellyfin (listening at 127.0.0.1 and a completely different port).

@eCxgyY5V0xdFJxoEYpxl
Copy link

eCxgyY5V0xdFJxoEYpxl commented Apr 18, 2019

For information I use Jellyfin v10.2.2 docker.
I edit the files:

  • /jellyfin/jellyfin-web/src/index.html
  • /jellyfin/jellyfin-web/src/manifest.json
  • /jellyfin/jellyfin-web/src/strings/en-US.json

It does not work :(
I did not understand what to do with /emby/system/info/public

@DpunktKpunkt
Copy link

DpunktKpunkt commented Apr 18, 2019

As my jellyfin server is also available beside the nginx server, i had to serve a static version of that public file with edited IP address an port informations from:

{"LocalAddress":"http://10.1.7.3:58096","WanAddress":"http://216.90.120.111:58096","ServerName":"rack1-blade7-vm3","Version":"10.2.2","OperatingSystem":"Linux","Id":"1234567890abcdef"}

to

{"LocalAddress":"http://10.1.7.3:8096","WanAddress":"https://emby.dpunktkpunkt.de/","ServerName":"rack1-blade7-vm3","Version":"10.2.2","OperatingSystem":"Linux","Id":"1234567890abcdef"}

(Not my actual external ip / uri)

At port 8096 my nginx server listens for incoming connections, serving that four files as described, all other connections are passed through jellyfin (listening at port 58096) and acting as reverse proxy.

As long as you use your server configuration only from your local network, you can use your local address as wan address.

@DpunktKpunkt
Copy link

DpunktKpunkt commented Apr 18, 2019

... aaaand - after giving some hints another LG TV is playing movies with jellyfin again ;-)

@eCxgyY5V0xdFJxoEYpxl
Copy link

A big one thanks to @DpunktKpunkt !

@Kingo64
Copy link

Kingo64 commented Apr 24, 2019

Here's a simple shell script to edit the files. Works fine executing inside a Docker container.

#!/usr/bin/env bash
cd /jellyfin/jellyfin-web/src
sed -i 's/Jellyfin/Emby/g' index.html
sed -i 's/jellyfin/emby/g' index.html
sed -i 's/Jellyfin/Emby/g' manifest.json
sed -i 's/jellyfin/emby/g' manifest.json
cd strings
cp en-us.json en-US.json
sed -i 's/Jellyfin/Emby/g' en-US.json
sed -i 's/jellyfin/emby/g' en-US.json

@ExXxtr3me
Copy link

Sorry but I'm a total Linux noob and can't get the script to work, could someone help me with this?

I pasted the script in a emby.sh file, than I opened the jellyfin console in unraid wrote "bash emby.sh" but I'm getting the error that the directory is not found. I tried looking for the .jellyfin folder myself but I also can't find it.

@totti4ever
Copy link

on Ubuntu you have to enable your virtual host with a2ensite nameofconfig.conf, no clue on how to do that on windows, sorry
Afterwards reload as written in the console after a2ensite

Will be back on Sunday night to maybe help a bit more

@Hukuma1
Copy link

Hukuma1 commented Oct 17, 2019

Just got it loaded. Apparently yeah, by default most of the modules needed were commented out. For anyone else following along you need to enable the following in your C:\Apache24\conf\httpd.conf:

Include conf/extra/httpd-vhosts.conf
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so

This gets me to run without errors, and even creates the log files jellyfin. However they are empty and I'm not sure what to try next. Anyway to try to access the public.html file from my computer to verify my TV is trying to connect via 8097 port as well?

@totti4ever
Copy link

Open the following URL in a browser, replace the up
http://ip:8097/emby/system/info/public

@Hukuma1
Copy link

Hukuma1 commented Oct 17, 2019

Connection refused. :/

Here's what my config looks like:

C:\Apache24\bin>httpd -S
VirtualHost configuration:
*:8097 jellyfix (C:/Apache24/conf/extra/httpd-vhosts.conf:24)
ServerRoot: "C:/Apache24"
Main DocumentRoot: "C:/Apache24/htdocs"
Main ErrorLog: "C:/Apache24/logs/error.log"
Mutex rewrite-map: using_defaults
Mutex proxy: using_defaults
Mutex default: dir="C:/Apache24/logs/" mechanism=default
PidFile: "C:/Apache24/logs/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: SRVROOT=c:/Apache24

@StarvingDeveloper

This comment was marked as abuse.

@Hukuma1
Copy link

Hukuma1 commented Oct 22, 2019

Alright fixed the connection refused.

Had to open port via listen

Listen 8097

http://ip:8097/emby/system/info/public = edited
http://ip:8096/emby/system/info/public = original

So now I can connect and see both files. It does not seem to be serving the edited one. Any ideas? mod_rewrite not going properly I guess, @totti4ever?

@DpunktKpunkt
Copy link

DpunktKpunkt commented Oct 27, 2019

LG TV App 1.0.19 still works with Jellyfin and the changed files. Most annoying bug is fixed now: When starting a movie the nag screen is scrolled down, countdown now is visible again.

@Dielee
Copy link

Dielee commented Nov 27, 2019

@DpunktKpunkt

I have am nginx with Public File running. Emby App says 'you have to Update emby server'
...
Version 1.0.20 is not working anymore.. any Updates for this?

@DpunktKpunkt
Copy link

I'm still on 1.0.19 ... Maybe updating the version number from 4.2.0.40 (?) to 4.3.0.30 (latest emby server version) will do the job. You find that string in /system/info/public

@Dielee
Copy link

Dielee commented Nov 28, 2019

Got it working... But app shows ads and I have to wait a few seconds after starting the app.. "Pleas buy premium pass..."
And I have to login every time again after leaving the app. Using emby again for now.
Any updates on native jellyfin app for webos ?

@DpunktKpunkt
Copy link

Sounds not very promising. So better stay at version 1.0.19 for now

@dkanada
Copy link
Member

dkanada commented Nov 28, 2019

We are getting closer to a functional WebOS client but may be blocked from releasing a GPL 2.0 client on their store. Any information on the legality of that would be appreciated. @EraYaN was the one who originally notified me of the possible issue I think.

@dkanada
Copy link
Member

dkanada commented Nov 28, 2019

@EraYaN is the WebOS client similar to Cordova (bundles the web source in the client) or Expo (connects to a running web client) because the latter should be fine regardless.

@JustAMan
Copy link
Contributor

@dkanada current wrapper in the works (in jf-webos) is like Expo I believe, partially because of GPL and partially because updating an app at LG store is slooooooooooooooow.

@DpunktKpunkt
Copy link

DpunktKpunkt commented Jan 9, 2020

Version 1.0.20 is not working anymore.. any Updates for this?

Yesterday I updated LG app by accident - app version 1.0.20 is working flawlessly (app keeps login data) with Jellyfin 10.4.3

@Dielee - maybe something on your jellyfin server is misconfigured

@VoodooZ
Copy link

VoodooZ commented Jan 10, 2020

Really? I was under the impression you needed a proxy to rewrite specific strings to get 1.0.20 to work with jellyfin? How do you run jellyfin?!

@DpunktKpunkt
Copy link

@VoodooZ Rewriting is still needed.
According to @Dielee 's reply upgrading to 1.0.20 would break something - despite of rewriting strings.

@AlexKalopsia
Copy link

AlexKalopsia commented Feb 22, 2020

For anyone running on LinuxServer Jellyfin, the files to edit are located in /usr/lib/jellyfin/bin/jellyfin-web

Sadly, after editing them I still get the "You need to update the app" message :'( Any update on this?

@ghost
Copy link

ghost commented Feb 24, 2020

@AlexKalopsia What version of the Emby app are you using?

@AlexKalopsia
Copy link

Seems like I am on 1.0.24 :'(

@glutfloc
Copy link

glutfloc commented Apr 17, 2020

Hi all,

I read with a great interest these exchance since I am using a local debian Jellyfin server and Emby on my LG Tv as a client.
Yesterday I have upgraded my server to 10.5.4 (because it can manage better the vaapi encoding on my server) and also my client Emby to 1.0.24. As expected it stop to work...
Previously I used Jellyfin 10.4.1 and Emby 1.0.19 with Nginx as reverse proxy configured like mentioned above.
I past all my night and day to fix it (reinstall, upgrades, reconfigure...) but Emby was not able to connect to the Jellyfin server.
Finally I have decided to install Emby on a sandbox in order to sniff packets exchanged on the network.
So I found 6 url requested by the client :
http://xxx.xxx.xxx.xxx:8096/emby/system/info/public
http://xxx.xxx.xxx.xxx:8096/emby/web/manifest.json
http://xxx.xxx.xxx.xxx:8096/emby/web/index.html
http://xxx.xxx.xxx.xxx:8096/emby/web/strings/en-US.json
http://xxx.xxx.xxx.xxx:8096/emby/users/public
http://xxx.xxx.xxx.xxx:8096/emby/Branding/Configuration
The last one is not important (empty by default on Emby server)
/user/public is different (some parameters are missing in the json delivered by Jellyfin) but it seems not important.
Others are mandatory.
Here the way I got it work (my jellyfin server is listening on 8096 and my nginx on 8097 for local and 8098 for external):
--> Jellyfin modifications :
I copied strings directory from Emby to a dummy directory on Jellyfin server (in my case /var/www/html/emby/str
I replaced the manifest.json (in /usr/lib/jellyfin/bin/jellyfin-web/) by the manifest of emby
I replaced the "jellyfin" strings in index.html by "emby"
I create a public.json file in /var/www/html/emby/system/info :
{"LocalAddress":"http://<xxx.xxx.xxx.xxx>:8097","WanAddress":"https://<server.domain.com:8098>","ServerName":"YoyoFlix","Version":"4.4.2.0","Id":"577c24e30893491eb97385eac975ff65"}
I retrieved the id from http://<xxx.xxx.xxx.xxx>:8096/emby/users/public on jellyfin server (this is the ServerId parameter in the json)
--> Nginx configuration :

server {
    listen 8097;
    listen [::]:8097;
    server_name <server.domain.com>, <xxx.xxx.xxx.xxx>;
    index index.html;
    root /var/www/html/emby;
    try_files $uri $uri.html /index.html =404;
    
    location / {
        try_files $uri $uri.html /index.html =404;
	    proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
    }

    location /emby/ {
        proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
    }
        
    location /emby {
        proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
    }
	
	location /emby/system/info {
	    try_files $uri $uri/ $uri.json =404;
        alias /var/www/html/emby/system;
	}
	    location /emby/web/strings {
        alias /var/www/html/emby/str;
	}
}

server {
listen 8098 default_server ssl;
	ssl_certificate	/etc/letsencrypt/live/<server.domain.com>/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/<server.domain.com>/privkey.pem;
    server_name <server.domain.com>, <xxx.xxx.xxx.xxx>;

location / {
	proxy_pass http://<xxx.xxx.xxx.xxx>:8097/emby/;
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
	}

        location /emby/ {
        proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
    }
        
    location /emby {
        proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
    }
    
    location /emby/system/info {
        try_files $uri $uri/ $uri.json =404;
        alias /var/www/html/emby/system;
    }
        location /emby/web/strings {
        alias /var/www/html/emby/str;
    }
}

server {
listen 9999 default_server ssl;
    ssl_certificate     /etc/letsencrypt/live/<server.domain.com>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<server.domain.com>/privkey.pem;
server_name <server.domain.com>, <xxx.xxx.xxx.xxx>;

location / {
    proxy_pass http://127.0.0.1:9091/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

--> manifest.json :

{
  "name": "Emby",
  "short_name": "Emby",
  "start_url": "/web/index.html",
  "description": "Your media, your way.",
  "lang": "en-US",
  "related_applications": [
    {
      "platform": "android",
      "location": "https://play.google.com/store/apps/details?id=com.mb.android"
    },
    {
      "platform": "ios",
      "location": "https://itunes.apple.com/us/app/emby/id992180193?ls=1&mt=8"
    },
    {
      "platform": "web"
    }
  ],
  "icons": [
    {
      "src": "touchicon72.png",
      "sizes": "72x72",
      "type": "image/png"
    },
    {
      "src": "touchicon114.png",
      "sizes": "114x114",
      "type": "image/png"
    },
    {
      "src": "touchicon144.png",
      "sizes": "144x144",
      "type": "image/png"
    }
  ],
  "display": "standalone",
  "theme_color": "#52B54B"
}

and I attached a zip for the content of the /var/www/html/emby/str directory

So now everything is fine on Jellyfin 10.5.4 with Emby 1.0.24 👍

str.zip

@XanderStrike
Copy link

Should this really be closed? Is there a WebOS client available somewhere that I can't find? This issue and a few threads that link to it are on the top of google search results for jellyfin webos.

@anthonylavado
Copy link
Member

@XanderStrike This thread isn't the right place to keep track of progress, and became cluttered with unsupported workarounds.

The information you're looking for is at https://github.com/jellyfin/jellyfin-webos

🙂

@DpunktKpunkt
Copy link

DpunktKpunkt commented Jul 15, 2020

It's way easier for most people changing reverse proxy settings than setting up a WebOS development environment.
Therefore I will support these 'unsupported' workaround as long as it is possible and a much simpler solution - unless there will be an official jellyfin app for LG TVs released.

@anthonylavado
Copy link
Member

anthonylavado commented Jul 15, 2020

@DpunktKpunkt ... That's what we're trying to do. It's just not ready yet though.

One of our Web team members describes it best here: https://forum.jellyfin.org/t/jellyfin-for-lg-webos/236/16?u=anthonylavado

Edit: To be clear, I'm not saying that people need to set up a development environment, I'm just saying that the other repository is where to track progress. Certainly it'll be the first place to find out that the client is available, followed by posts on all our chats and social media channels.

@anthonylavado
Copy link
Member

anthonylavado commented Jul 15, 2020

Also - We've started to see some instances of Emby changing out their API in the wild. Embycon is the first victim of this, and we're going to have to fork it. Workarounds may not last forever 😓

@DpunktKpunkt
Copy link

@anthonylavado Maybe I misunderstood your answer to @XanderStrike where he asked about an (official) WebOS client available. Of course progress for that (not yet published) client is kept best within it's git repository.

I also know that sooner or later a newer version of emby client won't work any longer with jellyfin, but as long as there are only String comparisons preventing a sucessful connection, this simple workaround will be 'the' solution for normal customers. I don't undestand why installing a WebOS app is such a pain in the a... and distributing non-signed precompiled IPKs is impossible, thanks to LG 😠

@hwangmin88
Copy link

hwangmin88 commented Oct 18, 2021

Hi all,

I read with a great interest these exchance since I am using a local debian Jellyfin server and Emby on my LG Tv as a client.

Yesterday I have upgraded my server to 10.5.4 (because it can manage better the vaapi encoding on my server) and also my client Emby to 1.0.24. As expected it stop to work...

Previously I used Jellyfin 10.4.1 and Emby 1.0.19 with Nginx as reverse proxy configured like mentioned above.

I past all my night and day to fix it (reinstall, upgrades, reconfigure...) but Emby was not able to connect to the Jellyfin server.

Finally I have decided to install Emby on a sandbox in order to sniff packets exchanged on the network.

So I found 6 url requested by the client :

http://xxx.xxx.xxx.xxx:8096/emby/system/info/public

http://xxx.xxx.xxx.xxx:8096/emby/web/manifest.json

http://xxx.xxx.xxx.xxx:8096/emby/web/index.html

http://xxx.xxx.xxx.xxx:8096/emby/web/strings/en-US.json

http://xxx.xxx.xxx.xxx:8096/emby/users/public

http://xxx.xxx.xxx.xxx:8096/emby/Branding/Configuration

The last one is not important (empty by default on Emby server)

/user/public is different (some parameters are missing in the json delivered by Jellyfin) but it seems not important.

Others are mandatory.

Here the way I got it work (my jellyfin server is listening on 8096 and my nginx on 8097 for local and 8098 for external):

--> Jellyfin modifications :

I copied strings directory from Emby to a dummy directory on Jellyfin server (in my case /var/www/html/emby/str

I replaced the manifest.json (in /usr/lib/jellyfin/bin/jellyfin-web/) by the manifest of emby

I replaced the "jellyfin" strings in index.html by "emby"

I create a public.json file in /var/www/html/emby/system/info :

{"LocalAddress":"http://<xxx.xxx.xxx.xxx>:8097","WanAddress":"https://<server.domain.com:8098>","ServerName":"YoyoFlix","Version":"4.4.2.0","Id":"577c24e30893491eb97385eac975ff65"}

I retrieved the id from http://<xxx.xxx.xxx.xxx>:8096/emby/users/public on jellyfin server (this is the ServerId parameter in the json)

--> Nginx configuration :


server {

    listen 8097;

    listen [::]:8097;

    server_name <server.domain.com>, <xxx.xxx.xxx.xxx>;

    index index.html;

    root /var/www/html/emby;

    try_files $uri $uri.html /index.html =404;

    

    location / {

        try_files $uri $uri.html /index.html =404;

	    proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;

        proxy_pass_request_headers on;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header X-Forwarded-Host $http_host;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection $http_connection;

    }



    location /emby/ {

        proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;

        proxy_pass_request_headers on;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header X-Forwarded-Host $http_host;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection $http_connection;

    }

        

    location /emby {

        proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;

        proxy_pass_request_headers on;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header X-Forwarded-Host $http_host;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection $http_connection;

    }

	

	location /emby/system/info {

	    try_files $uri $uri/ $uri.json =404;

        alias /var/www/html/emby/system;

	}

	    location /emby/web/strings {

        alias /var/www/html/emby/str;

	}

}



server {

listen 8098 default_server ssl;

	ssl_certificate	/etc/letsencrypt/live/<server.domain.com>/fullchain.pem;

	ssl_certificate_key /etc/letsencrypt/live/<server.domain.com>/privkey.pem;

    server_name <server.domain.com>, <xxx.xxx.xxx.xxx>;



location / {

	proxy_pass http://<xxx.xxx.xxx.xxx>:8097/emby/;

        proxy_pass_request_headers on;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header X-Forwarded-Host $http_host;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection $http_connection;

	}



        location /emby/ {

        proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;

        proxy_pass_request_headers on;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header X-Forwarded-Host $http_host;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection $http_connection;

    }

        

    location /emby {

        proxy_pass http://<xxx.xxx.xxx.xxx>:8096/;

        proxy_pass_request_headers on;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header X-Forwarded-Host $http_host;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection $http_connection;

    }

    

    location /emby/system/info {

        try_files $uri $uri/ $uri.json =404;

        alias /var/www/html/emby/system;

    }

        location /emby/web/strings {

        alias /var/www/html/emby/str;

    }

}



server {

listen 9999 default_server ssl;

    ssl_certificate     /etc/letsencrypt/live/<server.domain.com>/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/<server.domain.com>/privkey.pem;

server_name <server.domain.com>, <xxx.xxx.xxx.xxx>;



location / {

    proxy_pass http://127.0.0.1:9091/;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  }

}



--> manifest.json :


{

  "name": "Emby",

  "short_name": "Emby",

  "start_url": "/web/index.html",

  "description": "Your media, your way.",

  "lang": "en-US",

  "related_applications": [

    {

      "platform": "android",

      "location": "https://play.google.com/store/apps/details?id=com.mb.android"

    },

    {

      "platform": "ios",

      "location": "https://itunes.apple.com/us/app/emby/id992180193?ls=1&mt=8"

    },

    {

      "platform": "web"

    }

  ],

  "icons": [

    {

      "src": "touchicon72.png",

      "sizes": "72x72",

      "type": "image/png"

    },

    {

      "src": "touchicon114.png",

      "sizes": "114x114",

      "type": "image/png"

    },

    {

      "src": "touchicon144.png",

      "sizes": "144x144",

      "type": "image/png"

    }

  ],

  "display": "standalone",

  "theme_color": "#52B54B"

}

and I attached a zip for the content of the /var/www/html/emby/str directory

So now everything is fine on Jellyfin 10.5.4 with Emby 1.0.24 👍

str.zip

Is it working now?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Adding a new feature, or substantial improvements on existing functionality
Projects
None yet
Development

No branches or pull requests