{ "info": { "author": "qDot", "author_email": "kyle@machul.is", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: System :: Hardware :: Hardware Drivers" ], "description": "buttshock-py\n============\n\nPython implementation of serial based control of the following devices:\n\n- Erostek ET-312 Electrostimulation Device\n- Erostek ET-232 Electrostimulation Device\n- Estim Systems 2B Electrostimulation Device\n\n.. start-badges\n\n.. list-table::\n :stub-columns: 1\n\n * - docs\n - |docs|\n * - tests\n - |travis| |coverage| |health|\n * - package\n - |license| |version| |pyversion|\n\n.. |docs| image:: https://readthedocs.org/projects/buttshock-py/badge/?version=latest\n :target: http://buttshock-py.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. |travis| image:: https://img.shields.io/travis/metafetish/buttplug-py/master.svg?label=build\n :target: https://travis-ci.org/metafetish/buttshock-py\n :alt: Travis CI build status\n\n.. |health| image:: https://codeclimate.com/github/metafetish/buttshock-py/badges/gpa.svg\n :target: https://codeclimate.com/github/metafetish/buttshock-py\n :alt: Code coverage\n\n.. |coverage| image:: https://codeclimate.com/github/metafetish/buttshock-py/badges/coverage.svg\n :target: https://codeclimate.com/github/metafetish/buttshock-py/coverage\n :alt: Code health\n\n.. |license| image:: https://img.shields.io/pypi/l/buttshock.svg\n :target: https://pypi.python.org/pypi/buttshock/\n :alt: Latest PyPI version\n\n.. |version| image:: https://img.shields.io/pypi/v/buttshock.svg\n :target: https://pypi.python.org/pypi/buttshock/\n :alt: Latest PyPI version\n\n.. |pyversion| image:: https://img.shields.io/pypi/pyversions/buttshock.svg\n :target: https://pypi.python.org/pypi/buttshock/\n :alt: Latest PyPI version\n\n\n.. end-badges\n\nUsing pyserial 3.1.1 (thought may work with pyserial 2.6+, but untested)\n\nButtshock Project Goals\n-----------------------\n\nIf you're going to shock yourself in the butt (or other places) for\nsexual pleasure, don't you want to be able to know exactly what and\nhow you're doing it? Even if you can't understand it, wouldn't it be\nnice for people that do to have access to the knowledge and data they\nneed to make sure things are safe? Why is the best encryption open\nsource, but electrostim toys are closed?\n\nThe Buttshock project exists to reverse engineer and document\neletrostim devices so that any developer that wants to control their\ndevices can, via their own code.\n\nSome of the goals of this project include:\n\n- Documenting the communications protocols (serial or otherwise)\n- Reverse engineering the firmware (where possible)\n- Mapping the circuit boards and creating schematics\n\nInstallation\n------------\n\nTo install:\n\n.. code:: shell\n\n $ pip install buttshock --upgrade\n\nPackage is also available on PyPi at http://pypi.python.org/pypi/buttshock\n\nPython Implementation Details\n-----------------------------\n\nThis is a python implementation of the RS-232 control protocol for the\nErosTek ET-312 electrostimulation box.\n\nDocumentation of the link cable, protocol, and other information is at:\n\nhttps://buttshock.com/doc/et312\n\nThis library was developed and tested using a ET-312B running v1.6\nfirmware. The ET-232 and 2B libraries are untested, but please let us\nknow if you've used them and they do/don't work!\n\nRequirements\n------------\n\nbuttshock-py requires the pyserial library if you want to actually\nconnect via serial. However, it can pass packets for each box over\nwhatever medium you like.\n\nRepo Contents\n-------------\n\nThis repo contains the following:\n\n- src - Source code for the library\n- examples - Example code that uses the library\n\nLicense\n-------\n\ntl;dr: BSD 3-Clause license\n\nCopyright (c) 2016, Buttshock Project\n\nSee LICENSE file for full text.\n\nVersions\n========\n\n0.2.0 (2016-07-05)\n------------------\n\n- Change module layout to plan for new hardware implementations\n- Add documentation tree\n- More tests \n\n0.1.2 (2016-07-05)\n------------------\n\n- Fixed serial initialization issue\n\n0.1.1 (2016-07-04)\n------------------\n\n- CI/automation changes\n\n0.1.0 (2016-07-04)\n------------------\n\n- Initial Release\n- Basic ET-312 functionality\n\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "http://pypi.python.org/packages/source/b/buttshock", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/metafetish/buttshock-py", "keywords": "estim,buttshock,teledildonics,electrostim", "license": "BSD License", "maintainer": "", "maintainer_email": "", "name": "buttshock", "package_url": "https://pypi.org/project/buttshock/", "platform": "", "project_url": "https://pypi.org/project/buttshock/", "project_urls": { "Download": "http://pypi.python.org/packages/source/b/buttshock", "Homepage": "http://github.com/metafetish/buttshock-py" }, "release_url": "https://pypi.org/project/buttshock/0.2.1/", "requires_dist": null, "requires_python": "", "summary": "Python Libraries for Estim Unit (ErosTek ET312, Erostek ET232, Estim Systems 2B) Control", "version": "0.2.1" }, "last_serial": 2208668, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1375a69f7d371ffdd4db7c2dceb2cbe6", "sha256": "2aee9bc0080b03682ba38ec31fada1660c619696c4173c8430ba088e6660a79f" }, "downloads": -1, "filename": "buttshock-0.1.0.tar.gz", "has_sig": true, "md5_digest": "1375a69f7d371ffdd4db7c2dceb2cbe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5157, "upload_time": "2016-07-05T05:20:47", "url": "https://files.pythonhosted.org/packages/e0/93/b4d1762fba385f325fa5de5d77d2d249240120cbb2acfc9d211a1a2b93d4/buttshock-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "638de97ecfe0655f7add6a5bede17f7a", "sha256": "1136e63445758fbeace4b053003c9813b69621033dc287838801cd1dee9e15c0" }, "downloads": -1, "filename": "buttshock-0.1.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "638de97ecfe0655f7add6a5bede17f7a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7941, "upload_time": "2016-07-05T06:14:54", "url": "https://files.pythonhosted.org/packages/ee/2d/853cd6ade0a4d83d41f9fdbe236f07afdd4ebba76e5a4c1fadc28874d025/buttshock-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e64955b63bb949f9510fcf76c939537f", "sha256": "f3cebfd9023e98c0bfe026d400be7b63edcc9d64ef3db00951bd598f3505b5d4" }, "downloads": -1, "filename": "buttshock-0.1.1.tar.gz", "has_sig": true, "md5_digest": "e64955b63bb949f9510fcf76c939537f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7981, "upload_time": "2016-07-05T06:15:10", "url": "https://files.pythonhosted.org/packages/d9/d8/d67af4cda3144575d66eac8a1575631575daf52c7a4f988d816448f907cc/buttshock-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "db69d8313f7b95582dfd663f29655191", "sha256": "5d03d7db8e190fb12797157e22c82d29ada6bb081f72caa9c90bedbcca082637" }, "downloads": -1, "filename": "buttshock-0.1.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "db69d8313f7b95582dfd663f29655191", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7820, "upload_time": "2016-07-05T16:51:21", "url": "https://files.pythonhosted.org/packages/29/ba/cd05dcc3ef6d19756a03dda445f013c39ce2a32592f156a72215b88bf35b/buttshock-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76f09dd45277dd702b6c9990a8656021", "sha256": "c99355098fc4f5849214805a20482c7ef5b0ab386223b84058ec1851fd124163" }, "downloads": -1, "filename": "buttshock-0.1.2.tar.gz", "has_sig": true, "md5_digest": "76f09dd45277dd702b6c9990a8656021", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8017, "upload_time": "2016-07-05T16:51:23", "url": "https://files.pythonhosted.org/packages/7e/94/5946741b2d49a3eed770e1898cbfec496f7db52e94c045e0a78ff18c8dae/buttshock-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "690ac8b0c04ffe96c14305eed8b9c774", "sha256": "1cb519a3a5f8e3880455d53146f84f155429fadd37f76be53b0f304c83ad3d83" }, "downloads": -1, "filename": "buttshock-0.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "690ac8b0c04ffe96c14305eed8b9c774", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5769, "upload_time": "2016-07-06T06:00:05", "url": "https://files.pythonhosted.org/packages/da/c2/ed12475747e5f147132bcc1b7434712b13e4017073afd733cb79b634f2e4/buttshock-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eea33b86877bbe2b3d924079528a033b", "sha256": "d2a87c5e4ce08e7d473b7f027e0bbb08c487ea22a9a8b15381f56470683622ec" }, "downloads": -1, "filename": "buttshock-0.2.0.tar.gz", "has_sig": true, "md5_digest": "eea33b86877bbe2b3d924079528a033b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8747, "upload_time": "2016-07-06T06:00:08", "url": "https://files.pythonhosted.org/packages/26/92/d3add64eaafd1986512b05bb664060fe947ee992361b2935fb00ff740d43/buttshock-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "94f7038c8a62445a77ecfa10a17311e6", "sha256": "49fd582e50797c6c5d7c508b6fb913b35f7b84151e8ff1c2d7ceaf9d7dd1ce1e" }, "downloads": -1, "filename": "buttshock-0.2.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "94f7038c8a62445a77ecfa10a17311e6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11447, "upload_time": "2016-07-07T19:39:41", "url": "https://files.pythonhosted.org/packages/b6/87/018559e371018f25df3baecfbd0c79f685e5a3428d7e12c51ad8a1e0f48f/buttshock-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8155ffb723f6958e7558365afdc1a712", "sha256": "a8d56950a1a2bf8d692d3ae8203fba371a240646bc48ebb3673c3b10c9216803" }, "downloads": -1, "filename": "buttshock-0.2.1.tar.gz", "has_sig": true, "md5_digest": "8155ffb723f6958e7558365afdc1a712", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8873, "upload_time": "2016-07-07T19:39:43", "url": "https://files.pythonhosted.org/packages/85/55/418b6e66a08bd08341d16feec9c9c994e74f67955df0a5c60e8b8dc3e493/buttshock-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "94f7038c8a62445a77ecfa10a17311e6", "sha256": "49fd582e50797c6c5d7c508b6fb913b35f7b84151e8ff1c2d7ceaf9d7dd1ce1e" }, "downloads": -1, "filename": "buttshock-0.2.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "94f7038c8a62445a77ecfa10a17311e6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11447, "upload_time": "2016-07-07T19:39:41", "url": "https://files.pythonhosted.org/packages/b6/87/018559e371018f25df3baecfbd0c79f685e5a3428d7e12c51ad8a1e0f48f/buttshock-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8155ffb723f6958e7558365afdc1a712", "sha256": "a8d56950a1a2bf8d692d3ae8203fba371a240646bc48ebb3673c3b10c9216803" }, "downloads": -1, "filename": "buttshock-0.2.1.tar.gz", "has_sig": true, "md5_digest": "8155ffb723f6958e7558365afdc1a712", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8873, "upload_time": "2016-07-07T19:39:43", "url": "https://files.pythonhosted.org/packages/85/55/418b6e66a08bd08341d16feec9c9c994e74f67955df0a5c60e8b8dc3e493/buttshock-0.2.1.tar.gz" } ] }