Skip to main content

A Python wrapper for the Catbox.moe and Litterbox api with Async features

Project description

catboxpy

catboxpy is a Python wrapper for Catbox, which allows you to easily upload files, manage albums, and interact with the Catbox service. This package supports both synchronous and asynchronous usage.

Installation

From PyPI

You can easily install the stable version of catboxpy from PyPI using pip:

pip install catboxpy

From GitHub Repository

Alternatively, if you wish to access the latest (potentially unstable) version directly from the GitHub repository, you can execute the following command:

pip install git+https://github.com/anshonweb/catboxpy.git

Features

  • Upload files to Catbox.
  • Create and manage albums (synchronous and asynchronous support).
  • Delete files from Catbox.
  • Both synchronous and asynchronous methods for flexible usage.

Installation

To install catboxpy, simply use pip:

pip install catboxpy

Usage

Synchronous Usage

The synchronous interface is simple to use for blocking operations. Here is how to use it:

1. Uploading a File

from catboxpy.catbox import CatboxClient

client = CatboxClient(userhash="your_userhash_here")
file_url = client.upload("path/to/your/file.jpg")
print(f"File uploaded to: {file_url}")

2. Uploading a URL

You can upload files directly from a URL:

url = client.upload('https://example.com/your_image.jpg')
print(f"URL uploaded to: {url}")

3. Creating an Album

To create an album:

album_url = client.album.create("My Album", "Album description", ["file1.jpg", "file2.jpg"])
print(f"Album created at: {album_url}")

4. Deleting a File

To delete a file by its URL:

client.delete_file("file_url")

Asynchronous Usage

The asynchronous interface allows you to perform operations without blocking the execution of other tasks, making it ideal for applications that need to handle multiple requests concurrently.

1. Uploading a File Asynchronously

import asyncio
from catboxpy.catbox import AsyncCatboxClient

async def upload_file():
    client = AsyncCatboxClient(userhash="your_userhash_here")
    file_url = await client.upload("path/to/your/file.jpg")
    print(f"File uploaded to: {file_url}")

# Running the async function
asyncio.run(upload_file())

2. Uploading a URL Asynchronously

import asyncio
from catboxpy.catbox import AsyncCatboxClient

async def upload_url():
    client = AsyncCatboxClient(userhash="your_userhash_here")
    url = await client.upload('https://example.com/your_image.jpg')
    print(f"URL uploaded to: {url}")

# Running the async function
asyncio.run(upload_url())

3. Creating an Album Asynchronously

import asyncio
from catboxpy.catbox import AsyncCatboxClient

async def create_album():
    client = AsyncCatboxClient(userhash="your_userhash_here")
    album_url = await client.album.create("My Album", "Album description", ["file1.jpg", "file2.jpg"])
    print(f"Album created at: {album_url}")

# Running the async function
asyncio.run(create_album())

4. Deleting a File Asynchronously

import asyncio
from catboxpy.catbox import AsyncCatboxClient

async def delete_file():
    client = AsyncCatboxClient(userhash="your_userhash_here")
    await client.delete_file("file_url")

# Running the async function
asyncio.run(delete_file())

Litterbox Usage

from catboxpy import LitterboxClient

uploader = LitterboxClient()
try:
    url = uploader.upload_file("filepath", expire_time="1h")
    print(f"Uploaded to: {url}")
except Exception as e:
    print(f"Upload failed: {e}")

Authentication

For most operations, such as uploading or managing albums, you need a valid userhash. You can obtain the userhash by logging in to Catbox and accessing your user settings.

  • If you're performing anonymous uploads, you can omit the userhash. However, operations like creating and managing albums require a valid userhash.

Notes

  • Album Limitations: Catbox albums currently allow a maximum of 500 files. This limit may change in the future.
  • Anonymous Albums: Anonymous albums cannot be edited or deleted, and they also cannot contain more than 500 files.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

For issues, bugs, or suggestions, please open an issue on the GitHub repository.


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

catboxpy-0.1.1.1.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

catboxpy-0.1.1.1-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file catboxpy-0.1.1.1.tar.gz.

File metadata

  • Download URL: catboxpy-0.1.1.1.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for catboxpy-0.1.1.1.tar.gz
Algorithm Hash digest
SHA256 a7cd37e18e88ea86c2d15c384d23c021603b5bde67fa9c2cd4f6e9ab7b812314
MD5 137071f8daa440739436369deb10bd84
BLAKE2b-256 91924e719d1bf2146ab07a3e7238b92a4159b142f0ef7ccb61a1c10cfdbb260d

See more details on using hashes here.

File details

Details for the file catboxpy-0.1.1.1-py3-none-any.whl.

File metadata

  • Download URL: catboxpy-0.1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for catboxpy-0.1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 021535e5c64f965ad92e2589b31ed89f31a7c56d24af253e1e4f8c4106acf564
MD5 762fd3f6b76e132d18f4040ef314db49
BLAKE2b-256 30031c67ac821bbd81bef034f0ba3e69a5340560a147f9dac433b6712817c8d9

See more details on using hashes here.

Supported by

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