{ "info": { "author": "Ian Walton", "author_email": "iwalton3@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Plex MPV Shim\n\nThis project allows casting of content from a Plex server to MPV, with\nminimal dependencies to prevent the project from becoming unmaintained.\nThis project is 1/17th the size of Plex Media Player and is all python.\n\nThe project supports the following:\n - Direct play of HEVC mkv files with subtitles.\n - Switching of subtitles and audio tracks.\n - Casting videos from the iOS mobile app and web app.\n - Seeking within a video using the seek bar and buttons.\n - Play, pause, and stop.\n - Using the built-in MPV controls. (OSD and keyboard shortcuts.)\n - Configuration of mpv via mpv.conf.\n - Connecting to shared servers.\n - Installing the package system-wide.\n - Skipping between videos.\n - Autoplaying the next video. (Can be disabled.)\n - Extra keyboard shortcuts: < > skip, u unwatched/stop, w watched/next\n - Playing multiple videos in a queue.\n - The app doesn't require or save any Plex passwords or tokens.\n - Executing commands before playing, after media end, and when stopped.\n - Configurable transcoding support based on remote server and bitrate.\n\nYou'll need [libmpv1](https://github.com/Kagami/mpv.js/blob/master/README.md#get-libmpv). To install `plex-mpv-shim`, run:\n```bash\nsudo pip3 install --upgrade plex-mpv-shim\n```\n\nThe current Debian package for `libmpv1` doesn't support the on-screen controller. If you'd like this, or need codecs that aren't packaged with Debian, you need to build mpv from source. Execute the following:\n```bash\nsudo apt install autoconf automake libtool libharfbuzz-dev libfreetype6-dev libfontconfig1-dev libx11-dev libxrandr-dev libvdpau-dev libva-dev mesa-common-dev libegl1-mesa-dev yasm libasound2-dev libpulse-dev libuchardet-dev zlib1g-dev libfribidi-dev git libgnutls28-dev libgl1-mesa-dev libsdl2-dev cmake wget python g++ libluajit-5.1-dev\ngit clone https://github.com/mpv-player/mpv-build.git\ncd mpv-build\necho --enable-libmpv-shared > mpv_options\n./rebuild -j4\nsudo ./install\nsudo ldconfig\n```\n\nAfter installing the project, you can run it with `plex-mpv-shim`.\nIf you'd like to run it without installing it, run `./run.py`.\n\nKeyboard Shortcuts:\n - Standard MPV shortcuts.\n - < > to skip episodes\n - q to close player\n - w to mark watched and skip\n - u to mark unwatched and quit\n\nYou can execute shell commands on media state using the config file:\n - media\\_ended\\_cmd - When all media has played.\n - pre\\_media\\_cmd - Before the player displays. (Will wait for finish.)\n - stop\\_cmd - After stopping the player.\n - idle\\_cmd - After no activity for idle\\_cmd\\_delay seconds.\n\nThis project is based on https://github.com/wnielson/omplex, which\nis available under the terms of the MIT License. The project was ported\nto python3, modified to use mpv as the player, and updated to allow all\nfeatures of the remote control api for video playback.\n\nUPDATE: It looks like we have a reversal on the Plex Media Player situation.\nThat being said, this project has proven to be interesting as a hackable\nPlex client. **I plan to maintain this client, although I may not work on\nadding new features unless someone requests them.**\n\n## Building on Windows\n\nThere is a prebuilt version for Windows in the releases section. When\nfollowing these directions, please take care to ensure both the python\nand libmpv libraries are either 64 or 32 bit. (Don't mismatch them.)\n\n1. Install [Python3](https://www.python.org/downloads/) with PATH enabled. Install [7zip](https://ninite.com/7zip/).\n2. After installing python3, open `cmd` as admin and run `pip install pyinstaller python-mpv requests`.\n3. Download [libmpv](https://sourceforge.net/projects/mpv-player-windows/files/libmpv/).\n4. Extract the `mpv-1.dll` from the file and move it to the `plex-mpv-shim` folder.\n5. Open a regular `cmd` prompt. Navigate to the `plex-mpv-shim` folder.\n6. Run `pyinstaller -cF --add-binary \"mpv-1.dll;.\" --icon media.ico run.py`.\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/iwalton3/plex-mpv-shim", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "plex-mpv-shim", "package_url": "https://pypi.org/project/plex-mpv-shim/", "platform": "", "project_url": "https://pypi.org/project/plex-mpv-shim/", "project_urls": { "Homepage": "https://github.com/iwalton3/plex-mpv-shim" }, "release_url": "https://pypi.org/project/plex-mpv-shim/1.1.1/", "requires_dist": [ "python-mpv", "requests" ], "requires_python": ">=3.6", "summary": "Cast media from Plex Mobile and Web apps to MPV. (Unofficial)", "version": "1.1.1" }, "last_serial": 5992820, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "3b64f17da843fccae53661cb98da9c07", "sha256": "a8ff04ce087a60fa35728c1e9a226928549499393643e7b51d8c53b3c2929818" }, "downloads": -1, "filename": "plex_mpv_shim-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3b64f17da843fccae53661cb98da9c07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24477, "upload_time": "2019-09-15T23:20:30", "url": "https://files.pythonhosted.org/packages/42/fd/73ba2cf16676c8e2eba155ceffbb43112f2bd6850be7c2e7ee6276bd8401/plex_mpv_shim-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89b37c6a746ec64ac2c31e9a124ac7c1", "sha256": "74ba5dc88bacfb035909ef5612a4ee930d9a14082ebe5064b854d2490c10f38a" }, "downloads": -1, "filename": "plex-mpv-shim-1.0.0.tar.gz", "has_sig": false, "md5_digest": "89b37c6a746ec64ac2c31e9a124ac7c1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 21363, "upload_time": "2019-09-15T23:20:33", "url": "https://files.pythonhosted.org/packages/20/33/acb814fa55bcf2fd5a0320ca5089de2c0ff7763647e98a00a7222d047604/plex-mpv-shim-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "8f9bcf0d3961a49fd1a65a639d5b413d", "sha256": "7a16851df7593856f03eb9d2c99d6f5fc63ea7d7cb162d612a3611ae0d564a6e" }, "downloads": -1, "filename": "plex_mpv_shim-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8f9bcf0d3961a49fd1a65a639d5b413d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24777, "upload_time": "2019-09-18T22:43:58", "url": "https://files.pythonhosted.org/packages/dd/cf/9bc07bd8f5da5c9d210da712887db6656beb92a1552fc12861c73fce50de/plex_mpv_shim-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "077cceed574857b1d5eb7a588296fcde", "sha256": "74b1eb116716e91f4a84d55f6db65dc90f0fe0e2968af1f34f205a84941dc169" }, "downloads": -1, "filename": "plex-mpv-shim-1.0.1.tar.gz", "has_sig": false, "md5_digest": "077cceed574857b1d5eb7a588296fcde", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 21941, "upload_time": "2019-09-18T22:43:59", "url": "https://files.pythonhosted.org/packages/65/bb/b6ca18561e277b5045fdb333c35eb187155ccccb9672b2351bc0f67a7741/plex-mpv-shim-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "23f54e5026ab8dd341a09d9f7adf5dd0", "sha256": "395951cb38bb0d48dfc3d453373d131f63fe7164e987996f5dc686c665cc9bdf" }, "downloads": -1, "filename": "plex_mpv_shim-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "23f54e5026ab8dd341a09d9f7adf5dd0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24844, "upload_time": "2019-09-19T01:15:35", "url": "https://files.pythonhosted.org/packages/55/14/9b7e3100129a1cdb2b60d831c81cf1ca75b2e8a519b5688cf242c5746f81/plex_mpv_shim-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9372a06c7b9bc95463c270d9496e79b4", "sha256": "3a880062c7562d4a8e4114e1333da251deaa8f0b61200af8f2a3f1868b480de2" }, "downloads": -1, "filename": "plex-mpv-shim-1.0.2.tar.gz", "has_sig": false, "md5_digest": "9372a06c7b9bc95463c270d9496e79b4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22072, "upload_time": "2019-09-19T01:15:37", "url": "https://files.pythonhosted.org/packages/d9/07/7e45df87a91151179e072ce88b2e604bcdf265e20430cc9d09194f9b030a/plex-mpv-shim-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "01dfa7d6e42a637e4a84e6ffdad7c7be", "sha256": "8fb74820c3f248f0f9d16cee55be69f86827cff26673423a4d84994435621142" }, "downloads": -1, "filename": "plex_mpv_shim-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "01dfa7d6e42a637e4a84e6ffdad7c7be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24918, "upload_time": "2019-10-17T21:18:05", "url": "https://files.pythonhosted.org/packages/d1/f8/36fa5d8667bfbde5ff1008382fc9a04a33f15b47c69f859a2cf63d835e46/plex_mpv_shim-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43a3044c132ebcc22f74c76972664219", "sha256": "cc295b974c3b9caef789a7aff612660532a1016a2234df77af202220d3fb7934" }, "downloads": -1, "filename": "plex-mpv-shim-1.1.0.tar.gz", "has_sig": false, "md5_digest": "43a3044c132ebcc22f74c76972664219", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22245, "upload_time": "2019-10-17T21:18:08", "url": "https://files.pythonhosted.org/packages/36/85/ab69c8a2518f58969750dd5f3f8ddadab4c0401d8e1c2e7173d22d48a931/plex-mpv-shim-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "882a087e98193ae05999642ef3c76791", "sha256": "fa26ab569ef27df6611c343b02548e5df891d8099228f20e6ed828788bb19453" }, "downloads": -1, "filename": "plex_mpv_shim-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "882a087e98193ae05999642ef3c76791", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24919, "upload_time": "2019-10-17T23:31:42", "url": "https://files.pythonhosted.org/packages/5a/fa/25703f1258b26a3a821e899b1b2e402ea33db0de1377ce740ec4f272e62d/plex_mpv_shim-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a5abe380b6aedfe4f77f533b18d305c", "sha256": "8fc2b61d63109b1cd320612aa5695587d46edae1c63004f106e50063a579f44f" }, "downloads": -1, "filename": "plex-mpv-shim-1.1.1.tar.gz", "has_sig": false, "md5_digest": "4a5abe380b6aedfe4f77f533b18d305c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22263, "upload_time": "2019-10-17T23:31:44", "url": "https://files.pythonhosted.org/packages/a3/69/3c268b9abb551b9c6b5baf4f87cec62dcd759ea2b3700b8872641654a7c3/plex-mpv-shim-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "882a087e98193ae05999642ef3c76791", "sha256": "fa26ab569ef27df6611c343b02548e5df891d8099228f20e6ed828788bb19453" }, "downloads": -1, "filename": "plex_mpv_shim-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "882a087e98193ae05999642ef3c76791", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24919, "upload_time": "2019-10-17T23:31:42", "url": "https://files.pythonhosted.org/packages/5a/fa/25703f1258b26a3a821e899b1b2e402ea33db0de1377ce740ec4f272e62d/plex_mpv_shim-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a5abe380b6aedfe4f77f533b18d305c", "sha256": "8fc2b61d63109b1cd320612aa5695587d46edae1c63004f106e50063a579f44f" }, "downloads": -1, "filename": "plex-mpv-shim-1.1.1.tar.gz", "has_sig": false, "md5_digest": "4a5abe380b6aedfe4f77f533b18d305c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22263, "upload_time": "2019-10-17T23:31:44", "url": "https://files.pythonhosted.org/packages/a3/69/3c268b9abb551b9c6b5baf4f87cec62dcd759ea2b3700b8872641654a7c3/plex-mpv-shim-1.1.1.tar.gz" } ] }