Coder Social home page Coder Social logo

jellyfin-mpv-shim's Introduction

Jellyfin

The Free Software Media System


Logo Banner

GPL 2.0 License Current Release Translation Status Azure Builds Docker Pull Count
Donate Submit Feature Requests Chat on Matrix Join our Subreddit Release RSS Feed Master Commits RSS Feed


Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest!

For further details, please see our documentation page. To receive the latest updates, get help with Jellyfin, and join the community, please visit one of our communication channels. For more information about the project, please see our about page.

Want to get started?
Check out our downloads page or our installation guide, then see our quick start guide. You can also build from source.

Something not working right?
Open an Issue on GitHub.

Want to contribute?
Check out our contributing choose-your-own-adventure to see where you can help, then see our contributing guide and our community standards.

New idea or improvement?
Check out our feature request hub.

Don't see Jellyfin in your language?
Check out our Weblate instance to help translate Jellyfin and its subprojects.

Detailed Translation Status

Jellyfin Server

This repository contains the code for Jellyfin's backend server. Note that this is only one of many projects under the Jellyfin GitHub organization on GitHub. If you want to contribute, you can start by checking out our documentation to see what to work on.

Server Development

These instructions will help you get set up with a local development environment in order to contribute to this repository. Before you start, please be sure to completely read our guidelines on development contributions. Note that this project is supported on all major operating systems except FreeBSD, which is still incompatible.

Prerequisites

Before the project can be built, you must first install the .NET 8.0 SDK on your system.

Instructions to run this project from the command line are included here, but you will also need to install an IDE if you want to debug the server while it is running. Any IDE that supports .NET 6 development will work, but two options are recent versions of Visual Studio (at least 2022) and Visual Studio Code.

ffmpeg will also need to be installed.

Cloning the Repository

After dependencies are installed you will need to clone a local copy of this repository. If you just want to run the server from source you can clone this repository directly, but if you are intending to contribute code changes to the project, you should set up your own fork of the repository. The following example shows how you can clone the repository directly over HTTPS.

git clone https://github.com/jellyfin/jellyfin.git

Installing the Web Client

The server is configured to host the static files required for the web client in addition to serving the backend by default. Before you can run the server, you will need to get a copy of the web client since they are not included in this repository directly.

Note that it is also possible to host the web client separately from the web server with some additional configuration, in which case you can skip this step.

There are three options to get the files for the web client.

  1. Download one of the finished builds from the Azure DevOps pipeline. You can download the build for a specific release by looking at the branches tab of the pipelines page.
  2. Build them from source following the instructions on the jellyfin-web repository
  3. Get the pre-built files from an existing installation of the server. For example, with a Windows server installation the client files are located at C:\Program Files\Jellyfin\Server\jellyfin-web

Running The Server

The following instructions will help you get the project up and running via the command line, or your preferred IDE.

Running With Visual Studio

To run the project with Visual Studio you can open the Solution (.sln) file and then press F5 to run the server.

Running With Visual Studio Code

To run the project with Visual Studio Code you will first need to open the repository directory with Visual Studio Code using the Open Folder... option.

Second, you need to install the recommended extensions for the workspace. Note that extension recommendations are classified as either "Workspace Recommendations" or "Other Recommendations", but only the "Workspace Recommendations" are required.

After the required extensions are installed, you can run the server by pressing F5.

Running From The Command Line

To run the server from the command line you can use the dotnet run command. The example below shows how to do this if you have cloned the repository into a directory named jellyfin (the default directory name) and should work on all operating systems.

cd jellyfin                          # Move into the repository directory
dotnet run --project Jellyfin.Server --webdir /absolute/path/to/jellyfin-web/dist # Run the server startup project

A second option is to build the project and then run the resulting executable file directly. When running the executable directly you can easily add command line options. Add the --help flag to list details on all the supported command line options.

  1. Build the project
dotnet build                       # Build the project
cd Jellyfin.Server/bin/Debug/net8.0 # Change into the build output directory
  1. Execute the build output. On Linux, Mac, etc. use ./jellyfin and on Windows use jellyfin.exe.

Accessing the Hosted Web Client

If the Server is configured to host the Web Client, and the Server is running, the Web Client can be accessed at http://localhost:8096 by default.

API documentation can be viewed at http://localhost:8096/api-docs/swagger/index.html

Running from GH-Codespaces

As Jellyfin will run on a container on a github hosted server, JF needs to handle some things differently.

NOTE: Depending on the selected configuration (if you just click 'create codespace' it will create a default configuration one) it might take 20-30 secounds to load all extensions and prepare the enviorment while vscode is already open. Just give it some time and wait until you see Downloading .NET version(s) 7.0.15~x64 ...... Done! in the output tab.

NOTE: If you want to access the JF instance from outside, like with a WebClient on another PC, remember to set the "ports" in the lower VsCode window to public.

NOTE: When first opening the server instance with any WebUI, you will be send to the login instead of the setup page. Refresh the login page once and you should be redirected to the Setup.

There are two configurations for you to chose from.

Default - Development Jellyfin Server

This creates a container that has everything to run and debug the Jellyfin Media server but does not setup anything else. Each time you create a new container you have to run though the whole setup again. There is also no ffmpeg, webclient or media preloaded. Use the .NET Launch (nowebclient) lunch config to start the server.

Keep in mind that as this has no web client you have to connect to it via an extenal client. This can be just another codespace container running the WebUI. vuejs does not work from the getgo as it does not support the setup steps.

Development Jellyfin Server ffmpeg

this extens the default server with an default installation of ffmpeg6 though the means described here: https://jellyfin.org/docs/general/installation/linux#repository-manual If you want to install a specific ffmpeg version, follow the comments embedded in the .devcontainer/Dev - Server Ffmpeg/install.ffmpeg.sh file.

Use the ghcs .NET Launch (nowebclient, ffmpeg) launch config to run with the jellyfin-ffmpeg enabled.

Running The Tests

This repository also includes unit tests that are used to validate functionality as part of a CI pipeline on Azure. There are several ways to run these tests.

  1. Run tests from the command line using dotnet test
  2. Run tests in Visual Studio using the Test Explorer
  3. Run individual tests in Visual Studio Code using the associated CodeLens annotation

Advanced Configuration

The following sections describe some more advanced scenarios for running the server from source that build upon the standard instructions above.

Hosting The Web Client Separately

It is not necessary to host the frontend web client as part of the backend server. Hosting these two components separately may be useful for frontend developers who would prefer to host the client in a separate webpack development server for a tighter development loop. See the jellyfin-web repo for instructions on how to do this.

To instruct the server not to host the web content, there is a nowebclient configuration flag that must be set. This can specified using the command line switch --nowebclient or the environment variable JELLYFIN_NOWEBCONTENT=true.

Since this is a common scenario, there is also a separate launch profile defined for Visual Studio called Jellyfin.Server (nowebcontent) that can be selected from the 'Start Debugging' dropdown in the main toolbar.

NOTE: The setup wizard can not be run if the web client is hosted separately.


This project is supported by:

DigitalOcean   JetBrains logo

jellyfin-mpv-shim's People

Contributors

4d1m avatar agi0m avatar alanazar avatar arbitrate3280 avatar blackspirits avatar castillofrancodamian avatar danielxb-ar avatar dependabot[bot] avatar djcand avatar hoanghuy309 avatar iwalton3 avatar kucharczykl avatar lyaschuchenko avatar mijofa avatar nextlooper42 avatar oatavandi avatar olavinto avatar predrag83yu avatar queeup avatar rhld16 avatar rimasx avatar rushmash avatar saddfox avatar sebastianknappe avatar stonepoet avatar tim040 avatar tschwery avatar vasiauvi avatar weevild avatar wwwesten avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jellyfin-mpv-shim's Issues

Freeze when Resizing window

1.5.4 + Windows 10
Sometimes when I resize the window the program freezes and no responding, I have to terminate it. Resizing slightly is generally OK, but if drag large and small too much it occurs.

Using IINA with shim (Unresolved)

Is your feature request related to a problem? Please describe.
I'm trying to get IINA to work with shim but I can't seem to get it to work.

Describe the solution you'd like
A way to configure shim to use IINA instead of the default mpv client

Additional context
IINA is an mpv-based video player written in Swift.
IINA does have an mpv.conf file that can be used

macOS shim window stays white in desktop mod

Describe the bug
When launching jellyfin-mpv-shim in desktop mod, a window appears but stays white.
It's working fine with only the gui mod on.
Thanks for the help.

Expected behavior
Jellyfin server should appear

Desktop (please complete the following information):

  • OS: macOS Catalina 10.15.3

