Skip to main content

Неофициальная 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.1.1.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cloudtips-0.1.1-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file cloudtips-0.1.1.tar.gz.

File metadata

  • Download URL: cloudtips-0.1.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cloudtips-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0b510509261fa217ed2b0918fe3cfae59abe62b6aa709f638653637a07c1c237
MD5 39e7e7433b414f9b5ede0f8aea3804e7
BLAKE2b-256 a234b5e545f5a0f16bb6c340b505108cc8d4292ec27c1fae5d68c974169119d5

See more details on using hashes here.

File details

Details for the file cloudtips-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: cloudtips-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cloudtips-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 977f84ee32e55d41e9bce1c3a8753798946dfd873bb7f87d16cc88e4a8d8b846
MD5 f041a35994cef56f084ab949cf12b6c1
BLAKE2b-256 c77c8f50b2aa88177fb6d5b4415ff9d85ad43b7d9f38a357298b73212157174f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page