Неофициальная Python-библиотека для CloudTips (получение донатов, поллинг, обновление токенов)
Project description
CloudtipsAPI
Неофициальная Python-библиотека для CloudTips — получение донатов, поллинг новых поступлений и автоматическое обновление токенов.
Установка
pip install cloudtips
Быстрый старт
import json
from cloudtips import CloudTipsAuth, CloudTipsClient, TokenData
# Загружаем токены из файла (donate.json или своего хранилища)
with open("donate.json") as f:
config = json.load(f)
# Колбэк вызывается каждый раз при обновлении токенов.
# Refresh-токен одноразовый — обязательно сохраняйте новые!
def on_token_refresh(token_data: TokenData):
config["cloudtips_token"] = token_data.access_token
config["cloudtips_refresh_token"] = token_data.refresh_token
config["cloudtips_expires_at"] = token_data.expires_at
with open("donate.json", "w") as f:
json.dump(config, f, ensure_ascii=False, indent=2)
print("Токены обновлены и сохранены.")
auth = CloudTipsAuth(
token=config["cloudtips_token"],
refresh_token=config["cloudtips_refresh_token"],
expires_at=config["cloudtips_expires_at"],
on_token_refresh=on_token_refresh,
)
client = CloudTipsClient(auth)
Получение донатов
# Все донаты
donations = client.get_all_donations()
for d in donations:
print(d) # [2026-04-10 20:44] евгения → 50₽ — "оч крутой сервис"
# Только за последние сутки
from datetime import datetime, timedelta, timezone
yesterday = datetime.now(tz=timezone.utc) - timedelta(days=1)
recent = client.get_donations(since=yesterday)
Поллинг новых донатов
Вариант 1 — генератор (блокирует поток)
print("Слушаем новые донаты...")
for donation in client.poll(interval=30):
print(f"💰 {donation.name} задонатил {donation.amount}₽")
if donation.comment:
print(f" Комментарий: {donation.comment}")
Вариант 2 — колбэк
def handle_donation(donation):
print(f"Новый донат от {donation.name}: {donation.amount}₽")
# Блокирующий вызов, удобно для простых скриптов
client.poll(interval=15, callback=handle_donation)
Вариант 3 — в отдельном потоке
import threading
thread = threading.Thread(
target=client.poll,
kwargs={"interval": 30, "callback": handle_donation},
daemon=True,
)
thread.start()
# Основная логика программы продолжается...
Структура Donation
@dataclass
class Donation:
transaction_id: int # уникальный ID транзакции
name: str # имя донатера
amount: int # сумма в рублях
tg_id: int # Telegram ID
comment: str # комментарий (может быть пустым)
date: datetime # дата и время
str(donation)
# "[2026-04-10 23:04] Каспер → 200₽ — "спасибо за отличный сервис)""
Обработка ошибок
from cloudtips import CloudTipsAuthError, CloudTipsAPIError
try:
donations = client.get_donations()
except CloudTipsAuthError as e:
print(f"Проблема с аутентификацией: {e}")
except CloudTipsAPIError as e:
print(f"Ошибка API (HTTP {e.status_code}): {e.detail}")
Примечания
- Refresh-токен одноразовый. После каждого обновления старый токен становится недействительным. Всегда передавайте
on_token_refreshи сохраняйте новые токены. - Библиотека автоматически обновляет токен за 2 минуты до истечения.
- Поллинг отслеживает уже виденные
transaction_id, поэтому дублей не будет.
Лицензия
MIT
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
cloudtips-0.3.0.tar.gz
(9.4 kB
view details)
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
cloudtips-0.3.0-py3-none-any.whl
(11.5 kB
view details)
File details
Details for the file cloudtips-0.3.0.tar.gz.
File metadata
- Download URL: cloudtips-0.3.0.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71e5e7b67657d8415f5debb3906d930599ac383a3951b49b44b7c6424b5bc0ec
|
|
| MD5 |
577a128b8982bce8931cbf13306082d2
|
|
| BLAKE2b-256 |
8b05b4887dba1296c50e930f92e3880cce09080efb080e45c0eb0002c6b32f66
|
File details
Details for the file cloudtips-0.3.0-py3-none-any.whl.
File metadata
- Download URL: cloudtips-0.3.0-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e07632c7fb1ef32519f5d7406c86a403c21dd24f42f4157524c2e694d7c54e62
|
|
| MD5 |
dcdae69bb870c7a1e71adad820e75b15
|
|
| BLAKE2b-256 |
24743f35453b1aaace0760645929912e66ec1ec60cd497c927f32265b9b97da0
|