plex-fuse


Nameplex-fuse JSON
Version 0.7.0 PyPI version JSON
download
home_pageNone
SummaryPlex FUSE Filesystem - Mount Remote Plex Media Server contents as local filesystem
upload_time2024-04-28 18:14:44
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseBSD 3-Clause License Copyright (c) 2023-2024, Elan Ruusamäe Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
keywords fuse filesystem fs plex fuse-filesystem user-space
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Plex FUSE Filesystem

An attempt to create fuse filesystem to access Plex Media Server files as local files.

## Development

This project is in very early development.

Currently implemented:
- [x] Listing of root directory
- [x] Connecting to PMS via python-plexapi
- [x] Listing of library types in root directory
- [x] Listing library titles in library type sub-directory
- [x] Listing titles from a library
- [x] Listing of Movie files
- [x] Report file size for media part
- [x] Report accurate nlink for directories
- [x] Memoize readdir and getattr calls
- [x] Fix "/" in directory names
- [x] Download movie files to cache, serve read operations from cache
- [x] Add `-o cache_path` option
- [x] Test that Plex Media Server allows requesting file by range
- [x] Use chunked read for file cache
- [x] Listing of Show seasons
- [x] Listing of Season episodes
- [x] Listing of Episode files
- [x] Downloading episode files
- [x] Unicode normalize titles
- [x] Support .plexmatch for Movies
- [x] Support timestamps for Movies
- [x] Support .plexmatch for Show directories
- [x] Add movie timestamps to .plexmatch files
- [ ] Add timestamps to directories
- [x] Add subtitle files for Movies
- [x] Add subtitle files for Episodes
- [x] Cache PlexAPI requests using requests-cache (`-o http_cache`)
- [ ] Publish package to pypi
- [ ] Add docker volume driver
- [ ] Add cache management (max size?)
- [ ] Add cache purge option (special file?)
- [ ] Detect need to refresh cache (add event listener)
- [ ] Handling of "artist" library type
- [x] Add "status" and "reload" control channels

## Requirements

1. Python >= 3.11
1. fuse, macfuse, osxfuse or [fuse-t] depending on your OS

[fuse-t]: https://github.com/macos-fuse-t/fuse-t

## Installation

1. Install [pipx]
1. Install `plex-fuse`: `pipx install plex-fuse`

[pipx]: https://pipx.pypa.io/stable/installation

## Usage

