{ "info": { "author": "Hurlenko", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython" ], "description": "# folderplay\n\n[![PyPI version](https://img.shields.io/pypi/v/folderplay.svg)](https://pypi.python.org/pypi/folderplay)\n[![Latest Github release](https://img.shields.io/github/release/hurlenko/folderplay.svg)](https://github.com/hurlenko/folderplay/releases/latest)\n![Python](https://img.shields.io/badge/python-v3.5+-blue.svg)\n[![Build Status](https://dev.azure.com/hurlenko/folderplay/_apis/build/status/hurlenko.folderplay?branchName=master)](https://dev.azure.com/hurlenko/folderplay/_build/latest?definitionId=1&branchName=master)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n## **folderplay** is a small tool that helps you remember watched tv episodes :sparkles:\n\n

\n \n

\n\nIts goal is to resume playback from the episode you left off with a single button press. It doesn't use any integrated players so you can still use your favourite one.\n\n## Advaced view\n\n![image](https://user-images.githubusercontent.com/18035960/64080371-0e954800-ccfc-11e9-965f-7910966da277.png)\n\n## \ud83d\udea9 Table of Contents\n\n- [Features](#-features)\n- [How it works](#-how-it-works)\n- [Installation](#-installation)\n- [Usage](#-usage)\n- [Building](#-building)\n- [Command line interface](#%EF%B8%8F-command-line-interface)\n- [Credits](#credits)\n\n## \ud83c\udfa8 Features\n\n- Continue playback with a single button press\n- Play with your favoure video player\n- Filter and search your playlist\n- Displays general media info\n- Supports basic [command line interface](#%EF%B8%8F-command-line-interface)\n- Minimalistic GUI\n- Supports multiple color styles\n- Supports multiple icon sets\n- No dependencies\n- No installation required - the whole program is a single executable file\n- Cross platform - supports all three major platforms (Windows, MacOS, Linux) thanks to `python` and `pyqt`\n\n## \u2699\ufe0f How it works\n\n`folderplay` scans for known extensions in the current working directory and all subdirectories. It marks the files as `watched` or `unwatched` by checking for a specific prefix in the filename. It also searches for a list of predefined players for current operating systems. If the application can't find one, it will throw a warning and will ask you to select the player. When you hit the play button `folderplay` spawns a new process with the selected player, freezes the UI and waits for the process to exit. When the playes process exits `folderplay` will rename the media file by prepending a prefix to its filename to mark it as watched.\n\n## \ud83d\udcbe Installation\n\nPrebuilt binaries for macOS and Windows can be downloaded from the [GitHub releases page](https://github.com/hurlenko/folderplay/releases).\n\n:warning: Note that the binaries were not thoroughly tested across different platforms and might not work correctly.\n\nThe recommended installation method is using `pip`:\n\n```bash\npip install folderplay\n```\n\nIf you're on Linux, you have to additionally install `libmediainfo-dev`. For Debian-based systems it's as simple as running\n\n```bash\nsudo apt-get install libmediainfo-dev\n```\n\nAfter installation, the `fplay` command will be available. Check the [command line](%EF%B8%8F-command-line-interface) section for supported commands.\n\n## \ud83d\udcd9 Usage\n\nSimply drop the executable into the directory where your media resides and run it. The application will scan all directories and subdirectories for known extensions.\n\nBy default the app runs in `basic` view mode. You can toggle to the more advanced view by pressing the gear button. From there you can select the video player to use (`folderplay` will try to search for existing video players and will warn you on start up if it didn't find one).\n\nYou can filter your media list using the search form. The list also has supports context menu with some handy commands.\n\n## \ud83d\udd28 Building\n\nClone master branch or checkout a specific tag\n\n```bash\ngit clone https://github.com/hurlenko/folderplay.git\n```\n\nCreate new virtual environment inside of the `folderplay` directory\n\n```bash\npython3 -m venv venv\n\nsource venv/bin/activate # Linux / MacOs\n\nvenv\\Scripts\\activate # Windows\n```\n\nInstall dependencies\n\n```bash\npip install -r requirements.txt\n```\n\nNow either run the application\n\n```bash\npython -m folderplay\n```\n\nOr create an executable (will be save inside of the `dist` directory)\n\n```bash\npython -m PyInstaller folderplay.spec\n```\n\n## \ud83d\udda5\ufe0f Command line interface\n\nCurrently `fplay` supports these commands\n\n```bash\nUsage: fplay [OPTIONS] \n\nOptions:\n --version Show the version and exit.\n -p, --player Host player binary\n -s, --style Color style: dark, light, fusion, native\n -i, --icons Icon set: material, feather\n --help Show this message and exit.\n```\n\n## :octocat: Credits\n\nWork from these open source projects is used by this application\n\n- [qtmodern](https://github.com/gmarull/qtmodern) - PyQt/PySide Widgets Modern User Interface\n- [feathericons](https://feathericons.com/) - Simply beautiful open source icons\n- [material icons](https://material.io/resources/icons/) - Material icons\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/hurlenko/folderplay", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "folderplay", "package_url": "https://pypi.org/project/folderplay/", "platform": "", "project_url": "https://pypi.org/project/folderplay/", "project_urls": { "Homepage": "https://github.com/hurlenko/folderplay", "Source": "https://github.com/hurlenko/folderplay" }, "release_url": "https://pypi.org/project/folderplay/0.3.0/", "requires_dist": [ "Click (==7.0)", "pymediainfo (==4.0)", "PyQt5 (==5.13.0)" ], "requires_python": ">=3.5", "summary": "Remember watched tv episodes, resume from where you left off", "version": "0.3.0" }, "last_serial": 5767811, "releases": { "0.1.5": [ { "comment_text": "", "digests": { "md5": "5ca4eb04bdae09774c2871ec1f7e7921", "sha256": "e50d98579b2488bfba979d999dc4f4209a49cf051fe29c0cdddfc890bb690e4c" }, "downloads": -1, "filename": "folderplay-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "5ca4eb04bdae09774c2871ec1f7e7921", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 127827, "upload_time": "2019-08-26T06:44:00", "url": "https://files.pythonhosted.org/packages/38/bf/791d969a895ab68e0e1fc5aad8e22c02e11adb6ac013f0644a0af2a2fffb/folderplay-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8411818d2ca660c2d326613998d0e6d6", "sha256": "42787a722984f2756e0923aee031d0443f60020af34bd4eba97c8adcc6173735" }, "downloads": -1, "filename": "folderplay-0.1.5.tar.gz", "has_sig": false, "md5_digest": "8411818d2ca660c2d326613998d0e6d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 123347, "upload_time": "2019-08-26T06:44:04", "url": "https://files.pythonhosted.org/packages/b6/68/59a6970aed0b7dc75e3c889cc58c3201029d21a56ad1e825bba104ea59f9/folderplay-0.1.5.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "116e437144c37559ab6bc966956dbdb2", "sha256": "e69f799e720ef4e0131f26586e7f5433db4f75d53f349245f35ba2a5f65d9aff" }, "downloads": -1, "filename": "folderplay-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "116e437144c37559ab6bc966956dbdb2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 125976, "upload_time": "2019-08-29T10:18:33", "url": "https://files.pythonhosted.org/packages/cc/3b/bb1d27c0f4407fb4016c8f75a0cce2daadda6d69231ff42a788eb5108d33/folderplay-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fe492f7fac53c6fd9935cf75d69bfc2", "sha256": "7b73552b7b327927a7d92845938e557c23e97c235f436c141d118a6f345eed1f" }, "downloads": -1, "filename": "folderplay-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0fe492f7fac53c6fd9935cf75d69bfc2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 122422, "upload_time": "2019-08-29T10:18:35", "url": "https://files.pythonhosted.org/packages/5e/67/d1b10a43802dbae2e5fba3768a942eda8a46b4e1c158aed62d5072e9ff3f/folderplay-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "979b45d97d220ec61234d3f1224f9941", "sha256": "3000c38d3e3fc23b787911011127a3818807b27fa7c57810f3f6d550927c1316" }, "downloads": -1, "filename": "folderplay-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "979b45d97d220ec61234d3f1224f9941", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 132366, "upload_time": "2019-08-29T11:43:04", "url": "https://files.pythonhosted.org/packages/59/f6/fa1083d20c198446b4751563e5a3b01b9789bb11369b17bc7992bb9edd20/folderplay-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b360c1867de514a06242a5b2c6a6cbf", "sha256": "e9d8571e9921d0b14b1097f25cc1680a8521a622e0a30fd658a1a722e5c2b43c" }, "downloads": -1, "filename": "folderplay-0.2.1.tar.gz", "has_sig": false, "md5_digest": "4b360c1867de514a06242a5b2c6a6cbf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 125869, "upload_time": "2019-08-29T11:43:06", "url": "https://files.pythonhosted.org/packages/4c/0e/e952f6df9569428192ccdd48dd0683cef583de26aa7595aadfbe8444c8b1/folderplay-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b5bda7750ed7ae45db0416d21e04d39e", "sha256": "604fa25a49688ce4cb17dae6ef962f04356cb08aa7df4957e922932a6aba6194" }, "downloads": -1, "filename": "folderplay-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b5bda7750ed7ae45db0416d21e04d39e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 138157, "upload_time": "2019-09-01T19:26:43", "url": "https://files.pythonhosted.org/packages/cb/3e/9e06dd3184fcad75182edc0b3a92b71cad6c571c0a38566bdfdc56674a27/folderplay-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5418bb83ef736ced0cade0d50985f93b", "sha256": "c11cf49cbdb467ef7fc2266807a0ff4222b5d1271920521103d5351960a93d8e" }, "downloads": -1, "filename": "folderplay-0.3.0.tar.gz", "has_sig": false, "md5_digest": "5418bb83ef736ced0cade0d50985f93b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 126358, "upload_time": "2019-09-01T19:26:45", "url": "https://files.pythonhosted.org/packages/8a/d3/c7dd39fbe900fc2b9ddca85d595de10613f743c6966fbac0fbc8cb7ec358/folderplay-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b5bda7750ed7ae45db0416d21e04d39e", "sha256": "604fa25a49688ce4cb17dae6ef962f04356cb08aa7df4957e922932a6aba6194" }, "downloads": -1, "filename": "folderplay-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b5bda7750ed7ae45db0416d21e04d39e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 138157, "upload_time": "2019-09-01T19:26:43", "url": "https://files.pythonhosted.org/packages/cb/3e/9e06dd3184fcad75182edc0b3a92b71cad6c571c0a38566bdfdc56674a27/folderplay-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5418bb83ef736ced0cade0d50985f93b", "sha256": "c11cf49cbdb467ef7fc2266807a0ff4222b5d1271920521103d5351960a93d8e" }, "downloads": -1, "filename": "folderplay-0.3.0.tar.gz", "has_sig": false, "md5_digest": "5418bb83ef736ced0cade0d50985f93b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 126358, "upload_time": "2019-09-01T19:26:45", "url": "https://files.pythonhosted.org/packages/8a/d3/c7dd39fbe900fc2b9ddca85d595de10613f743c6966fbac0fbc8cb7ec358/folderplay-0.3.0.tar.gz" } ] }