Error Messages
2020-04-03 13:47:21,571 [ INFO] conf: Loaded settings from json: /Users/anthonyloret/Library/Application Support/jellyfin-mpv-shim/conf.json
2020-04-03 13:47:21,775 [ INFO] player: Using external mpv playback backend.
2020-04-03 13:47:21,776 [ DEBUG] mpv-jsonipc: Staring MPV from mpv.
2020-04-03 13:47:21,776 [ DEBUG] mpv-jsonipc: Using IPC socket /tmp/mpv233673284198765 for MPV.
2020-04-03 13:47:22,295 [ DEBUG] mpv-jsonipc: Found MPV socket.
2020-04-03 13:47:22,319 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.client: JellyfinClient initializing...
2020-04-03 13:47:22,319 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.configuration: Configuration initializing...
2020-04-03 13:47:22,319 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.configuration: Begin http constructor.
2020-04-03 13:47:22,319 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.ws_client: WSClient initializing...
2020-04-03 13:47:22,320 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.connection_manager: ConnectionManager initializing...
2020-04-03 13:47:22,320 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.credentials: Credentials initializing...
2020-04-03 13:47:22,320 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.configuration: Begin app constructor.
2020-04-03 13:47:22,320 [ INFO] JELLYFIN.jellyfin_apiclient_python.connection_manager: Begin connect
2020-04-03 13:47:22,321 [ INFO] JELLYFIN.jellyfin_apiclient_python.connection_manager: Begin getAvailableServers
2020-04-03 13:47:22,321 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.connection_manager: MultiGroup : ('', 7359)
2020-04-03 13:47:22,321 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.connection_manager: Sending UDP Data: b'who is JellyfinServer?'
2020-04-03 13:47:23,332 [ INFO] JELLYFIN.jellyfin_apiclient_python.connection_manager: Found Servers: [{'Address': 'http://192.168.1.22:8096', 'Id': 'f88f7b7634764d0ca5142b24d2547638', 'Name': 'JellyPi', 'EndpointAddress': None}]
2020-04-03 13:47:23,336 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.credentials: credentialsupdated
2020-04-03 13:47:23,336 [ INFO] JELLYFIN.jellyfin_apiclient_python.connection_manager: connect has 1 servers
2020-04-03 13:47:23,337 [ INFO] JELLYFIN.jellyfin_apiclient_python.connection_manager: begin connectToServer
2020-04-03 13:47:23,337 [ INFO] JELLYFIN.jellyfin_apiclient_python.api: Sending get request to system/info/public
2020-04-03 13:47:23,337 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.api: 5
2020-04-03 13:47:23,337 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.api: {'Accept': 'application/json', 'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'X-Application': 'Jellyfin MPV Shim/1.5.4', 'Accept-Charset': 'UTF-8,', 'Accept-encoding': 'gzip', 'User-Agent': 'Jellyfin-MPV-Shim/1.5.4', 'x-emby-authorization': 'MediaBrowser Client=Jellyfin MPV Shim, Device=MacBook-Pro-de-Anthony.home, DeviceId=17eaddf9-14d8-42a4-9b9e-ea98a0a48ed1, Version=1.5.4'}
2020-04-03 13:47:23,343 [ DEBUG] urllib3.connectionpool: Starting new HTTP connection (1): 192.168.1.22:8096
2020-04-03 13:47:23,357 [ DEBUG] urllib3.connectionpool: http://192.168.1.22:8096 "GET /system/info/public HTTP/1.1" 200 None
2020-04-03 13:47:23,358 [ INFO] JELLYFIN.jellyfin_apiclient_python.connection_manager: calling onSuccessfulConnection with server JellyPi
2020-04-03 13:47:23,358 [ INFO] JELLYFIN.jellyfin_apiclient_python.api: Sending get request to system/info
2020-04-03 13:47:23,359 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.api: 5
2020-04-03 13:47:23,359 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.api: {'Accept': 'application/json', 'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'X-Application': 'Jellyfin MPV Shim/1.5.4', 'Accept-Charset': 'UTF-8,
', 'Accept-encoding': 'gzip', 'User-Agent': 'Jellyfin-MPV-Shim/1.5.4', 'x-emby-authorization': 'MediaBrowser Client=Jellyfin MPV Shim, Device=MacBook-Pro-de-Anthony.home, DeviceId=17eaddf9-14d8-42a4-9b9e-ea98a0a48ed1, Version=1.5.4', 'X-MediaBrowser-Token': '16b1fbb4cbd149a7954a347d4ff82f7d'}
2020-04-03 13:47:23,361 [ DEBUG] urllib3.connectionpool: Starting new HTTP connection (1): 192.168.1.22:8096
2020-04-03 13:47:23,377 [ DEBUG] urllib3.connectionpool: http://192.168.1.22:8096 "GET /system/info HTTP/1.1" 200 None
2020-04-03 13:47:23,378 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.credentials: credentialsupdated
2020-04-03 13:47:23,378 [ DEBUG] JELLYFIN.jellyfin_apiclient_python.connection_manager: resolving connect with result: {'Servers': [{'address': 'http://192.168.1.22:8096', 'Name': 'JellyPi', 'Id': 'f88f7b7634764d0ca5142b24d2547638', 'DateLastAccessed': '2020-04-03T13:47:23Z', 'UserId': '7cd4f635d2184053b1e849e026fc3937', 'AccessToken': '16b1fbb4cbd149a7954a347d4ff82f7d', 'Users': [{'Id': '7cd4f635d2184053b1e849e026fc3937', 'IsSignedInOffline': True}], 'connected': True, 'uuid': 'e258ec7e-2bba-45f5-9a2e-23e0ce5f119a', 'username': 'anto'}], 'State': 3}
2020-04-03 13:47:23,378 [ INFO] JELLYFIN.jellyfin_apiclient_python.client: User is authenticated.
2020-04-03 13:47:23,378 [ DEBUG] urllib3.util.retry: Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)
2020-04-03 13:47:23,378 [ DEBUG] urllib3.util.retry: Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)
2020-04-03 13:47:23,378 [ INFO] JELLYFIN.jellyfin_apiclient_python.ws_client: Websocket url: ws://192.168.1.22:8096/socket?api_key=16b1fbb4cbd149a7954a347d4ff82f7d&device_id=17eaddf9-14d8-42a4-9b9e-ea98a0a48ed1
2020-04-03 13:47:23,381 [ DEBUG] urllib3.connectionpool: Starting new HTTP connection (1): 192.168.1.22:8096
2020-04-03 13:47:23,393 [ INFO] JELLYFIN.jellyfin_apiclient_python.ws_client: --->[ websocket ]
2020-04-03 13:47:23,393 [ DEBUG] event_handler: Unhandled Event WebSocketConnect: None
2020-04-03 13:47:23,397 [ DEBUG] urllib3.connectionpool: http://192.168.1.22:8096 "POST /Sessions/Capabilities/Full HTTP/1.1" 204 0
2020-04-03 13:47:23,819 [ INFO] werkzeug: 127.0.0.1 - - [03/Apr/2020 13:47:23] "GET /index.html HTTP/1.1" 200 -
2020-04-03 13:47:24,160 [ INFO] werkzeug: 127.0.0.1 - - [03/Apr/2020 13:47:24] "GET /index.html HTTP/1.1" 200 -
2020-04-03 13:47:24,728 [ INFO] werkzeug: 127.0.0.1 - - [03/Apr/2020 13:47:24] "GET /strings/fr-ca.json?v=1585914444712 HTTP/1.1" 200 -
2020-04-03 13:47:24,729 [ INFO] werkzeug: 127.0.0.1 - - [03/Apr/2020 13:47:24] "GET /strings/en-us.json?v=1585914444712 HTTP/1.1" 200 -
2020-04-03 13:47:26,018 [ INFO] werkzeug: 127.0.0.1 - - [03/Apr/2020 13:47:26] "GET /serviceworker.js HTTP/1.1" 304 -
2020-04-03 13:47:42,179 [ DEBUG] event_handler: Unhandled Event LibraryChanged: {'FoldersAddedTo': [], 'FoldersRemovedFrom': [], 'ItemsAdded': [], 'ItemsRemoved': [], 'ItemsUpdated': ['1edc4a7af308078381a44b0b243552be'], 'CollectionFolders': [], 'IsEmpty': False, 'ServerId': 'f88f7b7634764d0ca5142b24d2547638'}

OSD menu ignoring and resetting font-size options in mpv.conf

Describe the bug
Opening the menu (shortcut "c") will reset osd-font-size (and possibly other options) set in mpv.conf until a restart of jellyfin-mpv-shim.

To Reproduce
Steps to reproduce the behavior:

  1. Set "osd-font-size" in mpv.conf (e.g =25)
  2. Cast a video to jellyfin-mpv-shim and open the menu

Expected behavior
The menu should use osd-font-size from mpv.conf

Desktop (please complete the following information):

  • OS: Linux

Poor buffering behavior when not transcoding files on cloud storage

Describe the bug
This seems like the opposite of expected behavior with regard to the increased resource demands of transcoding, but I experience horrible buffering only when direct-playing files stored on my Google Drive with jellyfin-mpv-shim.
This does not occur with files stored locally on my home server.
This does not occur when transcoding files, regardless of where they are stored.
This does not occur when using other clients, including the Jellyfin web client and the Jellyfin Android app.

To Reproduce
Steps to reproduce the behavior:

  1. Play any file stored on a Google Drive rclone mount.
  2. Observe buffer.

The file will open and buffer 1-10 seconds of playback. The buffer will slowly decrease in size over the next 10-20 seconds until it reaches 0 and playback stutters indefinitely.

Expected behavior

The file should open and buffer ~30 seconds of playback, then continue to fill up the buffer to several minutes of playback. The buffer should remain full or nearly full for the duration of playback.

Desktop (please complete the following information):

  • OS: Manjaro Linux
  • Version 1.3.10

Error Messages

1080p HI-10p file, 1 minute of playback

No transcoding. Buffer reached 0 seconds 5 times, buffer was empty at 1 minute point.
shim1.txt
Transcoding, video quality set to "Maximum". Buffer never reached 0 seconds, buffer had 2:01 cached at 1 minute point.
shim2.txt

1080p yuv420 (e.g. not HI-10p) file, 30 seconds of playback

No transcoding. Buffer reached 0 seconds too many times to count, buffer was empty at 30 second point.
shim3.txt
Transcoding, video quality set to "Maximum". Buffer never reached 0 seconds, buffer had 1:20 cached at 30 second point.
shim4.txt

I don't have any x265 files to test.

Connection refused error when starting a stream

Describe the bug
When I attempt to start a stream a connection refused error appears in console.

To Reproduce
Steps to reproduce the behavior:

  1. Start the CLI
  2. Connect with device to cast
  3. Begin to cast

Expected behavior
It should cast the movie without issues

Desktop (please complete the following information):

  • OS: macOS Catalina 10.15.3