1. Check [requirements](#requirements) and [installation](#installation)
1. Create [config.ini](#plex-config) for `python-plexapi`
1. Mount the configured PMS somewhere, i.e `plex-server`: `mkdir plex-server; plex-fuse plex-server -f`
1. Access the `plex-server` directory from another terminal
1. `umount` or `fusermount -u` the directory to remove the `plex-server` mount

## Plex Config

Create Plex [configuration] file:

```ini
# ~/.config/plexapi/config.ini

[auth]
server_baseurl = http://127.0.0.1:32400
server_token = XBHSMSJSDJ763JSm
```

[configuration]: https://python-plexapi.readthedocs.io/en/latest/configuration.html

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "plex-fuse",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "fuse, filesystem, fs, plex, fuse-filesystem, user-space",
    "author": null,
    "author_email": "Elan Ruusam\u00e4e <glen@pld-linux.org>",
    "download_url": "https://files.pythonhosted.org/packages/7a/63/904b09b4454271ce695bc4a684452628abe73d3abb1beb2ed7c377df66b5/plex_fuse-0.7.0.tar.gz",
    "platform": null,
    "description": "# Plex FUSE Filesystem\n\nAn attempt to create fuse filesystem to access Plex Media Server files as local files.\n\n## Development\n\nThis project is in very early development.\n\nCurrently implemented:\n- [x] Listing of root directory\n- [x] Connecting to PMS via python-plexapi\n- [x] Listing of library types in root directory\n- [x] Listing library titles in library type sub-directory\n- [x] Listing titles from a library\n- [x] Listing of Movie files\n- [x] Report file size for media part\n- [x] Report accurate nlink for directories\n- [x] Memoize readdir and getattr calls\n- [x] Fix \"/\" in directory names\n- [x] Download movie files to cache, serve read operations from cache\n- [x] Add `-o cache_path` option\n- [x] Test that Plex Media Server allows requesting file by range\n- [x] Use chunked read for file cache\n- [x] Listing of Show seasons\n- [x] Listing of Season episodes\n- [x] Listing of Episode files\n- [x] Downloading episode files\n- [x] Unicode normalize titles\n- [x] Support .plexmatch for Movies\n- [x] Support timestamps for Movies\n- [x] Support .plexmatch for Show directories\n- [x] Add movie timestamps to .plexmatch files\n- [ ] Add timestamps to directories\n- [x] Add subtitle files for Movies\n- [x] Add subtitle files for Episodes\n- [x] Cache PlexAPI requests using requests-cache (`-o http_cache`)\n- [ ] Publish package to pypi\n- [ ] Add docker volume driver\n- [ ] Add cache management (max size?)\n- [ ] Add cache purge option (special file?)\n- [ ] Detect need to refresh cache (add event listener)\n- [ ] Handling of \"artist\" library type\n- [x] Add \"status\" and \"reload\" control channels\n\n## Requirements\n\n1. Python >= 3.11\n1. fuse, macfuse, osxfuse or [fuse-t] depending on your OS\n\n[fuse-t]: https://github.com/macos-fuse-t/fuse-t\n\n## Installation\n\n1. Install [pipx]\n1. Install `plex-fuse`: `pipx install plex-fuse`\n\n[pipx]: https://pipx.pypa.io/stable/installation\n\n## Usage\n\n1. Check [requirements](#requirements) and [installation](#installation)\n1. Create [config.ini](#plex-config) for `python-plexapi`\n1. Mount the configured PMS somewhere, i.e `plex-server`: `mkdir plex-server; plex-fuse plex-server -f`\n1. Access the `plex-server` directory from another terminal\n1. `umount` or `fusermount -u` the directory to remove the `plex-server` mount\n\n## Plex Config\n\nCreate Plex [configuration] file:\n\n```ini\n# ~/.config/plexapi/config.ini\n\n[auth]\nserver_baseurl = http://127.0.0.1:32400\nserver_token = XBHSMSJSDJ763JSm\n```\n\n[configuration]: https://python-plexapi.readthedocs.io/en/latest/configuration.html\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License  Copyright (c) 2023-2024, Elan Ruusam\u00e4e  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
    "summary": "Plex FUSE Filesystem - Mount Remote Plex Media Server contents as local filesystem",
    "version": "0.7.0",
    "project_urls": {
        "Changelog": "https://github.com/glensc/plex-fuse/releases",
        "Documentation": "https://github.com/glensc/plex-fuse#plex-fuse-filesystem",
        "Homepage": "https://github.com/glensc/plex-fuse",
        "Issues": "https://github.com/glensc/plex-fuse/issues",
        "Repository": "https://github.com/glensc/plex-fuse"
    },
    "split_keywords": [
        "fuse",
        " filesystem",
        " fs",
        " plex",
        " fuse-filesystem",
        " user-space"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0263d0b06aecdcfd65521dfa194a850c839f43b219da65c074e12a7a60069bbe",
                "md5": "1bafa3987622b42c56922deff16669ee",
                "sha256": "bfb2bc6493ab205c69a1785f9f0d370f079c1c1ae746243be42afaa80662cc13"
            },
            "downloads": -1,
            "filename": "plex_fuse-0.7.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1bafa3987622b42c56922deff16669ee",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 27210,
            "upload_time": "2024-04-28T18:14:43",
            "upload_time_iso_8601": "2024-04-28T18:14:43.031566Z",
            "url": "https://files.pythonhosted.org/packages/02/63/d0b06aecdcfd65521dfa194a850c839f43b219da65c074e12a7a60069bbe/plex_fuse-0.7.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7a63904b09b4454271ce695bc4a684452628abe73d3abb1beb2ed7c377df66b5",
                "md5": "779155d3c5486c1f76a356ed2780962a",
                "sha256": "dbacb62a1067390109cbc4f52e13c330e920c6eb30849a5c1424d31f41436483"
            },
            "downloads": -1,
            "filename": "plex_fuse-0.7.0.tar.gz",
            "has_sig": false,
            "md5_digest": "779155d3c5486c1f76a356ed2780962a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 17924,
            "upload_time": "2024-04-28T18:14:44",
            "upload_time_iso_8601": "2024-04-28T18:14:44.748334Z",
            "url": "https://files.pythonhosted.org/packages/7a/63/904b09b4454271ce695bc4a684452628abe73d3abb1beb2ed7c377df66b5/plex_fuse-0.7.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-28 18:14:44",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "glensc",
    "github_project": "plex-fuse",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "plex-fuse"
}
        
Elapsed time: 0.24129s