Discord Rich Presence Integration for MPV Media Player
Left: looping song in playlist (mouse hovering on small icon)
Right: paused in movie
Currently, there are two alternatives I found on GitHub.
Discord RPC
In order to interact with Discord Rich Presence using RPC, the client needs to connect to Discord's IPC socket. However, both of the above alternatives do not keep a connection with Discord's IPC socket, which I think is rather unreliable.
See also: how mpv-discord works.
Third-party Dependencies
Both of the above alternatives require users to install third-party dependencies such as python-pypresence
or lua-discordRPC
.
I found it hard to set up the dependencies and I also don't want to mess up my environment.
Installer scripts for Windows, Linux and OSX are provided.
git clone https://github.com/tnychn/mpv-discord.git
install_darwin.sh
in Terminal for OSXinstall_linux.sh
in Terminal for Linuxinstall_windows.bat
by double clicking on it for Windowsbinary_path
in the config file first.For OSX and Linux, config file is located in ~/.config/mpv/script-opts
.
For Windows, config file is located in where the mpv.exe
executable is.
D
): key binding to toggle activation on the flyyes
): whether to activate at launch/tmp/mpvsocket
):
use_static_socket_path=yes
: set the full path to the static IPC socket pathuse_static_socket_path=no
: set the full path to the directory placing the IPC socket with a dynamic nameyes
): whether to use static IPC socket path or dynamic name in the path0
): time in seconds before hiding the presence once player is paused (0
is off)dynamic name is in the format of mpv-discord-1234
where 1234
will be the PID of the mpv instance.
Go to Discord Developer Portal, create an application and upload the following art assets with their corresponding asset keys:
mpv
: large image (app logo)play
: small image used when playingpause
: small image used when pausedloop
: small image used when playing and loopingbuffer
: small image used when bufferingThen, set the client_id
option in the config to the application ID.
You can also find the already provided client ids and their image assets here.
Using mpv-discord with IINA, a media player based on mpv.
Client ID: 834116350884577280
This plugin consists of 3 files.
discord.lua
-- mpv user scriptdiscord.conf
-- configuration filempv-discord
binary -- backend binary of the pluginWhen mpv launches, mpv will run all the user scripts including discord.lua
.
Then discord.lua
will read the configurations from discord.conf
and do two things:
(1) create an input-ipc-server
socket of mpv. (2) start a subprocess of the mpv-discord
binary.
Then, mpv-discord
will interact with the input-ipc-server
to get the player state and properties of mpv.
Finally, mpv-discord
will update Discord's Rich Presence with the properties through Discord's IPC socket.
If you have any ideas on how to improve this project or if you think there is a lack of features, feel free to open an issue, or even better, open a pull request. All contributions are welcome!
~ crafted with β₯οΈ by tnychn ~
MIT Β© 2024 Tony Chan