Skip to main content

No project description provided

Project description

PiShock for Python

Python PiShock Logo

The bestest Python PiShock API wrapper and CLI!

If you have no idea what PiShock is: I'm left wondering how you found this, but it's an ecosystem around using dog shock collars on humans (clearly the better way to use them!).

  • Pythonic, easy-to-use API.
  • Beautiful command-line interface to send shocks/vibrates/beeps, manage share codes, keep someone on their toes with random shocks, interfacing with the PiShock over USB/serial, upgrading firmware, and more!
  • Ticks the boxes: Support for mini-shocks, getting shocker info, and various other undocumented API features. If it's possible to do, this project probably supports it.
  • Local shocking: Drop-in support for the USB serial API instead of HTTP.
  • Battle-tested: I accidentally shocked my balls while developing so you don't have to (I wish this was a joke).
  • High-quality, modern codebase: Type annotations in Mypy strict mode, Linting/Formatting via Ruff, Automated tests with pytest.
  • Made with love: Decent test coverage, CI, nice documentation, …. — I love zappies and I love going the extra mile!
  • Almost official: While this is not an official pishock.com product, I'm the same person who developed the code running on your PiShock that's sending out the shocks.
  • Runs anywhere: Tested on CPython 3.8 to 3.12, on Windows, macOS and Linux. Possibly CircuitPython soon?

Using the CLI to send a vibrate (or a shock, if you dare):

$ pip install pishock
[...]

$ pishock init
👤 PiShock username (your own username): Zerario
🔑 PiShock API key (https://pishock.com/#/account): 964f1513-c76a-48cc-82d4-41e757d4eb04
✅ Credentials saved.

$ pishock code add my-shocker ABCDEF12345
✅  my-shocker    ABCDEF12345

$ pishock vibrate my-shocker --duration 1 --intensity 20
📳

Or via the Python API:

from pishock import PiShockAPI

username = "..."   # from pishock.com
api_key = "..."    # https://pishock.com/#/account
sharecode = "..."  # https://pishock.com/#/control (share button)

api = PiShockAPI(username, api_key)
shocker = api.shocker(sharecode)
shocker.vibrate(duration=1, intensity=10)

For serial USB usage:

from pishock import SerialAPI

shocker_id = 1234  # https://pishock.com/#/control (cogwheel button)

api = SerialAPI()
shocker = api.shocker(shocker_id)
shocker.vibrate(duration=1, intensity=10)

For more, see the documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pishock-1.0.0.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

pishock-1.0.0-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

Details for the file pishock-1.0.0.tar.gz.

File metadata

  • Download URL: pishock-1.0.0.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for pishock-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d4c1be4fdf4195d969feb4a1ab5e787f2074179f982d57d14dd69e11213f64fb
MD5 0ef85995c03b5069d6a96f491b85f5b2
BLAKE2b-256 dd5cf52fa97cb8f3c77cfd8bf6cbca5025d660c7e8b84a506209d3ea618c8bbc

See more details on using hashes here.

File details

Details for the file pishock-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pishock-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 27.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for pishock-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 60ffe54fd962e2c7944d41803586caad3445a66966e3f2924a580cf271d38c86
MD5 cf88b03195be30fab07b878d4d451cc7
BLAKE2b-256 7d92d476ff92f8b88896befa5d9ffb024b6ab8b1e6520abba7447b23edf2f953

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page