Skip to main content

Asynchronous API wrapper for the Dagbot API (https://dagpi.tk)

Project description

asyncdagpi

An async wrapper for http://dagpi.tk

Build Status License codestyle version python

Documentation for asyncdagpi

1) Obtain a token


Join the discord server here and verify yourself. Once done you can easily apply for a token via the process detailed.

2) Install the library


Use pip to install the library

pip install asyncdagpi

3) Initialise the client


from asyncdagpi import Client
API_CLIENT = Client('insert_your_token')

With this you should have a working API client that can help you authenticate and process api requests

4) Use One of the Features listed below with your client instance


  • staticimage
  • gif
  • usertextimage
  • textimage

These categories have a lot of features. A list of features can be found below or in the API documentation at docs

You can use the client with a feature as follows:

async def wanted(image_url:str):
    response = await API_CLIENT.staticimage('wanted',image_url)

5) Using the Response


The client returns an url as a default response. If the bytes=True parameter is passed then a BytesIO object is returned instead! The BytesIO response can be used in a lot of ways. Read the documentation here : BytesIOdocs in the BytesIO section.

The examples below depict a few use cases

Obtaining a url to share

async def wanted(image_url:str):
    response = await API_CLIENT.staticimage('wanted',image_url)
    return (response)

Saving Response to file

async def wanted(image_url:str):
    response = await API_CLIENT.staticimage('wanted',image_url,bytes=True)
    with open('wanted.png''wb') as out:
        out.write(response.read())

Opening The response with Pillow (PIL)

from PIL import Image
async def wanted(image_url:str):
    response = await API_CLIENT.staticimage('wanted',image_url,bytes=True)
    image = Image.open(response)

Using the Discord.py library and sending response as a an image in an embed

please do remember to get a discord api token and run the bot using that.

Get help with discord.py at dpy server

import discord
from discord.ext import commands
bot = commands.Bot(command_prefix = '.')
@bot.command()
async def wanted(ctx,image_url:str):
    response = await API_CLIENT.staticimage('wanted',image_url)
    embed = discord.Embed(title='DAGPI image')
    embed.set_image(url=response)
    await ctx.send(embed=embed)  

6) Handling Exceptions


You can import exceptions from asyncdagpi.

from asyncdagpi import exceptions
try:
    #request
except exceptions.ImageUnaccesible:
    print('No image at your url')

- InvalidOption

This exception is raised when the feature chosen is not in the feature list ie. wanted is not a valid feature from the available options.

- BadUrl

The api uses regex to validate urls. When an improper url is passed to the API this exception is raised

- IncorrectToken

The token passed is invalid according to the api.

- RateLimited

You are exceeding the maximum number of requests the api can take.

- FileTooLarge

The file passed os too large for the API to process

- APIError

The api raised an error. Issue with the API

- ImageUnaccesible

The API was unable to find an image at your url within timeout and

- UnkownError

This is when the API returns a non 200 code ie means an error occurred. This exception throws the status code along with a message explaining the status code.

Categories and their subsequent features


staticimage

This returns an png image as an API url or (as BytesIO if bytes=True) and requires the image_url for a static image.

API_CLIENT.staticimage(feature,image_url)

# feature - one of the features
# image_url - a static image url

Features:

  • wanted
  • evil
  • bad
  • hitler
  • angel
  • trash
  • satan
  • triggered
  • obama
  • hog
  • ascii
  • colors
  • rgbdata

multiimage

This returns an png image as an API url or (as BytesIO if bytes=True) and requires the 2 image urls for the multiimage to be produced.

API_CLIENT.multiimage(feature,image_url,second_image_url)
#feature: one of the features
#image_url url for first image
#second_image_url: url for image no2

Features:

  • 5g1g
  • whyareyougay

Gif

Returns a gif as an API url or (as BytesIO if bytes=True) . Takes either a static_image url or a gif url and returns a gif. Irrespective of the inupt output is always a gif.

API_CLIENT.gif(feature,image_url)

# feature - one of the features
# image_url - a gif or static image_url

Features:

  • paint
  • solar
  • blur
  • invert
  • pixel
  • sepia
  • deepfry
  • wasted
  • gay
  • charcoal
  • jail
  • polaroid
  • night

usertextimage

Returns a png image as an API url or (as BytesIO if bytes=True). Takes in the following arguments

API_CLIENT.usertextimage(feature,image_url,text,name)

# feature - one of the features
# image_url - a static image url
# text - the text the person will say
# name - the username that will be used for the person

Features:

  • tweet
  • quote (discord message)

textimage

Depending in the feature and imput either returns a static or gif image. returns an API url or (as BytesIO if bytes=True)

API_CLIENT.textimage(feature,image_url,text)

# feature - one of the features
# image_url - a static image url
# text - the text the person will say

Features:

  • Thoughtimage: always returns a static response

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

asyncdagpi-2.5.0.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

asyncdagpi-2.5.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file asyncdagpi-2.5.0.tar.gz.

File metadata

  • Download URL: asyncdagpi-2.5.0.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.1

File hashes

Hashes for asyncdagpi-2.5.0.tar.gz
Algorithm Hash digest
SHA256 bfb387b91f4d449a51421d9aa81bdda65a705e3823cd4666712de11830782c25
MD5 d6c0b7c79b0af1023e2e65d7f520352c
BLAKE2b-256 447f4171308cd0b88f5befc7bcd57f2d01e30658c33b3e083c88fbf556b2e76a

See more details on using hashes here.

File details

Details for the file asyncdagpi-2.5.0-py3-none-any.whl.

File metadata

  • Download URL: asyncdagpi-2.5.0-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.1

File hashes

Hashes for asyncdagpi-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77cfbc21d35e1aa9ec39858ee6446720486b11cffdea5f7b61ab76ac3eab8b44
MD5 a647f43dd7b55b6bd6df41e55d32acf2
BLAKE2b-256 846372e90781477bef777fea3843b2b194d6dff76eaa045eea0faa64edfbfd4c

See more details on using hashes here.

Supported by

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