* Create pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Do not show playback speed change notifications in OSD * Upbuild and remove debug message * Strip quotation marks from per-player arguments (#226) * Delete unmaintained changelog. Removing old and unmaintained changelog file. * Add more MPC-HC paths (#398) * Migrate from AppVeyor to GitHub Actions (#399) * Disable AppVeyor * Actions: disable other jobs * Actions: implement windows job * Use requirements * Typo in version parser * Replace type nul for PowerShell * Change Python version to 3.7 * buildPy2exe: exclude tcl and tkinter * buildPy2exe: rename zip archive to include extension * Actions for Windows: build on Python 3.8 * Re-enable build flow for other platforms * Remove AppVeyor configuration file * Add manpages courtesy of Bruno Kleinert #387 * Install the manpages. * Separate debian package artifacts Make it so that server and full packages are separate artifacts in CI rather than single zip containing both. * Fix server deb deployment name in CI workflow * Fix package filename for debs * Update mpv json ipc vendor code Update to version 1.1.13 to hopefully address #322 fully. * Update setup.py for vendor code of mpv jsonipc * Build AppImage on Ubuntu 18.04 Temporary workaround for AppImage built on Ubuntu 20.04 crashing with segmentation fault. #401 * Update python_mpv_jsonipc to 1.1.13 keeping our changes * Remove the AppVeyor badge as we stopped using it. * Improve playlist advancement for VLC and mpv (#334) (#397) * Advance playlist on end of file in mpv and VLC * Update duration for streams to fix playlist advancement (#334) * Add notice for Python in third party collection file (#404) * Add notice for Python in third party collection file * Convert third party notices file to plain text * Adapt codebase to third party notices format change * Mark as beta 1 (release 97) * Mark as 1.6.8 final (build 98) * Update pt_BR translation, fix typo (#422) * Bundle libgthread-2.0.so.0 into AppImage * add libxcb manually * Add missing libxcb-util to build environment * Enable GitHub Actions on pull requests * Bundle libxcb1 into AppImage to fix #380 * Send 32-bit/64-bit context when updating * Upver to 1.6.9 release 99 * Remove references to IRC (#430) * Add reference to GitHub discussions * Update issue templates * Revert "Merge branch 'master' into master" This reverts commit 173007e9b17c3cf7d658e12f1220bb1a3af743e6, reversing changes made to 6105da870a4560c47ee54d7de21f2e1ccec1bcef. Co-authored-by: Daniel Wróbel <wrobel.dan@gmail.com> Co-authored-by: Alberto Sottile <alby128@gmail.com> Co-authored-by: Daniel Wróbel <1662391+daniel-123@users.noreply.github.com> Co-authored-by: Atílio Antônio <atiliodadalto@hotmail.com> Co-authored-by: Teoh Han Hui <teohhanhui@gmail.com> Co-authored-by: Alberto Sottile <asottile@gmail.com> Co-authored-by: Assistant <assistant.moetron@gmail.com>
Python MPV JSONIPC
This implements an interface similar to python-mpv, but it uses the JSON IPC protocol instead of the C API. This means
you can control external instances of MPV including players like SMPlayer, and it can use MPV players that are prebuilt
instead of needing libmpv1. It may also be more resistant to crashes such as Segmentation Faults, but since it isn't
directly communicating with MPV via the C API the performance will be worse.
Please note that this only implements the subset of python-mpv that is used by plex-mpv-shim and
jellyfin-mpv-shim. Other functionality has not been implemented.
Installation
sudo pip3 install python-mpv-jsonipc
Basic usage
Create an instance of MPV. You can use an already running MPV or have the library start a managed copy of MPV. Command arguments can be specified when initializing MPV if you are starting a managed copy of MPV.
Please also see the API Documentation.
from python_mpv_jsonipc import MPV
# Uses MPV that is in the PATH.
mpv = MPV()
# Use MPV that is running and connected to /tmp/mpv-socket.
mpv = MPV(start_mpv=False, ipc_socket="/tmp/mpv-socket")
# Uses MPV that is found at /path/to/mpv.
mpv = MPV(mpv_location="/path/to/mpv")
# After you have an MPV, you can read and set (if applicable) properties.
mpv.volume # 100.0 by default
mpv.volume = 20
# You can also send commands.
mpv.command_name(arg1, arg2)
# Bind to key press events with a decorator
@mpv.on_key_press("space")
def space_handler():
pass
# You can also observe and wait for properties.
@mpv.property_observer("eof-reached")
def handle_eof(name, value):
pass
# Or simply wait for the value to change once.
mpv.wait_for_property("duration")