113 lines
2.6 KiB
ReStructuredText
113 lines
2.6 KiB
ReStructuredText
========
|
|
Examples
|
|
========
|
|
|
|
.. contents:: Table of Contents
|
|
:depth: 3
|
|
:local:
|
|
|
|
All of these examples are taken from the ``python-sync`` script in the ``tests`` directory of the repo.
|
|
|
|
Before any of the examples will work, you need to import the right classes and functions:
|
|
|
|
```python
|
|
from szurubooru_client import *
|
|
from szurubooru_client.tokens import *
|
|
from szurubooru_client.models import *
|
|
```
|
|
|
|
Creating a client
|
|
^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
client = SzurubooruSyncClient("http://localhost:9802", username="integration_user",
|
|
password="integration_password", allow_insecure=True)
|
|
```
|
|
|
|
Creating a new tag
|
|
^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
foo_tag = client.create_tag("foo", category="default", description="The foo tag")
|
|
assert foo_tag.names == ["foo"]
|
|
```
|
|
|
|
Returning only a subset of fields
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
# Omit the "description" field
|
|
tags = client.list_tags(fields=["version", "names", "category"])
|
|
assert tags.results[0].description is None
|
|
```
|
|
|
|
Uploading from a file path
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
folly1 = client.create_post(file_path="../folly1.jpg",
|
|
tags=["maine_coon", "cat", "folly1"],
|
|
safety=PostSafety.Safe)
|
|
```
|
|
|
|
Searching for an existing post using an image
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
folly1_search = client.post_for_image("../folly1.jpg")
|
|
assert folly1_search is not None
|
|
```
|
|
|
|
Querying by an anonymous tag
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
cat_posts = client.list_posts(query=[anonymous_token("cat")])
|
|
```
|
|
|
|
Querying by a named tag
|
|
^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
mc_posts = client.list_posts(query=[named_token(PostNamedToken.Tag, "maine_coon")])
|
|
```
|
|
|
|
Pagination
|
|
^^^^^^^^^^
|
|
|
|
```python
|
|
posts = client.list_posts(limit=1)
|
|
assert posts.total == 4
|
|
assert len(posts.results) == 1
|
|
|
|
posts2 = client.list_posts(limit=1, offset=1)
|
|
assert posts.results != posts2.results
|
|
```
|
|
|
|
Commenting on a post
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
cat_results = client.list_posts([anonymous_token("cat")])
|
|
post_id = cat_results.results[0].id
|
|
|
|
comment = client.create_comment("Excellent cat!", post_id)
|
|
```
|
|
|
|
Getting all comments for a post
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
comment_list = client.list_comments([named_token(CommentNamedToken.Post, post_id)])
|
|
assert len(comment_list.results) != 0
|
|
```
|
|
|
|
Downloading an image to a local path
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
```python
|
|
cat_results = client.list_posts([anonymous_token("cat")])
|
|
post_id = cat_results.results[0].id
|
|
|
|
client.download_image_to_path(post_id, "/tmp/cat.jpg")
|
|
```
|