Skip to main content

A wrapper for the Discord Python Pixels API.

Project description

PyDisPix

A simple wrapper around Python Discord Pixels.

Requires Python 3.7+ (3.x where x >= 7).

Requires requests, pillow and matplotlib from pip.

Example

import pydispix

# Create a client with your token.
client = pydispix.Client('my-auth-token')

# Let pydispix find your token from `TOKEN` environmental variable
client = pydispix.Client()

# Download and save the canvas.
canvas = client.get_canvas()
canvas.save('canvas.png')

# And access pixels from it.
print(canvas[4, 10])

# Or just fetch a specific pixel.
print(client.get_pixel(4, 10))

# Draw a pixel.
client.put_pixel(50, 10, 'cyan')
client.put_pixel(1, 5, pydispix.Color.BLURPLE)
client.put_pixel(100, 4, '93FF00')
client.put_pixel(44, 0, 0xFF0000)
client.put_pixel(8, 54, (255, 255, 255))

We can also display the image with pillow

canvas = client.get_canvas()
canvas.show()

Or we can display with matplotlib to see it with coordinates

canvas = client.get_canvas()
canvas.mpl_show()

Auto-draw

Load an image:

from PIL import Image

im = Image.open('pretty.png')
ad = pydispix.AutoDrawer.load_image(client, (5, 40), im, scale=0.1)
ad.draw()

To prefer fixing existing pixels to placing new ones:

ad = pydispix.AutoDrawer.load(client, '''0
0
3
2
ff0000
00ff00
0000ff
ff0000
00ff00
0000ff''')
ad.draw()

Format of the drawing plan:

  • Leftmost X coordinate
  • Topmost Y coordinate
  • Width
  • Height
  • Each pixel, left-to-right, top-to-bottom.

Auto-draw will avoid colouring already correct pixels, for efficiency.

You can also run this continually with guard=True which makes sure that after your image is drawn, this keeps running to check if it haven't been tampered with, and fixes all non-matching pixels.

ad.draw(guard=True, guard_delay=2)

Guard delay is the delay between each full iteration of all pixels. We need to wait since looping without any changes is almost instant in python, and we don't want to put cpu through that stress for no reason

Progress bars

Every request that has rate limits can now display a progress bar while it's sleeping on cooldown:

pixel = client.get_pixel(0, 0, show_progress=True)
canvas = client.get_canvas(show_progress=True)
client.put_pixel(52, 10, "FFFFFF", show_progress=True)

https://user-images.githubusercontent.com/20902250/119607092-418e4200-bde3-11eb-9ac5-4e455ffd47c2.mp4

Handle RateLimitBreached exceptions

This exception occurs when you first make a request, of type you haven't used before (different api endpoint). Most commonly this occurs with put_pixel when the program was turned off and back on before the cooldown time has elapsed. To avoid this, you can add retry_on_limit=True flag, to put_pixel which automatically triggers rerun if this occurs.

pixel = client.get_pixel(0, 0, retry_on_limit=True)

Logging

To see logs, you can set the DEBUG environment variable, which changes the loglevel from logging.INFO to logging.DEBUG You can also do this manually by executing:

import logging

logger = logging.getLogger("pydispix")
logger.setLevel(logging.DEBUG)

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

pydispix-0.5.4.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

pydispix-0.5.4-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file pydispix-0.5.4.tar.gz.

File metadata

  • Download URL: pydispix-0.5.4.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for pydispix-0.5.4.tar.gz
Algorithm Hash digest
SHA256 214fdd9bf3d74a6e473e12044b7c0e6fa134738b2cc8f440a9b3a68066b29545
MD5 0949eb19e5ad118b26e5506b93c040df
BLAKE2b-256 c3f959f5b8ccbd89df399c0e0db5adb39cee4e362bd99e4c1fa169d5c1b633f9

See more details on using hashes here.

File details

Details for the file pydispix-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: pydispix-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for pydispix-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f3b9becef9cff99e50db43c03967f0582d50f3a68ed0ac80a19a6f87d3294c46
MD5 4bbebab3fcae3a64b16697976c6d943a
BLAKE2b-256 9d8de67a32e9c9c7361a8fd1b7ca6bd0ed04ce4362a93fd343e9b92ef590e0b6

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