Enums¶
longwei exposes two public enum types used as parameters to API methods.
Import¶
Both enums are available from the top-level package or from longwei.enums directly:
Visibility¶
Controls who can see a posted status.
| Value | String | Description |
|---|---|---|
Visibility.PUBLIC |
"public" |
Visible to everyone; appears on public timelines |
Visibility.UNLISTED |
"unlisted" |
Visible to everyone but not on public timelines |
Visibility.PRIVATE |
"private" |
Visible to followers only |
Visibility.DIRECT |
"direct" |
Direct message — visible only to mentioned accounts |
Usage¶
Pass a Visibility member as the visibility parameter of
post_status():
from longwei import APClient, Visibility
import httpx
async with httpx.AsyncClient() as client:
ap = await APClient.create(
instance="mastodon.social",
client=client,
access_token="your_token",
)
# Public post (default)
await ap.post_status("Hello, fediverse!", visibility=Visibility.PUBLIC)
# Followers only
await ap.post_status("Private thought", visibility=Visibility.PRIVATE)
# Direct message to a specific user
await ap.post_status(
"@user@example.com Hey, only you can see this",
visibility=Visibility.DIRECT,
)
String values¶
Visibility is a str subclass, so comparing or passing the string value directly also works:
assert Visibility.PUBLIC == "public" # True
assert Visibility.PUBLIC.value == "public"
# The Status model stores visibility as a plain string
status = await ap.post_status("test")
if status.visibility == "public":
print("Public post")
SearchType¶
Constrains the type of results returned by search().
| Value | String | Description |
|---|---|---|
SearchType.ACCOUNTS |
"accounts" |
Search for user accounts |
SearchType.HASHTAGS |
"hashtags" |
Search for hashtags |
SearchType.STATUSES |
"statuses" |
Search for statuses/posts |
Usage¶
from longwei import APClient, SearchType
import httpx
async with httpx.AsyncClient() as client:
ap = await APClient.create(
instance="mastodon.social",
client=client,
access_token="your_token",
)
# Find accounts matching a query
results = await ap.search(query="longwei", query_type=SearchType.ACCOUNTS)
for account in results.accounts:
print(account.acct)
# Find hashtags
results = await ap.search(query="python", query_type=SearchType.HASHTAGS)
for tag in results.hashtags:
print(tag.name)
# Find statuses
results = await ap.search(query="ActivityPub", query_type=SearchType.STATUSES)
for status in results.statuses:
print(status.content[:80])