{ "info": { "author": "Senan Kelly", "author_email": "senan@senan.xyz", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "

\n

beets based man-in-the-middle of your torrent client and music player

\n

\n\n
\n\n### installation\n\n $ pip install --user betanin\n\n
\n\n### usage\n\n $ betanin [--port=]\n\n
\n\n### docker\n###### image\n`docker pull sentriz/betanin` \n###### volumes\n`/root/.local/share/betanin/` for a persistent database \n`/root/.config/betanin/` for a persistent betanin config \n`/root/.config/beets/` for a persistent beets home (point this to your current beets home if you have one) \n`/music/` so beets can access your music \n`/downloads/` so beets can access your downloads \n###### compose\n```yml\nbetanin:\n image: sentriz/betanin\n ports:\n - 9393:9393\n restart: unless-stopped\n volumes:\n - ${DATA}/betanin/data:/root/.local/share/betanin/\n - ${DATA}/betanin/config:/root/.config/betanin/\n - ${DATA}/betanin/beets:/root/.config/beets/\n - ${MEDIA}/music:/music/\n - ${MEDIA}/downloads:/downloads/\n```\n\n
\n\n### transmission\n###### settings.json (example excerpt)\n```json\n...\n\"script-torrent-done-enabled\": true,\n\"script-torrent-done-filename\": \"/scripts/done\",\n...\n```\n###### done script\n```bash\n#!/bin/sh\n\n\ncurl \\\n --request POST \\\n --data-urlencode \"path=/downloads/complete/beets\" \\\n --data-urlencode \"name=$TR_TORRENT_NAME\" \\\n --user 'user:password' \\\n \"http://betanin:9393/api/torrents\"\n```\n###### docker compose (excerpt)\n```yaml\nvolumes:\n- ${DATA}/transmission/config:/config\n- ${DATA}/transmission/scripts:/scripts\n- ${MEDIA}/download:/downloads\n```\n\n
\n\n### developing\n###### working on the backend\nthere is not much else to do, write your code, `python -m betanin.entry_betanin`, kill it, write your code, etc.\nthe webserver will be available at *http://localhost:9393/*. the static frontend is served at `/`, and the api is served at `/api`. (there is a swagger ui there too)\nalso see `python -m betanin.entry_shell`. \nif you need to do a manual migration do `env FLASK_APP='betanin.application:create' flask db migrate --directory betanin_migrations/` (then upgrades are automatically done on betanin start)\n###### working on the frontend\nstart the backend with `python -m betanin.entry_betanin`, but don't use the static frontend served at *http://localhost:9393/*. Instead, in a new shell, do `npm --prefix betanin_client/ run serve` and use the frontend served at *http://localhost:8081/*. it will look for a backend listening on port 9393 locally. after that you can edit anything in `betanin_client/src`, it will be linted and automatically reflected in your web browser.\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/sentriz/betanin", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "betanin", "package_url": "https://pypi.org/project/betanin/", "platform": "", "project_url": "https://pypi.org/project/betanin/", "project_urls": { "Homepage": "https://github.com/sentriz/betanin" }, "release_url": "https://pypi.org/project/betanin/0.3.2/", "requires_dist": [ "Click (>=7.0)", "Flask-Cors (>=3.0.6)", "Flask-Migrate (>=2.3.0)", "Flask-SQLAlchemy (>=2.3.2)", "Flask-SocketIO (>=3.0.2)", "Flask (>=1.0.2)", "ItsDangerous", "Jinja2 (>=2.10)", "Mako (>=1.0.7)", "MarkupSafe (>=1.0)", "SQLAlchemy-Utils (>=0.33.6)", "SQLAlchemy (>=1.2.12)", "Werkzeug (>=0.14.1)", "alembic (>=1.0.1)", "aniso8601 (>=3.0.2)", "apprise (>=0.7.5)", "beets (==1.4.9)", "certifi (>=2018.10.15)", "chardet (>=3.0.4)", "flask-jwt-extended", "flask-restplus (>=0.12.1)", "gevent (>=1.3.7)", "greenlet (>=0.4.15)", "idna (>=2.7)", "jsonschema (>=2.6.0)", "loguru", "ptyprocess", "python-dateutil (>=2.7.3)", "python-editor (>=1.0.3)", "python-engineio (>=2.3.2)", "python-socketio (>=2.0.0)", "pytz (>=2018.5)", "pyxdg (>=0.26)", "requests (>=2.20.0)", "six (>=1.11.0)", "sqlalchemy-json (>=0.2.2)", "toml", "tzlocal (>=1.5.1)", "urllib3 (>=1.24)" ], "requires_python": "", "summary": "beets based mitm of your torrent client and music player", "version": "0.3.2" }, "last_serial": 5659422, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "0b854f3aae157f10c163d7f69538d371", "sha256": "892ab7d9678c060e88db40698d1e64ae196bc646c5e23329c021c56134be8fd6" }, "downloads": -1, "filename": "betanin-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0b854f3aae157f10c163d7f69538d371", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6036132, "upload_time": "2019-07-09T13:30:55", "url": "https://files.pythonhosted.org/packages/d1/70/521a77da27f9fc90f387e9d1e44fc195b310b119c6a9dc3fa0ff0e5d0514/betanin-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb50fc578788f7f891c540cb5f227cdd", "sha256": "5ab473d7f4abb6812eb3edafdbeb7d32d8f8939a8a7bcce9c6672ec57f38d3be" }, "downloads": -1, "filename": "betanin-0.1.1.tar.gz", "has_sig": false, "md5_digest": "cb50fc578788f7f891c540cb5f227cdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2560568, "upload_time": "2019-07-09T13:30:59", "url": "https://files.pythonhosted.org/packages/61/14/317225deb5021ba6d4563d72b32a52819b961bb8c50bf2f2a6be08928907/betanin-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "fb4f7ca1a998b45d9e74794046f29bee", "sha256": "1b3142487cbbcc537408aaac32167051ad5d526470f5b9e492c6d135eedde4a5" }, "downloads": -1, "filename": "betanin-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fb4f7ca1a998b45d9e74794046f29bee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6916766, "upload_time": "2019-07-10T19:14:20", "url": "https://files.pythonhosted.org/packages/0e/24/ea756b41107905a0aaa05c067861b8d3a34f184e82a0b316761b5cf2face/betanin-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a106b3cc990a6ec2515dac424562be21", "sha256": "de6fa47f387ae0d60bfbf79f7f614289f5ebc87269dcf0f203a96e215c3e20a8" }, "downloads": -1, "filename": "betanin-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a106b3cc990a6ec2515dac424562be21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2569488, "upload_time": "2019-07-10T19:14:28", "url": "https://files.pythonhosted.org/packages/f5/80/49e8ebe09c8f35fd52012bbf1fcd1124adf9a1f8886476391d47b2a436d8/betanin-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "15f24f2a80d9035ab07583eacc6f8a50", "sha256": "ff775290e8aba8645f9eda0612d10b2f98fa37f05c07a24eafc2114f1fb2a246" }, "downloads": -1, "filename": "betanin-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "15f24f2a80d9035ab07583eacc6f8a50", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6941334, "upload_time": "2019-07-12T16:33:19", "url": "https://files.pythonhosted.org/packages/d0/6f/11f58fde37104f0ab2ea104c7c229811bd64084ae1a0045f3dd8188cf796/betanin-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0860d2aa5026408bbbb10202cfd222e2", "sha256": "ce8c95e560dd87d1d3b92258ef59f4f60f962c139d39dcb60214c65748cf8b7e" }, "downloads": -1, "filename": "betanin-0.2.1.tar.gz", "has_sig": false, "md5_digest": "0860d2aa5026408bbbb10202cfd222e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2572170, "upload_time": "2019-07-12T16:33:24", "url": "https://files.pythonhosted.org/packages/58/70/c904469971492e8499c75574bfe80594931e91d3ac208cd2443f766812d3/betanin-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "da1e56b10315def465c786d5b5f86a69", "sha256": "f3600f9aac132ad976b019baeb3ffe134bb817bd2bce6738adb04a44bc785a1a" }, "downloads": -1, "filename": "betanin-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "da1e56b10315def465c786d5b5f86a69", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2640999, "upload_time": "2019-07-12T16:52:52", "url": "https://files.pythonhosted.org/packages/ae/d0/f4ccd38ae81de8e9b9c22a1e8c3969834affad86141524f7c2758b71c3c4/betanin-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af0994e8b7065b677db3dee0fd2d6263", "sha256": "d9b005b6d579d59d38d35e178f7e1bffe32ab6db0f077bae592e01d7b00dfa9d" }, "downloads": -1, "filename": "betanin-0.2.2.tar.gz", "has_sig": false, "md5_digest": "af0994e8b7065b677db3dee0fd2d6263", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2572178, "upload_time": "2019-07-12T16:52:54", "url": "https://files.pythonhosted.org/packages/1d/01/4390742cf7e5d4b91d04cb32b0a506f9a5b81f4152c75f8cf97f5564e8de/betanin-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "be2487aed01c7f93b277f3f32eca475a", "sha256": "56dbadba4da9ac27fcac2a699da7d9d9200c531f257b828fe324605effcec95d" }, "downloads": -1, "filename": "betanin-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "be2487aed01c7f93b277f3f32eca475a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2641057, "upload_time": "2019-07-18T15:06:27", "url": "https://files.pythonhosted.org/packages/1b/3d/0888ad9afddd569215725ba865b6119bf632692766edd6662c6a513fd260/betanin-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "546ca69d4f615be6c8dc4f8842e5d9f2", "sha256": "178df91767644be8a8bac4d02546a44e03f31e5c308e9f3d24fcd5b0035e9c05" }, "downloads": -1, "filename": "betanin-0.2.3.tar.gz", "has_sig": false, "md5_digest": "546ca69d4f615be6c8dc4f8842e5d9f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2572250, "upload_time": "2019-07-18T15:06:33", "url": "https://files.pythonhosted.org/packages/5a/d5/eeb3d8e5071991cfba024a33283892dc142dc74e78fed2e8e93c1b8107d1/betanin-0.2.3.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "46672a991064e0234f9a8d5ea82bdec2", "sha256": "c188698fb68bbe17f0fb91094b23dc8842cd7c3546ebb3c92252e3dcbafdc003" }, "downloads": -1, "filename": "betanin-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "46672a991064e0234f9a8d5ea82bdec2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2614806, "upload_time": "2019-08-10T13:07:21", "url": "https://files.pythonhosted.org/packages/00/5d/0942603e76bf4eef883e60ad82dbb736454c9d09a9897a89d293d1cf399d/betanin-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9862d3c375573b5d0ed49431109be95", "sha256": "fe80a1c6835595026bb76099a43c1105de19eed38447bbf9627a321ed0728c13" }, "downloads": -1, "filename": "betanin-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c9862d3c375573b5d0ed49431109be95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2568499, "upload_time": "2019-08-10T13:07:27", "url": "https://files.pythonhosted.org/packages/6f/0c/709c0f38c1275a962697ce8f29bdf600b2cfa40e396f5589454d193cb8a1/betanin-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "46672a991064e0234f9a8d5ea82bdec2", "sha256": "c188698fb68bbe17f0fb91094b23dc8842cd7c3546ebb3c92252e3dcbafdc003" }, "downloads": -1, "filename": "betanin-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "46672a991064e0234f9a8d5ea82bdec2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2614806, "upload_time": "2019-08-10T13:07:21", "url": "https://files.pythonhosted.org/packages/00/5d/0942603e76bf4eef883e60ad82dbb736454c9d09a9897a89d293d1cf399d/betanin-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9862d3c375573b5d0ed49431109be95", "sha256": "fe80a1c6835595026bb76099a43c1105de19eed38447bbf9627a321ed0728c13" }, "downloads": -1, "filename": "betanin-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c9862d3c375573b5d0ed49431109be95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2568499, "upload_time": "2019-08-10T13:07:27", "url": "https://files.pythonhosted.org/packages/6f/0c/709c0f38c1275a962697ce8f29bdf600b2cfa40e396f5589454d193cb8a1/betanin-0.3.2.tar.gz" } ] }