Error Messages
2020-03-29 11:36:11,959 [ ERROR] websocket: error from callback <function WSClient.run.<locals>.<lambda> at 0x103507550>: <urlopen error [Errno 61] Connection refused> File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/site-packages/websocket/_app.py", line 346, in _callback callback(self, *args) File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/site-packages/jellyfin_apiclient_python/ws_client.py", line 49, in <lambda> on_message=lambda ws, message: self.on_message(ws, message), File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/site-packages/jellyfin_apiclient_python/ws_client.py", line 84, in on_message self.client.callback(message['MessageType'], data) File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/site-packages/jellyfin_mpv_shim/clients.py", line 135, in event self.callback(client, event_name, data) File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/site-packages/jellyfin_mpv_shim/event_handler.py", line 35, in handle_event bindings[event_name](self, client, event_name, arguments) File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/site-packages/jellyfin_mpv_shim/event_handler.py", line 46, in play_media media = Media(client, arguments.get("ItemIds"), seq=0, user_id=arguments.get("ControllingUserId"), File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/site-packages/jellyfin_mpv_shim/media.py", line 247, in __init__ self.is_local = is_local_domain(client) File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/site-packages/jellyfin_mpv_shim/utils.py", line 59, in is_local_domain wan_ip = (urllib.request.urlopen("https://checkip.amazonaws.com/") File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 222, in urlopen return opener.open(url, data, timeout) File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 1362, in https_open return self.do_open(http.client.HTTPSConnection, req, File "/Users/ezzah/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 1322, in do_open raise URLError(err)

publish jellyfin-mpv-desktop on flathub

Hello, I think it would be nice to distribute the app as a Flatpak. It would be very easy to install to anyone using any Linux distro (+ there is no usual issue with GTK or Qt themes since we don't see it at all).

I've never done that before but I managed to write a manifest that works. Here it is : com.github.iwalton3.jellyfin-mpv-desktop.txt
(It's a json but github only accept txt extensions.)
Lines 0 to 181 have been widely copied from the Celuloid manifest (which is a gui for MPV) and I'm not sure every modules are required. Then I'm pretty confident lines 182 to the end are clean, they have been generated with Flatpak PIP Generator from the pip jellyfin-mpv-shim[desktop] package.

You can try it with :

flatpak install flathub org.gnome.Sdk//3.36
flatpak install flathub org.gnome.Platform//3.36
mv com.github.iwalton3.jellyfin-mpv-desktop.txt com.github.iwalton3.jellyfin-mpv-desktop.json
mkdir build
flatpak-builder build com.github.iwalton3.jellyfin-mpv-desktop.json --force-clean
flatpak-builder --run build com.github.iwalton3.jellyfin-mpv-desktop.json jellyfin-mpv-desktop

I guess the last things to do would be to create a desktop launcher and submit it to Flathub but if you agree I think this role is devolved to the author @iwalton3 more than I.

There might also be little adjustements, e.g. I have not worked on systray features.

not able to add server on localhost

Describe the bug
not able to add server on localhost

To Reproduce

  1. open configuration
  2. fill server address: localhost , username and password(which is not set)
    3.click add server

Expected behavior
server connected

Screenshots
image.png

Desktop (please complete the following information):

  • OS: windows 10 1903
  • Version jellyfin-mpv-shim_1.3.10
    (1.3.6 also have the same problem)
    Error Messages
    `
    2020-02-20 22:38:15,455 [ DEBUG] Staring MPV from C:\Users\username\Desktop\mpv\mpv.exe.
    2020-02-20 22:38:15,455 [ DEBUG] Using IPC socket \.\pipe\mpv27142914111467 for MPV.
    2020-02-20 22:38:15,602 [ WARNING] MPV start failed.
    Traceback (most recent call last):
    File "site-packages\python_mpv_jsonipc.py", line 286, in init
    File "site-packages\python_mpv_jsonipc.py", line 166, in init
    python_mpv_jsonipc.MPVError: MPV not started.
    2020-02-20 22:38:15,603 [ DEBUG] Staring MPV from C:\Users\username\Desktop\mpv\mpv.exe.
    2020-02-20 22:38:15,603 [ DEBUG] Using IPC socket \.\pipe\mpv27142914111467 for MPV.
    2020-02-20 22:38:29,368 [ DEBUG] JellyfinClient initializing...
    2020-02-20 22:38:29,368 [ DEBUG] Configuration initializing...
    2020-02-20 22:38:29,368 [ DEBUG] Begin http constructor.
    2020-02-20 22:38:29,368 [ DEBUG] WSClient initializing...
    2020-02-20 22:38:29,368 [ DEBUG] ConnectionManager initializing...
    2020-02-20 22:38:29,369 [ DEBUG] Credentials initializing...
    2020-02-20 22:38:29,369 [ DEBUG] Begin app constructor.
    2020-02-20 22:38:29,369 [ INFO] tryConnect url: http://localhost:8096/system/info/public
    2020-02-20 22:38:29,372 [ DEBUG] Starting new HTTP connection (1): localhost:8096
    2020-02-20 22:38:29,384 [ DEBUG] http://localhost:8096 "GET /system/info/public HTTP/1.1" 200 None
    2020-02-20 22:38:29,384 [ INFO] connectToAddress http://localhost:8096 succeeded
    2020-02-20 22:38:29,385 [ INFO] begin connectToServer
    2020-02-20 22:38:29,385 [ INFO] tryConnect url: http://localhost:8096/system/info/public
    2020-02-20 22:38:29,386 [ DEBUG] Starting new HTTP connection (1): localhost:8096
    2020-02-20 22:38:29,389 [ DEBUG] http://localhost:8096 "GET /system/info/public HTTP/1.1" 200 None
    2020-02-20 22:38:29,391 [ INFO] calling onSuccessfulConnection with server DESKTOP-ZXH
    2020-02-20 22:38:29,391 [ INFO] None
    2020-02-20 22:38:29,391 [ WARNING] invalid credentials format
    2020-02-20 22:38:29,391 [ DEBUG] credentials initialized with: {}
    2020-02-20 22:38:29,391 [ DEBUG] credentialsupdated
    2020-02-20 22:38:29,391 [ ERROR] No connection adapters were found for 'localhost:8096/Users/AuthenticateByName'
    Traceback (most recent call last):
    File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
    File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
    File "site-packages\jellyfin_apiclient_python\http.py", line 248, in _requests
    File "site-packages\requests\api.py", line 116, in post
    File "site-packages\requests\api.py", line 60, in request
    File "site-packages\requests\sessions.py", line 533, in request
    File "site-packages\requests\sessions.py", line 640, in send
    File "site-packages\requests\sessions.py", line 731, in get_adapter
    requests.exceptions.InvalidSchema: No connection adapters were found for 'localhost:8096/Users/AuthenticateByName'
    2020-02-20 22:38:29,392 [ ERROR] No connection adapters were found for 'localhost:8096/Users/AuthenticateByName'
    Traceback (most recent call last):
    File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 111, in login
    File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
    File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
    File "site-packages\jellyfin_apiclient_python\http.py", line 248, in _requests
    File "site-packages\requests\api.py", line 116, in post
    File "site-packages\requests\api.py", line 60, in request
    File "site-packages\requests\sessions.py", line 533, in request
    File "site-packages\requests\sessions.py", line 640, in send
    File "site-packages\requests\sessions.py", line 731, in get_adapter
    requests.exceptions.InvalidSchema: No connection adapters were found for 'localhost:8096/Users/AuthenticateByName'
    2020-02-20 22:38:29,392 [ INFO] Begin connect
    2020-02-20 22:38:29,392 [ INFO] Begin getAvailableServers
    2020-02-20 22:38:29,393 [ DEBUG] MultiGroup : ('', 7359)
    2020-02-20 22:38:29,393 [ DEBUG] Sending UDP Data: b'who is JellyfinServer?'
    2020-02-20 22:38:30,403 [ INFO] Found Servers: [{'Address': 'http://192.168.1.6:8096', 'Id': '9246', 'Name': 'DESKTOP'}]
    2020-02-20 22:38:30,406 [ DEBUG] credentialsupdated
    2020-02-20 22:38:30,406 [ INFO] Begin connectToServers, with 1 servers
    2020-02-20 22:38:30,406 [ INFO] begin connectToServer
    2020-02-20 22:38:30,406 [ INFO] tryConnect url: http://localhost:8096/system/info/public
    2020-02-20 22:38:30,408 [ DEBUG] Starting new HTTP connection (1): localhost:8096
    2020-02-20 22:38:30,411 [ DEBUG] http://localhost:8096 "GET /system/info/public HTTP/1.1" 200 None
    2020-02-20 22:38:30,411 [ INFO] calling onSuccessfulConnection with server DESKTOP
    2020-02-20 22:38:30,412 [ DEBUG] credentialsupdated
    2020-02-20 22:38:30,412 [ DEBUG] resolving connectToServers with result['State']: {'Servers': [{'address': 'http://localhost:8096', 'Name': 'DESKTOP', 'Id': '92
    46', 'DateLastAccessed': '2020-02-20T22:38:30Z'}], 'State': 2}
    2020-02-20 23:10:37,874 [ DEBUG] JellyfinClient initializing...
    2020-02-20 23:10:37,874 [ DEBUG] Configuration initializing...
    2020-02-20 23:10:37,874 [ DEBUG] Begin http constructor.
    2020-02-20 23:10:37,874 [ DEBUG] WSClient initializing...
    2020-02-20 23:10:37,874 [ DEBUG] ConnectionManager initializing...
    2020-02-20 23:10:37,874 [ DEBUG] Credentials initializing...
    2020-02-20 23:10:37,874 [ DEBUG] Begin app constructor.
    2020-02-20 23:10:37,875 [ INFO] tryConnect url: http://192.168.1.6/system/info/public
    2020-02-20 23:10:37,877 [ DEBUG] Starting new HTTP connection (1): 192.168.1.6:80
    2020-02-20 23:10:39,881 [ ERROR] HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DCC8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))
    2020-02-20 23:10:39,881 [ ERROR] 'auth.server-id'
    Traceback (most recent call last):
    File "site-packages\urllib3\connection.py", line 160, in _new_conn
    File "site-packages\urllib3\util\connection.py", line 80, in create_connection
    File "site-packages\urllib3\util\connection.py", line 70, in create_connection
    ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\urllib3\connectionpool.py", line 603, in urlopen
File "site-packages\urllib3\connectionpool.py", line 355, in _make_request
File "http\client.py", line 1244, in request
File "http\client.py", line 1290, in _send_request
File "http\client.py", line 1239, in endheaders
File "http\client.py", line 1026, in _send_output
File "http\client.py", line 966, in send
File "site-packages\urllib3\connection.py", line 183, in connect
File "site-packages\urllib3\connection.py", line 169, in _new_conn
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001847AE3DCC8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\requests\adapters.py", line 449, in send
File "site-packages\urllib3\connectionpool.py", line 641, in urlopen
File "site-packages\urllib3\util\retry.py", line 399, in increment
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DCC8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 246, in _requests
File "site-packages\requests\api.py", line 75, in get
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 533, in request
File "site-packages\requests\sessions.py", line 646, in send
File "site-packages\requests\adapters.py", line 516, in send
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DCC8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 117, in request
KeyError: 'auth.server-id'
2020-02-20 23:10:39,882 [ ERROR] 'auth.server-id'
Traceback (most recent call last):
File "site-packages\urllib3\connection.py", line 160, in _new_conn
File "site-packages\urllib3\util\connection.py", line 80, in create_connection
File "site-packages\urllib3\util\connection.py", line 70, in create_connection
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\urllib3\connectionpool.py", line 603, in urlopen
File "site-packages\urllib3\connectionpool.py", line 355, in _make_request
File "http\client.py", line 1244, in request
File "http\client.py", line 1290, in _send_request
File "http\client.py", line 1239, in endheaders
File "http\client.py", line 1026, in _send_output
File "http\client.py", line 966, in send
File "site-packages\urllib3\connection.py", line 183, in connect
File "site-packages\urllib3\connection.py", line 169, in _new_conn
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001847AE3DCC8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\requests\adapters.py", line 449, in send
File "site-packages\urllib3\connectionpool.py", line 641, in urlopen
File "site-packages\urllib3\util\retry.py", line 399, in increment
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DCC8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 246, in _requests
File "site-packages\requests\api.py", line 75, in get
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 533, in request
File "site-packages\requests\sessions.py", line 646, in send
File "site-packages\requests\adapters.py", line 516, in send
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DCC8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 128, in connect_to_address
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 256, in _try_connect
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 117, in request
KeyError: 'auth.server-id'
2020-02-20 23:10:39,883 [ ERROR] connectToAddress http://192.168.1.6 failed
2020-02-20 23:10:39,884 [ ERROR] Request missing Schema. Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?
2020-02-20 23:10:39,884 [ ERROR] ('MissingSchema', {'Id': 'None'})
Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 248, in _requests
File "site-packages\requests\api.py", line 116, in post
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 519, in request
File "site-packages\requests\sessions.py", line 462, in prepare_request
File "site-packages\requests\models.py", line 313, in prepare
File "site-packages\requests\models.py", line 387, in prepare_url
requests.exceptions.MissingSchema: Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 165, in request
jellyfin_apiclient_python.exceptions.HTTPException: ('MissingSchema', {'Id': 'None'})
2020-02-20 23:10:39,885 [ ERROR] ('MissingSchema', {'Id': 'None'})
Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 248, in _requests
File "site-packages\requests\api.py", line 116, in post
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 519, in request
File "site-packages\requests\sessions.py", line 462, in prepare_request
File "site-packages\requests\models.py", line 313, in prepare
File "site-packages\requests\models.py", line 387, in prepare_url
requests.exceptions.MissingSchema: Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 111, in login
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 165, in request
jellyfin_apiclient_python.exceptions.HTTPException: ('MissingSchema', {'Id': 'None'})
2020-02-20 23:10:39,885 [ INFO] Begin connect
2020-02-20 23:10:39,885 [ INFO] Begin getAvailableServers
2020-02-20 23:10:39,885 [ INFO] None
2020-02-20 23:10:39,885 [ WARNING] invalid credentials format
2020-02-20 23:10:39,885 [ DEBUG] credentials initialized with: {}
2020-02-20 23:10:39,886 [ DEBUG] MultiGroup : ('', 7359)
2020-02-20 23:10:39,886 [ DEBUG] Sending UDP Data: b'who is JellyfinServer?'
2020-02-20 23:10:40,896 [ INFO] Found Servers: [{'Address': 'http://10.198.75.60:8096', 'Id': '92********************46', 'Name': 'DESKTOP'}]
2020-02-20 23:10:40,896 [ DEBUG] credentialsupdated
2020-02-20 23:10:40,896 [ INFO] Begin connectToServers, with 1 servers
2020-02-20 23:10:40,896 [ INFO] begin connectToServer
2020-02-20 23:10:40,896 [ INFO] tryConnect url: http://10.198.75.60:8096/system/info/public
2020-02-20 23:10:40,898 [ DEBUG] Starting new HTTP connection (1): 10.198.75.60:8096
2020-02-20 23:10:40,904 [ DEBUG] http://10.198.75.60:8096 "GET /system/info/public HTTP/1.1" 200 None
2020-02-20 23:10:40,905 [ INFO] calling onSuccessfulConnection with server DESKTOP
2020-02-20 23:10:40,905 [ DEBUG] credentialsupdated
2020-02-20 23:10:40,905 [ DEBUG] resolving connectToServers with result['State']: {'Servers': [{'Id': '92fdae94d176493a850dc71aa0e50d46', 'address': 'http://10.198.75.60:8096', 'Name': 'DESKTOP-ZXH', 'DateLastAccessed': '2020-02-20T23:10:40Z'}], 'State': 2}
2020-02-20 23:12:10,336 [ DEBUG] JellyfinClient initializing...
2020-02-20 23:12:10,336 [ DEBUG] Configuration initializing...
2020-02-20 23:12:10,336 [ DEBUG] Begin http constructor.
2020-02-20 23:12:10,337 [ DEBUG] WSClient initializing...
2020-02-20 23:12:10,337 [ DEBUG] ConnectionManager initializing...
2020-02-20 23:12:10,337 [ DEBUG] Credentials initializing...
2020-02-20 23:12:10,337 [ DEBUG] Begin app constructor.
2020-02-20 23:12:10,337 [ INFO] tryConnect url: http://192.168.1.6/system/info/public
2020-02-20 23:12:10,339 [ DEBUG] Starting new HTTP connection (1): 192.168.1.6:80
2020-02-20 23:12:12,353 [ ERROR] HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DB48>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))
2020-02-20 23:12:12,353 [ ERROR] 'auth.server-id'
Traceback (most recent call last):
File "site-packages\urllib3\connection.py", line 160, in _new_conn
File "site-packages\urllib3\util\connection.py", line 80, in create_connection
File "site-packages\urllib3\util\connection.py", line 70, in create_connection
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\urllib3\connectionpool.py", line 603, in urlopen
File "site-packages\urllib3\connectionpool.py", line 355, in _make_request
File "http\client.py", line 1244, in request
File "http\client.py", line 1290, in _send_request
File "http\client.py", line 1239, in endheaders
File "http\client.py", line 1026, in _send_output
File "http\client.py", line 966, in send
File "site-packages\urllib3\connection.py", line 183, in connect
File "site-packages\urllib3\connection.py", line 169, in _new_conn
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001847AE3DB48>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\requests\adapters.py", line 449, in send
File "site-packages\urllib3\connectionpool.py", line 641, in urlopen
File "site-packages\urllib3\util\retry.py", line 399, in increment
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DB48>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 246, in _requests
File "site-packages\requests\api.py", line 75, in get
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 533, in request
File "site-packages\requests\sessions.py", line 646, in send
File "site-packages\requests\adapters.py", line 516, in send
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DB48>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 117, in request
KeyError: 'auth.server-id'
2020-02-20 23:12:12,354 [ ERROR] 'auth.server-id'
Traceback (most recent call last):
File "site-packages\urllib3\connection.py", line 160, in _new_conn
File "site-packages\urllib3\util\connection.py", line 80, in create_connection
File "site-packages\urllib3\util\connection.py", line 70, in create_connection
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\urllib3\connectionpool.py", line 603, in urlopen
File "site-packages\urllib3\connectionpool.py", line 355, in _make_request
File "http\client.py", line 1244, in request
File "http\client.py", line 1290, in _send_request
File "http\client.py", line 1239, in endheaders
File "http\client.py", line 1026, in _send_output
File "http\client.py", line 966, in send
File "site-packages\urllib3\connection.py", line 183, in connect
File "site-packages\urllib3\connection.py", line 169, in _new_conn
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001847AE3DB48>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\requests\adapters.py", line 449, in send
File "site-packages\urllib3\connectionpool.py", line 641, in urlopen
File "site-packages\urllib3\util\retry.py", line 399, in increment
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DB48>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 246, in _requests
File "site-packages\requests\api.py", line 75, in get
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 533, in request
File "site-packages\requests\sessions.py", line 646, in send
File "site-packages\requests\adapters.py", line 516, in send
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE3DB48>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 128, in connect_to_address
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 256, in _try_connect
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 117, in request
KeyError: 'auth.server-id'
2020-02-20 23:12:12,355 [ ERROR] connectToAddress http://192.168.1.6 failed
2020-02-20 23:12:12,356 [ ERROR] Request missing Schema. Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?
2020-02-20 23:12:12,356 [ ERROR] ('MissingSchema', {'Id': 'None'})
Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 248, in _requests
File "site-packages\requests\api.py", line 116, in post
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 519, in request
File "site-packages\requests\sessions.py", line 462, in prepare_request
File "site-packages\requests\models.py", line 313, in prepare
File "site-packages\requests\models.py", line 387, in prepare_url
requests.exceptions.MissingSchema: Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 165, in request
jellyfin_apiclient_python.exceptions.HTTPException: ('MissingSchema', {'Id': 'None'})
2020-02-20 23:12:12,356 [ ERROR] ('MissingSchema', {'Id': 'None'})
Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 248, in _requests
File "site-packages\requests\api.py", line 116, in post
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 519, in request
File "site-packages\requests\sessions.py", line 462, in prepare_request
File "site-packages\requests\models.py", line 313, in prepare
File "site-packages\requests\models.py", line 387, in prepare_url
requests.exceptions.MissingSchema: Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 111, in login
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 165, in request
jellyfin_apiclient_python.exceptions.HTTPException: ('MissingSchema', {'Id': 'None'})
2020-02-20 23:12:12,357 [ INFO] Begin connect
2020-02-20 23:12:12,357 [ INFO] Begin getAvailableServers
2020-02-20 23:12:12,357 [ INFO] None
2020-02-20 23:12:12,357 [ WARNING] invalid credentials format
2020-02-20 23:12:12,357 [ DEBUG] credentials initialized with: {}
2020-02-20 23:12:12,357 [ DEBUG] MultiGroup : ('', 7359)
2020-02-20 23:12:12,357 [ DEBUG] Sending UDP Data: b'who is JellyfinServer?'
2020-02-20 23:12:13,369 [ INFO] Found Servers: [{'Address': 'http://10.198.75.60:8096', 'Id': '9246', 'Name': 'DESKTOP'}]
2020-02-20 23:12:13,369 [ DEBUG] credentialsupdated
2020-02-20 23:12:13,369 [ INFO] Begin connectToServers, with 1 servers
2020-02-20 23:12:13,369 [ INFO] begin connectToServer
2020-02-20 23:12:13,369 [ INFO] tryConnect url: http://10.198.75.60:8096/system/info/public
2020-02-20 23:12:13,371 [ DEBUG] Starting new HTTP connection (1): 10.198.75.60:8096
2020-02-20 23:12:13,386 [ DEBUG] http://10.198.75.60:8096 "GET /system/info/public HTTP/1.1" 200 None
2020-02-20 23:12:13,387 [ INFO] calling onSuccessfulConnection with server DESKTOP-ZXH
2020-02-20 23:12:13,387 [ DEBUG] credentialsupdated
2020-02-20 23:12:13,387 [ DEBUG] resolving connectToServers with result['State']: {'Servers': [{'Id': '92
46', 'address': 'http://10.198.75.60:8096', 'Name': 'DESKTOP', 'DateLastAccessed': '2020-02-20T23:12:13Z'}], 'State': 2}
2020-02-20 23:17:15,605 [ DEBUG] JellyfinClient initializing...
2020-02-20 23:17:15,605 [ DEBUG] Configuration initializing...
2020-02-20 23:17:15,605 [ DEBUG] Begin http constructor.
2020-02-20 23:17:15,605 [ DEBUG] WSClient initializing...
2020-02-20 23:17:15,605 [ DEBUG] ConnectionManager initializing...
2020-02-20 23:17:15,605 [ DEBUG] Credentials initializing...
2020-02-20 23:17:15,605 [ DEBUG] Begin app constructor.
2020-02-20 23:17:15,605 [ INFO] tryConnect url: http://192.168.1.6/system/info/public
2020-02-20 23:17:15,607 [ DEBUG] Starting new HTTP connection (1): 192.168.1.6:80
2020-02-20 23:17:17,608 [ ERROR] HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE469C8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))
2020-02-20 23:17:17,609 [ ERROR] 'auth.server-id'
Traceback (most recent call last):
File "site-packages\urllib3\connection.py", line 160, in _new_conn
File "site-packages\urllib3\util\connection.py", line 80, in create_connection
File "site-packages\urllib3\util\connection.py", line 70, in create_connection
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\urllib3\connectionpool.py", line 603, in urlopen
File "site-packages\urllib3\connectionpool.py", line 355, in _make_request
File "http\client.py", line 1244, in request
File "http\client.py", line 1290, in _send_request
File "http\client.py", line 1239, in endheaders
File "http\client.py", line 1026, in _send_output
File "http\client.py", line 966, in send
File "site-packages\urllib3\connection.py", line 183, in connect
File "site-packages\urllib3\connection.py", line 169, in _new_conn
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001847AE469C8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\requests\adapters.py", line 449, in send
File "site-packages\urllib3\connectionpool.py", line 641, in urlopen
File "site-packages\urllib3\util\retry.py", line 399, in increment
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE469C8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 246, in _requests
File "site-packages\requests\api.py", line 75, in get
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 533, in request
File "site-packages\requests\sessions.py", line 646, in send
File "site-packages\requests\adapters.py", line 516, in send
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE469C8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 117, in request
KeyError: 'auth.server-id'
2020-02-20 23:17:17,610 [ ERROR] 'auth.server-id'
Traceback (most recent call last):
File "site-packages\urllib3\connection.py", line 160, in _new_conn
File "site-packages\urllib3\util\connection.py", line 80, in create_connection
File "site-packages\urllib3\util\connection.py", line 70, in create_connection
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\urllib3\connectionpool.py", line 603, in urlopen
File "site-packages\urllib3\connectionpool.py", line 355, in _make_request
File "http\client.py", line 1244, in request
File "http\client.py", line 1290, in _send_request
File "http\client.py", line 1239, in endheaders
File "http\client.py", line 1026, in _send_output
File "http\client.py", line 966, in send
File "site-packages\urllib3\connection.py", line 183, in connect
File "site-packages\urllib3\connection.py", line 169, in _new_conn
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001847AE469C8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\requests\adapters.py", line 449, in send
File "site-packages\urllib3\connectionpool.py", line 641, in urlopen
File "site-packages\urllib3\util\retry.py", line 399, in increment
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE469C8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 246, in _requests
File "site-packages\requests\api.py", line 75, in get
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 533, in request
File "site-packages\requests\sessions.py", line 646, in send
File "site-packages\requests\adapters.py", line 516, in send
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.6', port=80): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001847AE469C8>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 128, in connect_to_address
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 256, in _try_connect
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 117, in request
KeyError: 'auth.server-id'
2020-02-20 23:17:17,611 [ ERROR] connectToAddress http://192.168.1.6 failed
2020-02-20 23:17:17,612 [ ERROR] Request missing Schema. Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?
2020-02-20 23:17:17,612 [ ERROR] ('MissingSchema', {'Id': 'None'})
Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 248, in _requests
File "site-packages\requests\api.py", line 116, in post
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 519, in request
File "site-packages\requests\sessions.py", line 462, in prepare_request
File "site-packages\requests\models.py", line 313, in prepare
File "site-packages\requests\models.py", line 387, in prepare_url
requests.exceptions.MissingSchema: Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 165, in request
jellyfin_apiclient_python.exceptions.HTTPException: ('MissingSchema', {'Id': 'None'})
2020-02-20 23:17:17,612 [ ERROR] ('MissingSchema', {'Id': 'None'})
Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\http.py", line 95, in request
File "site-packages\jellyfin_apiclient_python\http.py", line 248, in _requests
File "site-packages\requests\api.py", line 116, in post
File "site-packages\requests\api.py", line 60, in request
File "site-packages\requests\sessions.py", line 519, in request
File "site-packages\requests\sessions.py", line 462, in prepare_request
File "site-packages\requests\models.py", line 313, in prepare
File "site-packages\requests\models.py", line 387, in prepare_url
requests.exceptions.MissingSchema: Invalid URL '192.168.1.6/Users/AuthenticateByName': No schema supplied. Perhaps you meant http://192.168.1.6/Users/AuthenticateByName?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 111, in login
File "site-packages\jellyfin_apiclient_python\connection_manager.py", line 196, in _request_url
File "site-packages\jellyfin_apiclient_python\http.py", line 165, in request
jellyfin_apiclient_python.exceptions.HTTPException: ('MissingSchema', {'Id': 'None'})
2020-02-20 23:17:17,613 [ INFO] Begin connect
2020-02-20 23:17:17,613 [ INFO] Begin getAvailableServers
2020-02-20 23:17:17,613 [ INFO] None
2020-02-20 23:17:17,613 [ WARNING] invalid credentials format
2020-02-20 23:17:17,613 [ DEBUG] credentials initialized with: {}
2020-02-20 23:17:17,613 [ DEBUG] MultiGroup : ('', 7359)
2020-02-20 23:17:17,613 [ DEBUG] Sending UDP Data: b'who is JellyfinServer?'
2020-02-20 23:17:18,615 [ INFO] Found Servers: [{'Address': 'http://10.198.75.60:8096', 'Id': '92********************46', 'Name': 'DESKTOP'}]
2020-02-20 23:17:18,615 [ DEBUG] credentialsupdated
2020-02-20 23:17:18,615 [ INFO] Begin connectToServers, with 1 servers
2020-02-20 23:17:18,615 [ INFO] begin connectToServer
2020-02-20 23:17:18,615 [ INFO] tryConnect url: http://10.198.75.60:8096/system/info/public
2020-02-20 23:17:18,618 [ DEBUG] Starting new HTTP connection (1): 10.198.75.60:8096
2020-02-20 23:17:18,620 [ DEBUG] http://10.198.75.60:8096 "GET /system/info/public HTTP/1.1" 200 None
2020-02-20 23:17:18,621 [ INFO] calling onSuccessfulConnection with server DESKTOP
2020-02-20 23:17:18,621 [ DEBUG] credentialsupdated
2020-02-20 23:17:18,621 [ DEBUG] resolving connectToServers with result['State']: {'Servers': [{'Id': '92fdae94d176493a850dc71aa0e50d46', 'address': 'http://10.198.75.60:8096', 'Name': 'DESKTOP-ZXH', 'DateLastAccessed': '2020-02-20T23:17:18Z'}], 'State': 2}
serverside log(jellyfin dbg log enabled):[23:27:31] [INF] Udp message sent to 10.198.75.60:53584`

Transcoding entire episode on updating position

Describe the bug
When resuming an episode or movie It appears to try and transcode the entire episode up to that point before playing. When resuming a show it will show the loading screen while ffmpeg is using all the available cpu to transcode. Similar is happening when trying to seek forward and backwards within a video.

The time to resume increases the farther into a video you seek to. i.e resuming a video that is only a few minutes into it would under a minute to begin, but if you seek to an hour into a movie it takes over 15 minutes.

This issue happens even if the media item is direct playing.

To Reproduce
Steps to reproduce the behavior:

  1. Go to any video half watched
  2. Click on play
  3. See buffer

Expected behavior
What is expected to happen in when resuming or seeking it should skip to designated position and buffer from there.

Screenshots
https://imgur.com/a/jMo6Xg9

Desktop (please complete the following information):

  • OS: Windows
  • Version 1.5.4

Error Messages
Please provide the console output by clicking the systray icon and selecting "Show Console".

Default seek times should be set according to the skip(Forward/Back)Length Jellyfin settings

Is your feature request related to a problem? Please describe.
I was a little torn whether this should be a bug or a feature request. Not really a bug but the current behaviour of the left/right seeking is surprising.

Describe the solution you'd like
In the jellyfin web UI there's an option for each of Skip forward length and Skip back length under the playback options, which changes how far the fast-foward/rewind buttons go forward/back when viewing media in the web browser.
I believe setting these should affect how far back/forward pressing the left/right arrow keys seek in mpv.

This setting comes from the json at /DisplayPreferences/usersettings under CustomPrefs.skipForwardLength and CustomPrefs.skipBackLength

Describe alternatives you've considered
The seek distance should at least be configurable (perhaps in conf.json or mpv.conf) I'm not too fussed where, that just seemed like the best spot that's already there for you

Additional context
I tried to write this code myself but I hit a roadblock when I couldn't find any reference to the usersettings endpoint in jellyfin-apiclient-python so I think some updates to that apiclient are required first.

[Feature Request] Make Jellyfin MPV Desktop remember its last window position, state and size

Is your feature request related to a problem? Please describe.
At the moment, Jellyfin MPV Desktop always starts as a small, about 800x600 large window in the center of the screen. It does this even if you launch it again after having changed its window position, state (e.g. maximized) and/or size during the previous run. Many applications on Windows memorize these parameters when you quit them and recreate them on the next launch.

Describe the solution you'd like
Ideally, Jellyfin MPV Desktop would store these options in a file whenever it is shut down and apply them at the next start by reading them from said file.

Describe alternatives you've considered
There are applications like Sizer for quickly resizing another application to a specific size.

Additional context
N/A

Multiple JMS on the same pc

Since there is no QA section I am posting this under here.

Describe the solution you'd like
It would be nice if one can run multipl versions of this app on the same pc. The reason is that, one could cast certain content to one another content to another one. For instance one cancast movies to one and tutorials to another one with 1.5x MPV speed. It looks like JMS remembers the last speed in the last casting, this gets a bit confusing, like one watches a tutorial at 1.5x speed then casting a movie means that the movie will play at 1.5x too. Sure the solution is to reach to the keyboard and mess with the speed settings, however this is not always an optimum solution. Given that a keyboard is not always ready or the remote pc is somewhere else etc.

Describe alternatives you've considered
Not sure if there is analternative.

Additional context
Multiple JMS on the same pc with speed playing memory.

Nothing works

I simply installed and ran as 'jellyfin-mpv-desktop_1.5.4_installer.exe'
But no window pops up
ReedMe stated that the jellyfin webui is floating, but it is not visible.
https://imgur.com/GD9Vhxd
Am I not understanding this program?

I am using Windows 10 1909

Enable Keyboard Media Keys

I'm not sure if this is by design or just a bug. Keyboard Media Keys Next and Previous no longer work when using jellyfin-mpv-shim.

I can use the keys in chrome with jellyfin or in mpv stand alone. I know the bindings "< + Shift" and "> + Shift" for Previous and Next and they work . Maybe these custom bindings are overriding the Media Keys?

Constant notifications?

Hi

I am using this on Debian testing with the systray. It works great but I am getting constant notification popups on the desktop when I cam casting music from the Android client.

It is a bit annoying since I constantly need to click on the pop up to close, but it comes back again.

I am wondering if there is a way to disable this?

nothing plays on windows (desktop 1.5.4)

Hello, I have a jellyfin server 10.4.3 up and running (on debian).

I've just installed jellyfin-mpv-desktop_1.5.4_installer.exe and set it up using https (no special port, that would be 443).

But no matter what file I try to play (including standard h.264 / AAC media) I get this error message :

Playback Error
There was an issue with the client profiling and the server isn't sending a compatible media format.

I tried to install MPV player on its own, but that doesn't change anything. Did I miss something ?

Systray GUI Segfaults on Linux

Describe the bug
The system tray icon, provided by the pystray library is causing the application to segfault on Linux. It seems to happen only when the python-mpv player backend is used.

To Reproduce
Steps to reproduce the behavior:

  1. Install the application on Linux with pystray, tkinter, and libmpv1.
  2. Cast media to the application and then stop casting.
  3. Right click on the tray icon.
  4. The icon disappears and the program crashes with Segmentation Fault.

Expected behavior
The menu for the application appears.

Desktop (please complete the following information):

  • OS: Debian Stable w/ libmpv1 compiled from git master
  • Version: All versions since 1.2.0.

Error Messages
The only message that appears in the terminal (not the application log) is Segmentation Fault. Attempts to trace the bug by using faulthandler did not reveal any clues. This bug has affected at least one other user on two separate Linux distributions.

Workarounds
There are two known workarounds for this issue.

  • Disable the GUI and systray by setting the option enable_gui to false. This eliminates the source of the problem.
  • Use external MPV. Ensure you can run MPV using mpv and then set mpv_ext to true. I have not observed the bug while the player was in this state.
  • If you right click the tray icon before casting something, the issue does not occur.

Development Considerations
There are two ways that I could probably work around the issue, but I don't like either of them.

  • Find a new systray library. PyQT5 comes to mind, but that library changes a lot and it is a large dependency.
  • Isolate the systray in another process. If this is caused by some interaction between libmpv1 and pystray, it won't happen through a process. This is a dirty fix, but I am already doing something like this for tkinter since it also needs a "primary thread".

No connection adapters were found for '*****:8096/Users/AuthenticateByName'

Describe the bug

No connection adapters were found for '*****:8096/Users/AuthenticateByName

Client: MacOS 10.14 ,pip3 install git+https://github.com/iwalton3/jellyfin-mpv-shim

              python 3.7.6_1 is already installed and up-to-date

              mpv 0.32.0 is already installed and up-to-date

Server:Docker Lastest version of Jellyfin

To Reproduce
Steps to reproduce the behavior:

2020-02-22 07:18:33,870 [    INFO] Loaded settings from json: /Users/wanghuangjie/Library/Application Support/jellyfin-mpv-shim/conf.json
2020-02-22 07:18:34,077 [   DEBUG] Staring MPV from mpv.
2020-02-22 07:18:34,077 [   DEBUG] Using IPC socket /tmp/mpv170904384311864 for MPV.
2020-02-22 07:18:34,668 [   DEBUG] STREAM b'IHDR' 16 13
2020-02-22 07:18:34,669 [   DEBUG] STREAM b'zTXt' 41 1315
2020-02-22 07:18:34,669 [   DEBUG] STREAM b'bKGD' 1368 6
2020-02-22 07:18:34,670 [   DEBUG] b'bKGD' 1368 6 (unknown)
2020-02-22 07:18:34,670 [   DEBUG] STREAM b'pHYs' 1386 9
2020-02-22 07:18:34,670 [   DEBUG] STREAM b'tIME' 1407 7
2020-02-22 07:18:34,671 [   DEBUG] b'tIME' 1407 7 (unknown)
2020-02-22 07:18:34,671 [   DEBUG] STREAM b'IDAT' 1426 612
2020-02-22 07:18:34.772 Python[24266:988965] +[NSXPCSharedListener endpointForReply:withListenerName:]: an error occurred while attempting to obtain endpoint for listener 'ClientCallsAuxiliary': Connection invalid
2020-02-22 07:18:34.777 Python[24267:988995] +[NSXPCSharedListener endpointForReply:withListenerName:]: an error occurred while attempting to obtain endpoint for listener 'ClientCallsAuxiliary': Connection invalid
2020-02-22 07:18:49,706 [   DEBUG] JellyfinClient initializing...
2020-02-22 07:18:49,707 [   DEBUG] Configuration initializing...
2020-02-22 07:18:49,707 [   DEBUG] Begin http constructor.
2020-02-22 07:18:49,707 [   DEBUG] WSClient initializing...
2020-02-22 07:18:49,707 [   DEBUG] ConnectionManager initializing...
2020-02-22 07:18:49,708 [   DEBUG] Credentials initializing...
2020-02-22 07:18:49,708 [   DEBUG] Begin app constructor.
2020-02-22 07:18:49,708 [    INFO] tryConnect url: http://192.168.1.10:8096/system/info/public
2020-02-22 07:18:49,718 [   DEBUG] Starting new HTTP connection (1): 192.168.1.10:8096
2020-02-22 07:18:49,727 [   DEBUG] http://192.168.1.10:8096 "GET /system/info/public HTTP/1.1" 200 None
2020-02-22 07:18:49,729 [    INFO] connectToAddress http://192.168.1.10:8096 succeeded
2020-02-22 07:18:49,729 [    INFO] begin connectToServer
2020-02-22 07:18:49,729 [    INFO] tryConnect url: http://192.168.1.10:8096/system/info/public
2020-02-22 07:18:49,732 [   DEBUG] Starting new HTTP connection (1): 192.168.1.10:8096
2020-02-22 07:18:49,740 [   DEBUG] http://192.168.1.10:8096 "GET /system/info/public HTTP/1.1" 200 None
2020-02-22 07:18:49,741 [    INFO] calling onSuccessfulConnection with server acepc
2020-02-22 07:18:49,741 [    INFO] None
2020-02-22 07:18:49,741 [ WARNING] invalid credentials format
2020-02-22 07:18:49,741 [   DEBUG] credentials initialized with: {}
2020-02-22 07:18:49,741 [   DEBUG] credentialsupdated
2020-02-22 07:18:49,742 [   ERROR] No connection adapters were found for '192.168.1.10:8096/Users/AuthenticateByName'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/jellyfin_apiclient_python/connection_manager.py", line 196, in _request_url
    return self.http.request(request)
  File "/usr/local/lib/python3.7/site-packages/jellyfin_apiclient_python/http.py", line 95, in request
    r = self._requests(session or self.session or requests, data.pop('type', "GET"), **data, stream=stream)
  File "/usr/local/lib/python3.7/site-packages/jellyfin_apiclient_python/http.py", line 248, in _requests
    return session.post(**kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 640, in send
    adapter = self.get_adapter(url=request.url)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 731, in get_adapter
    raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for '192.168.1.10:8096/Users/AuthenticateByName'
2020-02-22 07:18:49,743 [   ERROR] No connection adapters were found for '192.168.1.10:8096/Users/AuthenticateByName'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/jellyfin_apiclient_python/connection_manager.py", line 111, in login
    result = self._request_url(request, False)
  File "/usr/local/lib/python3.7/site-packages/jellyfin_apiclient_python/connection_manager.py", line 196, in _request_url
    return self.http.request(request)
  File "/usr/local/lib/python3.7/site-packages/jellyfin_apiclient_python/http.py", line 95, in request
    r = self._requests(session or self.session or requests, data.pop('type', "GET"), **data, stream=stream)
  File "/usr/local/lib/python3.7/site-packages/jellyfin_apiclient_python/http.py", line 248, in _requests
    return session.post(**kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 640, in send
    adapter = self.get_adapter(url=request.url)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 731, in get_adapter
    raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for '192.168.1.10:8096/Users/AuthenticateByName'
2020-02-22 07:18:49,744 [    INFO] Begin connect
2020-02-22 07:18:49,744 [    INFO] Begin getAvailableServers
2020-02-22 07:18:49,744 [   DEBUG] MultiGroup      : ('<broadcast>', 7359)
2020-02-22 07:18:49,744 [   DEBUG] Sending UDP Data: b'who is JellyfinServer?'
2020-02-22 07:18:50,748 [    INFO] Found Servers: []
2020-02-22 07:18:50,751 [   DEBUG] credentialsupdated
2020-02-22 07:18:50,751 [    INFO] Begin connectToServers, with 1 servers
2020-02-22 07:18:50,751 [    INFO] begin connectToServer
2020-02-22 07:18:50,751 [    INFO] tryConnect url: http://192.168.1.10:8096/system/info/public
2020-02-22 07:18:50,752 [   DEBUG] Starting new HTTP connection (1): 192.168.1.10:8096
2020-02-22 07:18:50,761 [   DEBUG] http://192.168.1.10:8096 "GET /system/info/public HTTP/1.1" 200 None
2020-02-22 07:18:50,762 [    INFO] calling onSuccessfulConnection with server acepc
2020-02-22 07:18:50,763 [   DEBUG] credentialsupdated
2020-02-22 07:18:50,763 [   DEBUG] resolving connectToServers with result['State']: {'Servers': [{'address': 'http://192.168.1.10:8096', 'Name': 'acepc', 'Id': '55df3aa284ff45c5b86e3787cfec638c', 'DateLastAccessed': '2020-02-22T07:18:50Z'}], 'State': 2}

Expected behavior

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Error Messages
Please provide the console output by clicking the systray icon and selecting "Show Console".

[Feature Request] Add optional update check on startup

Is your feature request related to a problem? Please describe.
I personally have a GitHub account, so I can just watch the releases on this repository to be notified when an update is released, but my friends and family don't, so it would be nice for them to have a way to be notified about new releases.

Describe the solution you'd like
I'm not sure what the best way to implement this on a technical side would be, but it could be added as an option in the installer that is unchecked by default, something like "Check for new Jellyfin MPV Desktop updates on startup."

Describe alternatives you've considered
My friends and family could sign up for a GitHub account and watch the releases on this repository as well.

Additional context
N/A

Add client to official documentation

Hey there! Your client looks amazing, feel free to add it to our docs here as a third party client if you'd like. You can also add detailed information like someone did for kodi for things like installation, development, and other stuff.

Set sane default value for remote streaming bandwidth

Is your feature request related to a problem? Please describe.
The default remote streaming bandwidth is currently set to 2000kbps. I don't think that this is a sane default value for a desktop application because it prevents users from Direct Playing most 1080p and 4K content. I'm not even sure what its intended purpose is since residential Internet, unlike mobile Internet, is not subject to data caps. On my Jellyfin server, the current default value only serves to cause my users to transcode media unnecessarily.

Describe the solution you'd like
I think that the default value should be set high enough so that non-technical users can Direct Play 1080p and 4K content without first having to modify obscure config files.

Describe alternatives you've considered
N/A

Additional context
N/A

Cannot launch on MacOS

Hi, so i did every step on the install readme on macos, but when im trying to run it im getting this:
zsh: command not found: jellyfin-mpv-shim

Also when im trying to install desktop or gui version im getting:
zsh: no matches found: jellyfin-mpv-shim[desktop]
zsh: no matches found: jellyfin-mpv-shim[gui]

Possible Bug? Does not save movie position nor resume from position

I've just been fooling around with Jellyfin until there is a suitable windows 10 desktop replacement for Plex to use on my htpc.

I like what you've done here, but I've got a question about the save position.

I had a movie that I had previously started watching in kodi to test and I chose it to run in your software, but it started from the beginning, It didn't give an option to resume.

When I quit watching a show, it didn't save the location.

I don't know if this is something you have implemented or if I did something wrong. I tried a few times all with the same results.

To Reproduce

  1. run a movie - either one with a previous resume location or not
  2. Movie starts from the beginning.
  3. close movie (either with C - menu only shows close mark watched or unwatched depending on movie state, or U just kills it.
  4. start up movie again, it starts from the beginning.

Expected behavior
Seeing as it's a server I'm hoping the behavior would be similar to Jellyfin's, or that of plex to keep track of what I've seen or in progress shows.

Desktop (please complete the following information):

  • Windows 10 (1909)
  • Version 1.5.4 (only version I've tried)

As a side question. Can I use Flirc with my harmony remote to program movement on the page? It seemed arrows wouldn't move around the main page to make selections. If that's not in yet, no worries, just curious. :)

Borderless Fullscreen

I tried this out on my windows 10 htpc. The way I have plex setup is, windows boots and it goes directly into plex and proceed as normal.

When I load Jellyfin I cannot get it to be borderless fullscreen. There is always a border. If I do the windows key + up arrow, it resizes the window and I lose a good portion of the screen because it is hidden. It's a 4k tv that I do 150% scaling, however it didn't matter with scaling off it still sent 1/4 or so of the picture off screen. (this is the menu not the actual video player, the player works great).

I apologize if it's just my lack of knowledge, but is there some way to make the program itself full screen borderless? The 3 windows min max x is always visible in the top right.

Thanks for any help,

windows 10 (1909)
version 1.5.4

Export client as a jellyfin-apiclient-python module

Hi ! I'm interested in building a minimalist music player for jellyfin and I thought that python would be great for the job.
I saw that you already implemented an apiclient for python so I was wondering if you would be ok to export it as an external python module ?

Unable to quit when playing ts files muxed in a mkv container

So currently there's a show that I have which were originally .ts files and I simply remuxed them into a mkv file. When playing these files, playing, seeking all these functions work as intended. However, when you try to exit the player (either by pressing q or closing the window) the window freezes and I have to close and restart the shim program.

Also, the statistics such as current play file/codec etc will be wrong and will be from the file previously played. For example, here's me playing the aforementioned .ts file. (this is a japanese drama so clearly not les miserables)
image

I believe the file being originally .ts is a possible cause seeing that this is my only show which was previouly this kind of file type. Here's the media info from mpc-hc:
逃げるは恥だが役に立つ 第01話「プロの独身男と秘密の契約結婚」1080p BDRip x265 FLAC-Japari Park.mkv.MediaInfo.txt

Desktop version fails to launch

Describe the bug
The desktop version does not run Debian Sid

To Reproduce
Steps to reproduce the behavior:
Install as recommended in the README
Run jellyfin-mpv-desktop

Expected behavior
It should run properly. Bear in mind that regular JMS works fine no problem.

Edit: Hmmm, JMS does not work either, I wonder some python thing went south here :(

Edit2: OK regular JMS works but throws bunch of errors. Here is the log for it. Not sure if these are related

https://bin.privacytools.io/?631e26f8df9967ca#yvfMrBOsunKEmdPlCeB1BKxChvNpariwujCDTqpYiWM=

Screenshots

Desktop (please complete the following information):

  • OS: Debian Sid

Error Messages


020-04-04 17:46:31,090 [   ERROR] JELLYFIN.jellyfin_apiclient_python.connection_manager: Traceback (most recent call last):                                                                                                                                                                                                                
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 156, in _new_conn                                                                                                                                                                                                                                                       
    conn = connection.create_connection(                                           
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 84, in create_connection                                                                     
    raise err                                                                      
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 74, in create_connection                                                                     
    sock.connect(sa)                                                               
ConnectionRefusedError: [Errno 111] Connection refused                             

During handling of the above exception, another exception occurred:                

Traceback (most recent call last):                                                 
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen                                                                               
    httplib_response = self._make_request(                                         
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 387, in _make_request                                                                         
    conn.request(method, url, **httplib_request_kw)                                
  File "/usr/lib/python3.8/http/client.py", line 1230, in request                  
    self._send_request(method, url, body, headers, encode_chunked)                 
  File "/usr/lib/python3.8/http/client.py", line 1276, in _send_request            
    self.endheaders(body, encode_chunked=encode_chunked)                           
  File "/usr/lib/python3.8/http/client.py", line 1225, in endheaders               
    self._send_output(message_body, encode_chunked=encode_chunked)                 
  File "/usr/lib/python3.8/http/client.py", line 1004, in _send_output             
    self.send(msg)                                                                 
  File "/usr/lib/python3.8/http/client.py", line 944, in send                      
    self.connect()                                                                 
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 184, in connect                                                                                   
    conn = self._new_conn()                                                        
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 168, in _new_conn                                                                                 
    raise NewConnectionError(                                                      
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f67ff7a6910>: Failed to establish a new connection: [Errno 111] Connection refused                                                                                                                                                                   

During handling of the above exception, another exception occurred:                

Traceback (most recent call last):                                                 
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send                                                                                       
    resp = conn.urlopen(                                                           
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen                                                                               
    retries = retries.increment(                                                   
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 436, in increment                                                                                 
    raise MaxRetryError(_pool, url, error or ResponseError(cause))                 
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.2.100', port=8196): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f67ff7a6910>: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:                

Traceback (most recent call last):                                                 
  File "/usr/local/lib/python3.8/dist-packages/jellyfin_apiclient_python/connection_manager.py", line 177, in connect_to_server                                       
    result = self.API.get_public_info(server.get('address'))                       
  File "/usr/local/lib/python3.8/dist-packages/jellyfin_apiclient_python/api.py", line 477, in get_public_info                                                        
    response = self.send_request(server_address, "system/info/public")             
  File "/usr/local/lib/python3.8/dist-packages/jellyfin_apiclient_python/api.py", line 434, in send_request                                                           
    return request_method(url, **request_settings)                                 
  File "/usr/lib/python3/dist-packages/requests/api.py", line 75, in get           
    return request('get', url, params=params, **kwargs)                            
  File "/usr/lib/python3/dist-packages/requests/api.py", line 60, in request                                                                                          
    return session.request(method=method, url=url, **kwargs)                       
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request                                                                                    
    resp = self.send(prep, **send_kwargs)                                          
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send                                                                                       
    r = adapter.send(request, **kwargs)                                            
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send                                                                                       
    raise ConnectionError(e, request=request)                                      
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.2.100', port=8196): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f67ff7a6910>: Failed to establish a new connection: [Errno 111] Connection refused'))

2020-04-04 17:46:31,090 [   ERROR] JELLYFIN.jellyfin_apiclient_python.connection_manager: Failing server connection. ERROR msg: HTTPConnectionPool(host='192.168.2.100', port=8196): Max retries exceeded with url: /system/info/public (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f67ff7a6910>: Failed to establish a new connection: [Errno 111] Connection refused'))                   
2020-04-04 17:46:31,090 [   DEBUG] JELLYFIN.jellyfin_apiclient_python.connection_manager: resolving connect with result: {'State': 0}                                 
Exception in thread Thread-1:                                                      
Traceback (most recent call last):                                                 
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner            
    self.run()                                                                     
  File "/usr/local/lib/python3.8/dist-packages/jellyfin_mpv_shim/webclient_view/__init__.py", line 56, in run                                                         
    app = Flask(__name__, static_url_path='',                                      
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 420, in __init__                                                                                   
    self.static_folder = static_folder                                             
  File "/usr/local/lib/python3.8/dist-packages/flask/helpers.py", line 1004, in static_folder                                                                         

MPRIS Plugin

Describe the bug
I'm trying to load the mpris plugin for the mpv but it's not working.
Adding this same option in ~/.config/mpv/mpv.conf loads the plugin without problems when mpv runs to other media on my pc.

To Reproduce
I added script=/home/me/.config/mpv/scripts/mpris.so in ~/.config/jellyfin-mpv-shim/mpv.conf but when starting jellyfin-mpv-pris the console shows the following errors:

2020-04-17 14:48:44,959 [   ERROR] mpv: cplayer: C plugin error: '/home/fabiano/.config/mpv/scripts/mpris.so: undefined symbol: mpv_get_property'
2020-04-17 14:48:44,959 [   ERROR] mpv: mpris: Could not load SO plugin /home/fabiano/.config/mpv/scripts/mpris.so

Full log https://bin.privacytools.io/?0cd9a8ce68490294#otzSobnT2wxFqGo16Wwk2Q71HrbrI9itjkEXS+/iSK8=

Desktop (please complete the following information):

  • OS: archlinux 5.6.4-arch1-1
  • Package: AUR
  • Version: 1.5.8-1

Unable to choose what file (4K or 1080) to play

There are several files in my library that I have 2 files (4K HDR and 1080p), you can choose which one to play from from the jellyfin web client like this.
image
However, even if I choose the 1080p one it still plays the 4K one in mpv.
image

Here's what the console show when trying to play the two different resolution files.
play1stFile.txt
play2ndFile.txt

Scrolling on the last Episode doesn't stop server Playback

Describe the bug
If i watch a TV Show and im on the last episode and scroll with the mousewheel till the end their is no command sent to jellyfin to stop the playback.

To Reproduce
Steps to reproduce the behavior:

  1. Watch the latest episode of a show
  2. Scroll till the end
  3. Go back to the Jellyfin and you will see that the video is still playing their. Stop commands and the liks are not getting answered. So you have to reload The Webrowser to reset the play status

Latest Client Log messages:
2020-02-07 23:45:48,475 [ DEBUG] http://openmediavault.local:8096 "POST //Sessions/Playing/Progress HTTP/1.1" 204 0 2020-02-07 23:45:53,496 [ DEBUG] http://openmediavault.local:8096 "POST //Sessions/Playing/Progress HTTP/1.1" 204 0 2020-02-07 23:45:58,517 [ DEBUG] http://openmediavault.local:8096 "POST //Sessions/Playing/Progress HTTP/1.1" 204 0 2020-02-07 23:46:03,537 [ DEBUG] http://openmediavault.local:8096 "POST //Sessions/Playing/Progress HTTP/1.1" 204 0 2020-02-07 23:46:08,558 [ DEBUG] http://openmediavault.local:8096 "POST //Sessions/Playing/Progress HTTP/1.1" 204 0
Nothing in the logs on the serverside

Desktop (please complete the following information):

Android?

Hi

Is it possible run this on Android at all maybe under something like Termux? I do not want to waste time if it wont be possible.

thanks

Icons not displayed correctly in desktop view

Describe the bug
In the desktop view, icons are not displayed correctly as shown below.

To Reproduce
Steps to reproduce the behavior:

  1. Go to any page
  2. See that icons are not displayed correctly.

Expected behavior
The correct icons should show instead of text or broken icons

Screenshots
jellyfin-mpv-desktop:
image
Jellyfin Web Interface:
image

Desktop:

  • OS: Arch Linux
  • Version 1.5.5

Need working MPV version for Raspberry PI 3B

hi! thanks for the project!

Describe the bug
I've installed mpv shim on the raspberry pi (latest raspian lite). what I'm looking for is a "headless" system. the pi only has ethernet, power, and hdmi. all the other controlling i want to do with android.

Currently I have it mostly working. the shim shows as a device from my phone, I can cast a video, the video plays, but then I dont have a bar at the bottom of my phone to play, pause, seek etc. it seems to just start the cast then forget about it. volume isn't working either for me. no way of stopping, and playing something new doesnt do anything

Iim using external mpv at the moment

To Reproduce
here's how I installed from a new raspbian image

sudo apt install python3
sudo apt install python3-pip
sudo pip3 install --upgrade jellyfin-mpv-shim
sudo pip3 install jellyfin-mpv-shim[mirror]
sudo apt install mpv
sudo apt install gir1.2-webkit2-4.0

then, to autostart, /etc/rc.local

mpv -v --input-ipc-server=/tmp/mpv-socket --idle &
/usr/local/bin/jellyfin-mpv-shim

and finally /root/.config/jellyfin-mpv-shim/conf.json

{
    "always_transcode": false,
    "audio_output": "hdmi",
    "auto_play": true,
    "client_uuid": "892012ba-74d5-4081-b81b-76e036dde764",
    "desktop_fullscreen": false,
    "desktop_remember_pos": true,
    "direct_paths": false,
    "display_mirroring": false,
    "enable_desktop": false,
    "enable_gui": false,
    "enable_osc": false,
    "fullscreen": true,
    "idle_cmd": null,
    "idle_cmd_delay": 60,
    "local_kbps": 2147483,
    "log_decisions": false,
    "media_ended_cmd": null,
    "media_key_seek": false,
    "mpv_ext": true,
    "mpv_ext_ipc": null,
    "mpv_ext_path": null,
    "mpv_ext_start": true,
    "mpv_log_level": "info",
    "player_name": "bingus",
    "pre_media_cmd": null,
    "remote_direct_paths": false,
    "remote_kbps": 10000,
    "stop_cmd": null,
    "subtitle_color": "#FFFFFFFF",
    "subtitle_position": "bottom",
    "subtitle_size": 100,
    "transcode_h265": false,
    "transcode_hi10p": false,
    "use_web_seek": false
}

Expected behavior
seek bar, play, pauce etc buttons on phone

any help is much appreciated :)
thanks!

Music playback always starts at track #1

Using version 1.4.2 on windows
If I open a music album and try to cast any track only track #1 will play. The expected behavior is for example clicking on track 5 and track 5 plays. I think the entire album is getting queued since I can press play next to play track 2, 3, 4 etc... The same issue occurs with music playlists.

[mac] Stopping playback won't return to Display Mirroring

Describe the bug
Display mirroring is shown in fullscreen (shown in the dock as Python). After starting playback it changes to mpv. Stopping playback won't return to the display mirroring screen, but to desktop.

I assume this has to do with the mac version using an external version of mpv. Will there be a full application at some point?

To Reproduce
Steps to reproduce the behavior:

  1. Run jellyfin-mpv-shim
  2. Start playback
  3. Stop playback
  4. Not returning to display mirroring

Expected behavior
After stopping playback display mirroring should be the front window

Desktop (please complete the following information):

  • OS: macOS
  • Version 1.4

Playlist plays from the first file regardless of selection

Possibly related to #34
When I try to play a video from a playlist, playback always starts from the first file.

To Reproduce

  • Create a playlist of videos.
  • Try to play a video other than the first.
  • First video plays

Expected behavior
The actual video being clicked playing.

Desktop (please complete the following information):
Windows 10 1909
Jellyfin Shim 1.5.6

Custom keybinds for volume?

Is your feature request related to a problem? Please describe.
Ability to control volume using mouse wheel.

Describe the solution you'd like
It'd be nice if it was solved with a simple config variable, or simply respecting input.conf, i tried it but it seemed to be "stuck" on seek.

Describe alternatives you've considered
Tried to add multiple keybinds for volume control to input.conf in both %appdata%/mpv and %appdata%\jellyfin-mpv-shim but it didnt seem to make much of a difference.

macOS Crashing on startup

I'm running macOS Catalina, i installed this app using the instructions you outlined, and it just crashes on startup.

jellyfin-mpv-shim                                                              ✔  12:58:56 
❯ jellyfin-mpv-shim
2020-02-18 12:58:58,070 [    INFO] Loaded settings from json: /Users/aaron/Library/Application Support/jellyfin-mpv-shim/conf.json
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
objc[52375]: +[NSCharacterSet initialize] may have been in progress in another thread when fork() was called.
objc[52375]: +[NSCharacterSet initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
2020-02-18 12:58:59,350 [   DEBUG] STREAM b'IHDR' 16 13
2020-02-18 12:58:59,351 [   DEBUG] STREAM b'zTXt' 41 1315
2020-02-18 12:58:59,351 [   DEBUG] STREAM b'bKGD' 1368 6
2020-02-18 12:58:59,352 [   DEBUG] b'bKGD' 1368 6 (unknown)
2020-02-18 12:58:59,352 [   DEBUG] STREAM b'pHYs' 1386 9
2020-02-18 12:58:59,353 [   DEBUG] STREAM b'tIME' 1407 7
2020-02-18 12:58:59,353 [   DEBUG] b'tIME' 1407 7 (unknown)
2020-02-18 12:58:59,354 [   DEBUG] STREAM b'IDAT' 1426 612
objc[52374]: +[NSApplication initialize] may have been in progress in another thread when fork() was called.
objc[52374]: +[NSApplication initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.

Can start, and stream to device, but no gui/player appears

On clear linux I've followed installation instructions, installing via pip3. I can seemingly start jellyfin-mpv-shim, however when I stream to the linux system no window/video/player appears.

One interesting debug WARNING message was:
[ WARNING] This mpv version doesn't support on-screen controller.

Otherwise, I'm not quite sure what this should look like while using it. It seems like the videos are being played back somewhat from the mobile android app, and the player is using CPU on the clear linux system. Some videos while casted get up to 6 seconds then go back to 0:00 (however other than cpu usage I'm not seeing any player or like actual media).

Is there any way to know what jellyfin-mpv-shim should look like when functioning properly? I didn't see screenshots anywhere. Thanks!

Subtitles in sub/idx format don't work unless direct, srt don't work when direct.

Describe the bug
This is a weird one, sub/idx subtitles don't work unless I'm using the direct path for the stream, yet srt subtitles only work when not using direct path.

Both worked in jellyfin-web

To Reproduce

  1. Start watching a media stream with srt subtitles and a working direct path
  2. Enable a subtitle track
  3. No subtitles appear
    Alternatively:
  4. Start watching a media stream with sub/idx subtitles and no working direct path
  5. Enable a subtitle track
  6. No subtitles appear

Desktop (please complete the following information):

  • OS: Debian Buster
  • Version: Latest HEAD (4984ca5)

Error Messages
Nothing useful here I'm afraid

[ DEBUG] PlayerManager::play selecting audio stream index=1
[ DEBUG] PlayerManager::play selecting subtitle stream index=2
[ DEBUG] PlayerManager::play selecting external subtitle id=2
[ DEBUG] PlayerManager::could not load external subtitle

I managed to get the actual exception from a sub/idx stream by putting in a breakpoint:

Traceback (most recent call last):
File "/home/mike/vcs/jellyfin-mpv-shim/jellyfin_mpv_shim/player.py", line 434, in load_external_sub
self._player.sub_add(self._video.subtitle_url[sub_id])
File "/usr/local/lib/python3.7/dist-packages/mpv.py", line 827, in sub_add
self.command('sub_add', filename.encode(fs_enc))
File "/usr/local/lib/python3.7/dist-packages/mpv.py", line 719, in command
_mpv_command(self.handle, (c_char_p*len(args))(*args))
File "/usr/local/lib/python3.7/dist-packages/mpv.py", line 126, in raise_for_ec
raise ex(ec, *args)
SystemError: ('Error running mpv command', -12, (<MpvHandle object at 0x7f7047aa4a60>, <mpv.c_char_p_Array_3 object at 0x7f7007f71ae8>))

Authentification Error

Describe the bug
I am unable to authenticate with my Jellyfin server, getting an Internal Server Error.

To Reproduce
Steps to reproduce the behavior:

  1. Add the server
  2. Error

Expected behavior
Successful authentification after adding the server

Desktop:

  • OS: Arch Linux
  • Version 5.4.15-arch1-1

Error Messages
https://pastebin.com/00GxRWwm

Potentially relevant:
The server is running Jellyfin behind a reverse proxy that points to the jellyfin subdomain.

Desktop Client Scaling Issue Between Different Displays

Describe the bug
The UI breaks when changing the client to display on different displays (with different UI scaling in Windows display settings)

To Reproduce

  1. Use a multi monitor setup
  2. Have the two monitors set at different UI scaling
    Monitor 1: 15.6" 1080p 125%
    Monitor 2: 27" 1080p 100%
  3. Drag the client between displays, the UI should break on one of the displays

Expected behavior
The UI should be able to adapt to different UI scaling in Windows.

Screenshots
image
(You can see that the elements show the mouse hovering over the library title "TV Shows", despite the mouse location being at the spot just above the block of Pocahontas)

Recorded Behavior (link to YouTube video)
https://youtu.be/znlHBEwa4dE

Desktop (please complete the following information):
Currently using version 10.5.3. Have tried 10.5.4 and 10.5.6 with the same results.

Error Messages
No error is shown

Subtitles don't work

I've tried many films, selecting the subtitles from jellyfin:

image

But they don't show up in mpv:

image

The default behavior should probably be just to send all the subtitles along into mpv anyway, selecting the one selected from that menu if possible.

Note: I can't use the toolbar menu because I use i3. I don't know what configuring the shim would need to do from this menu, but it should probably have a web interface so its usable across all DE's and OS's.

MacOS support

I've tried to compile this on my mac, but it doesn't seem to work. I was wondering if anyone had gotten this working on Mac.

Not Starting on Ubuntu

Describe the bug
After following the steps in the README, the app does not start succesfully on Linux. The mpv was not recompiled as I have used mpv for a while on my device and it always delivered. Don't have any weird data formats in jellyfin either.
I removed my config of mpv for testing purposes (~/.config/mpv) as well

To Reproduce
Steps to reproduce the behavior:

  1. Install jellyfin-mpv-shim according to the README.md on Xubuntu 18.04 LTS x64
  2. Start it by typing jellyfin-mpv-shim into the console as there is no startmenu link

Expected behavior
Something should start, preferrably a window

Desktop (please complete the following information):

  • OS: Xubuntu 18.04 LTS 64 Bit

Error Messages

2020-02-14 15:24:51,516 [    INFO] Loaded settings from json: /home/drone/.config/jellyfin-mpv-shim/conf.json

(jellyfin-mpv-shim:29313): dbind-WARNING **: 15:24:51.615: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/jellyfin_mpv_shim/mpv_shim.py", line 32, in main
    from .player import playerManager
  File "/usr/local/lib/python3.6/dist-packages/jellyfin_mpv_shim/player.py", line 520, in <module>
    playerManager = PlayerManager()
  File "/usr/local/lib/python3.6/dist-packages/jellyfin_mpv_shim/player.py", line 69, in __init__
    input_media_keys=True, include=mpv_config, **extra_options)
  File "/usr/local/lib/python3.6/dist-packages/python_mpv_jsonipc.py", line 272, in __init__
    for command in self.command("get_property", "command-list"):
  File "/usr/local/lib/python3.6/dist-packages/python_mpv_jsonipc.py", line 375, in command
    print(self.mpv_inter.command(command, *args))
  File "/usr/local/lib/python3.6/dist-packages/python_mpv_jsonipc.py", line 223, in command
    raise MPVError(data["error"])

Also, I've had it run in a python console in verbose, and it gave me this additional line
python_mpv_jsonipc.MPVError: property not found

And lastly it should be noted that the program does not actually crash but runs indefinetly without any output or reaction until you CTRL+C it. Taskmanager says it takes about 60 MB Ram but no 0% CPU.

[Feature Request] Add an option to specify the install path in the Jellyfin MPV Desktop installer

Is your feature request related to a problem? Please describe.
If a software is installed outside of the Program Files directory, its files are left unprotected from malicious changes by other applications that are running without admin rights.

Describe the solution you'd like
I would prefer it if the installer allowed people to specify where they want to install Jellyfin MPV Desktop and prompt the user for admin rights if required.

Describe alternatives you've considered
N/A

Additional context
N/A

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.