e621.net API wrapper written in Python
Project description
e621
e621 is a feature-rich high-level e621 and e926 API wrapper.
It provides access to almost all of the endpoints available. The only exceptions are unstable and admin-only endpoints.
e621 API documentation is currently highly undocumented, unstable, and sometimes even untruthful. We tried to wrap it in a sanest possible way, properly documenting all the possible ways to interact with it. However, if you still have any questions, bugs to report, or features to request -- please, create an issue on our github page and we will reply as soon as we can.
Installation
pip install e621-stable
Quickstart
We translate everything the API returns to python data types created with pydantic. Everything is 100% typehinted so you get autocomplete everywhere and your IDE will warn you if you are sending invalid arguments or using nonexistent attributes.
Creating the api client
- To create the most basic client, all you need to do is
from e621 import E621
api = E621()
- If you wish to get information about your account, use your blacklist or create/update/delete any of the e621's entities, you will have to create an api key and put it into the API client as such:
api = E621(("your_e621_login", "your_e621_api_key"))
Searching
The majority of the endpoints allow you to query for a list of their entities, be it posts, pools or tags.
- To search for posts that match the "canine" but not the "3d" tag:
posts = api.posts.search("canine -3d")
# Or
posts = api.posts.search(["canine", "-3d"])
- To search for pools whose names start with "hello" and end with "kitty":
posts = api.pools.search(name_matches="hello*kitty")
- e621 searching api is paginated, which means that if you want to get a lot of posts, you will have to make multiple requests with a different "page" parameter. To simplify interactions with paginated queries, all of our searching endpoints support the "limit", "page", and "ignore_pagination" parameters. If you wish to get a specific number of entities, simply pass the "limit" and "ignore_pagination" arguments:
tags = api.tags.search(name_matches="large_*", limit=900, ignore_pagination=True)
Accessing Attributes
When you have retrieved the entities, you can access any of their attributes without dealing with json.
for post in posts:
print(post.score.total, post.all_tags, post.relationships.parent_id)
with open(f"{post.id}.{post.file.ext}", "wb") as f:
f.write(requests.get(post.file.url).content)
Getting
Many entities that have unique identifiers (such as post_id or username) support indexing using these ids:
post = api.posts.get(3291457)
posts = api.posts.get([3291457, 3069995])
pool = api.pools.get(28232)
user = api.users.get("fox")
Updating
api.posts.update(3291457, tag_string_diff="canine -male", description="Rick roll?")
Creating
from pathlib import Path
api.posts.create(
tag_string="canine 3d rick_roll",
file=Path("path/to/rickroll.webm"),
rating="s",
sources=[],
description="Rick roll?"
)
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
Built Distribution
File details
Details for the file e621_stable-1.0.4.tar.gz
.
File metadata
- Download URL: e621_stable-1.0.4.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.8 Linux/6.0.11-1-MANJARO
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd3a24dc2b40b3469b9ba650fa9c278b5bf25360f683052719eaf023ce052f97 |
|
MD5 | aca7c7733a2be51b8b7b2b1a7a612205 |
|
BLAKE2b-256 | ab599d5cff852910812a151e16f59cd8ed661852b90090c40bf190688125bab7 |
File details
Details for the file e621_stable-1.0.4-py3-none-any.whl
.
File metadata
- Download URL: e621_stable-1.0.4-py3-none-any.whl
- Upload date:
- Size: 14.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.8 Linux/6.0.11-1-MANJARO
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bedbf0a881de162b1f3a80178676207e2c9ce191ba06ea7035c83c976f597e44 |
|
MD5 | 8643d3690509824d49ec3b12879c8fe6 |
|
BLAKE2b-256 | 8d587a7131eb81992fda69c6a5e8931aeec6b9576760b0dcce9d7dd2397cb651 |