Metadata-Version: 2.4
Name: okcdn
Version: 4.0.0
Summary: High-performance Python client for OKCdn video & media streaming engine
Author: OKCdn Team
License-Expression: MIT
Project-URL: Homepage, https://github.com/your-username/OKCdn
Project-URL: Documentation, https://github.com/your-username/OKCdn#readme
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: aiohttp>=3.8.0
Dynamic: requires-python

# OkCdn Python Client SDK

Легковесный, быстрый и асинхронный клиент для взаимодействия с сервером **OKCdn**.

## ✨ Особенности
- **Zero-Disk RAM Streaming**: мгновенная перекачка MPEG-DASH (.mpd), HLS (.m3u8), Direct MP4 в OK.ru.
- **Мгновенное обновление ссылок**: актуализация протухших CDN-ссылок (`<0.5s`).
- **Пакетная параллельная загрузка**: отправка списков видео с контролируемым `concurrency`.
- **Автоматический Retry**: устойчивость к временным сетевым сбоям с экспоненциальной задержкой.
- **Поддержка мультиаккаунтов**: сессии кэшируются на сервере с 30-минутным умным авто-отключением сокетов.

## 📦 Установка

```bash
pip install okcdn
```

## 🚀 Быстрый старт

```python
import asyncio
from okcdn import OkCdn

async def main():
    # Инициализация клиента (можно передать параметры или задать переменные окружения)
    async with OkCdn(
        server_url="https://your-okcdn-server.koyeb.app",
        auth_token="YOUR_OK_AUTHCODE_HERE",
        default_chat_id=123456789
    ) as cdn:

        # 1. Отправка одиночного видео (HLS / DASH / MP4)
        video = await cdn.send_video(
            link="https://example.com/stream.m3u8",
            caption="Мой видеострим",
            title="video_01.mp4"
        )
        print("Прямой MP4:", video["mp4"])
        print("HLS ссылка:", video["hls"])
        print("Video ID:", video["video_id"])

        # 2. Мгновенное обновление ссылок
        fresh = await cdn.refresh_links(video_id=video["video_id"])
        print("Обновленная ссылка:", fresh["mp4"])
        print("Истекает через:", fresh["expires_in_sec"], "сек")

        # 3. Загрузка локального файла
        uploaded = await cdn.upload_file(
            file_path="local_video.mp4",
            caption="Прямая загрузка"
        )
        print("Загружено:", uploaded["direct"])

        # 4. Пакетная параллельная отправка
        batch = await cdn.send_videos(
            links=[
                "https://site.com/video1.mp4",
                "https://site.com/video2.mp4"
            ],
            concurrency=2
        )
        for url, data in batch.items():
            print(f"{url} -> {data.get('mp4')}")

if __name__ == "__main__":
    asyncio.run(main())
```

## ⚙️ Переменные окружения

Вы можете задать переменные окружения, чтобы не указывать их в коде:
- `OKCDN_SERVER_URL` — адрес запущенного сервера (по умолчанию `http://localhost:8000`)
- `ACCOUNT_TOKEN` или `OKCDN_AUTH_TOKEN` — токен авторизации OK.ru (`AUTHCODE`)
- `CHAT_ID` или `OKCDN_CHAT_ID` — ID чата по умолчанию
