Skip to main content

OkCdn Python Client SDK

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

✨ Особенности

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

📦 Установка

pip install okcdn

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

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 чата по умолчанию

Metadata

Release files for okcdn 4.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for okcdn 4.0.0
File Size Uploaded
okcdn-4.0.0.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for okcdn 4.0.0
File Interpreter ABI Platform
okcdn-4.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.6 kB

Release files / okcdn-4.0.0.tar.gz

Download URL okcdn-4.0.0.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
72040f59613272715b468ed7b8c617bc270d20c6f1eb0d6a5c3cc51536de4b2d
BLAKE2b-256 checksum
How to use checksums
a9cd123126dee2f7832318b83c854ee067bedd1ccd9c66e51344920eb1335963
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / okcdn-4.0.0-py3-none-any.whl

Download URL okcdn-4.0.0-py3-none-any.whl
Size 8.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c86536a8b36796d5c0d6770c760253cc849ee188831bccceedce97d8deee718a
BLAKE2b-256 checksum
How to use checksums
86f086143a03463b6cf8e7466e5dea81a52c2c0c3ab891f675162d11e0e95464
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

4.1.0

2 release files

This release

4.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page