Async Python SDK for the official TGStat API.
Project description
Tgstat-sdk
Современный, удобный и асинхронный Python SDK для официального TGStat API.
Официальная документация TGStat API: https://api.tgstat.ru/docs/
Что даёт библиотека
- удобный асинхронный клиент для работы с TGStat API
- единый вход через
TGStatClient - понятное разделение методов по ресурсам:
channels,posts,stories,words,callback,usage,database - типизированные модели ответов от TGStat API
- типизированные исключения для ошибок API и transport-ошибок
- готовые примеры для основных сценариев работы
Установка
pip install -e .
Быстрый старт
import asyncio
from tgstat import TGStatClient
from tgstat.exceptions import TGStatError
TOKEN = "paste-your-token-here"
async def main() -> None:
try:
async with TGStatClient(token=TOKEN) as client:
# Получаем информацию о канале
channel = await client.channels.get(channel_id="@durov")
print("Канал:", channel.title)
# Получаем последние публикации канала
posts = await client.channels.posts(channel_id="@durov", limit=3)
print("Последние публикации:", len(posts.items))
for post in posts.items:
print("-", post.id, post.link)
# Получаем статистику канала
stat = await client.channels.stat(channel_id="@durov")
print("Подписчики:", stat.participants_count)
print("Средний охват:", stat.avg_post_reach)
# Получаем справочник языков
languages = await client.database.languages()
print("Первый язык из справочника:", languages[0].name)
# Получаем информацию о доступных квотах
usage = await client.usage.stat()
if usage:
print("Тариф:", usage[0].title)
except TGStatError as exc:
print(f"Ошибка TGStat SDK: {exc.__class__.__name__}: {exc}")
asyncio.run(main())
Что важно знать
- Некоторые методы зависят от вашего тарифа TGStat. Например,
posts.search,channels.searchи методы изwords.*требуют активного доступа к Search API. - Методы из
callback.*требуют заранее настроенный и подтверждённый callback URL на стороне TGStat. - Часть примеров получает реальные
post_idиstory_idчерез предварительные вызовыchannels.posts(...)иchannels.stories(...), чтобы их можно было запускать без ручного поиска идентификаторов.
Как обрабатывать ошибки
from tgstat import TGStatClient
from tgstat.exceptions import InvalidTokenError, QuotaRequestsReachedError, TimeoutError
TOKEN = "paste-your-token-here"
async with TGStatClient(token=TOKEN) as client:
try:
await client.channels.get(channel_id="@durov")
except InvalidTokenError:
print("Неверный токен")
except QuotaRequestsReachedError:
print("Исчерпана квота запросов")
except TimeoutError:
print("Запрос превысил timeout")
Retry
- Повторные попытки применяются только к transport-ошибкам.
- Повторяются timeout, сетевые ошибки, SSL transport failures и временные ответы
502/503/504. - API-ошибки вроде неверного токена, превышения квот или логических ошибок запроса не ретраятся.
backoff_factor— это коэффициент задержки между повторными попытками. Чем он больше, тем быстрее растёт пауза между retry-запросами.
from tgstat import RetryConfig, TGStatClient
client = TGStatClient(
token="paste-your-token-here",
retry=RetryConfig(
max_attempts=4,
backoff_factor=0.25,
max_backoff=2.0,
),
)
Примеры
Полная проверка SDK:
Каналы:
- examples/channels/get.py
- examples/channels/search.py
- examples/channels/stat.py
- examples/channels/posts.py
- examples/channels/stories.py
- examples/channels/mentions.py
- examples/channels/forwards.py
- examples/channels/subscribers.py
- examples/channels/views.py
- examples/channels/avg_posts_reach.py
- examples/channels/er.py
- examples/channels/err.py
- examples/channels/err24.py
- examples/channels/add.py
Посты:
Истории:
Слова:
- examples/words/mentions.py
- examples/words/reach.py
- examples/words/mentions_by_period.py
- examples/words/mentions_by_channels.py
База данных:
Использование квот:
Callback:
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tgstat_sdk-0.1.0.tar.gz.
File metadata
- Download URL: tgstat_sdk-0.1.0.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
940e303883b10fa8ed19280fbeb7cb16c3c0837c6acd91c4322dfd56534d689a
|
|
| MD5 |
5234b32f738de569dca5251d2d516cdc
|
|
| BLAKE2b-256 |
bce879ea9473b74c69106cf102d40d0b360efd250459ef3854c563830525504a
|
Provenance
The following attestation bundles were made for tgstat_sdk-0.1.0.tar.gz:
Publisher:
publish.yml on Dementrosha/tgstat-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tgstat_sdk-0.1.0.tar.gz -
Subject digest:
940e303883b10fa8ed19280fbeb7cb16c3c0837c6acd91c4322dfd56534d689a - Sigstore transparency entry: 1188795178
- Sigstore integration time:
-
Permalink:
Dementrosha/tgstat-sdk@3c284a38b5b11f496fe779cde79746c7d28da840 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Dementrosha
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3c284a38b5b11f496fe779cde79746c7d28da840 -
Trigger Event:
push
-
Statement type:
File details
Details for the file tgstat_sdk-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tgstat_sdk-0.1.0-py3-none-any.whl
- Upload date:
- Size: 29.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e619aea36b1585922941504c1a41e17f894416b2c21faa549485b6858f2e93c0
|
|
| MD5 |
fe0c896f0dd9abaabd4f03783fd97845
|
|
| BLAKE2b-256 |
b7a0ed86909128bc565aeae5107ef73881f0c38db930e6164779517df468c42f
|
Provenance
The following attestation bundles were made for tgstat_sdk-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Dementrosha/tgstat-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tgstat_sdk-0.1.0-py3-none-any.whl -
Subject digest:
e619aea36b1585922941504c1a41e17f894416b2c21faa549485b6858f2e93c0 - Sigstore transparency entry: 1188795184
- Sigstore integration time:
-
Permalink:
Dementrosha/tgstat-sdk@3c284a38b5b11f496fe779cde79746c7d28da840 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Dementrosha
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3c284a38b5b11f496fe779cde79746c7d28da840 -
Trigger Event:
push
-
Statement type: