Metadata-Version: 2.4
Name: cime.py
Version: 1.0.6
Summary: Unofficial Python SDK for CI.ME OpenAPI
Author-email: chocolily <medeia_beliar@naver.com>
Project-URL: Homepage, https://github.com/choco-lily/cime.py
Project-URL: Bug Tracker, https://github.com/choco-lily/cime.py/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx
Requires-Dist: websockets
Requires-Dist: pydantic
Dynamic: license-file

# cime.py 🐍

**CI.ME 플랫폼의 모든 권능을 Pythonic하게.**  
씨미(CI.ME)의 공식 OpenAPI를 100% 준수하며, `asyncio` 기반의 고성능 비동기 처리를 지원하는 비공식 SDK입니다.

---

## ✨ Features

- **100% API Coverage**: 씨미 Developers 문서에 명시된 모든 엔드포인트 구현 완료.
- **Type-Safe Models**: Pydantic을 활용한 강력한 데이터 검증 및 IDE 자동완성 지원.
- **Async First**: `httpx` 및 `websockets` 기반의 현대적이고 빠른 비동기 설계.
- **Easy Event Engine**: `CimeEvents`를 통한 직관적인 실시간 채팅 및 후원 처리.

---

## 🚀 Installation

```bash
pip install cime.py
```

---

## 🔑 Authentication

씨미 API는 상황에 따라 Client Credentials 또는 Bearer Token 인증을 사용합니다. `cime.py`는 이를 유연하게 관리합니다.

```python
import asyncio
from cime import CimeClient

async def main():
    # Client Credentials 사용 (기본)
    async with CimeClient(
        client_id='YOUR_CLIENT_ID',
        client_secret='YOUR_CLIENT_SECRET'
    ) as client:
        # Bearer Token 설정 (개인화 작업 시)
        client.bearer_token = 'USER_ACCESS_TOKEN'
        
        me = await client.get_me()
        print(f"로그인 채널: {me.content.channelName}")

asyncio.run(main())
```

---

## 📚 API Reference

`cime.py`의 모든 응답은 Pydantic 모델로 파싱되어 `content` 필드에 담깁니다.

### 👤 User & Channel
- `get_me()`: 내 채널 정보 조회
- `get_channels(ids)`: 특정 채널 목록 조회
- `get_followers(page, size)`: 팔로워 목록 조회
- `get_subscribers(page, size, sort)`: 구독자 목록 조회
- `get_streaming_roles()`: 채널 매니저 목록 조회

### 📺 Live Management
- `get_lives(params)`: 전체 라이브 목록 조회
- `get_live_status(channel_id)`: 특정 채널 익명 라이브 체크 (Public)
- `get_live_setting()`: 방송 제목 및 카테고리 설정 조회
- `update_live_setting(settings)`: 방송 제목, 태그, 카테고리 즉시 변경
- `get_stream_key()`: 스트림 키(RTMP) 조회

### 💬 Chat & Interaction
- `get_chat_settings()`: 채팅 딜레이, 팔로워 전용 등 설정 조회
- `update_chat_settings(settings)`: 채팅창 환경 업데이트
- `send_chat(message)`: 채팅 메시지 전송
- `update_notice(msg, id)`: 채팅창 고정 공지 관리

### 🛡️ Moderation
- `get_restrict_channels(params)`: 제재 중인 시청자 목록 조회
- `kick_user(target_id)`: 시청자 추방
- `unkick_user(target_id)`: 추방 해제

---

## ⚡ Quick Example

### 실시간 채팅 응답 봇
```python
import asyncio
from cime import CimeClient, CimeEvents

async def handle_chat(data):
    # data는 Pydantic 모델로, 자동완성을 지원합니다.
    print(f"[{data.profile.nickname}]: {data.content}")

async def main():
    async with CimeClient(client_id='...', client_secret='...') as client:
        # 세션 생성 및 이벤트 엔진 연결
        session = await client.create_session()
        events = CimeEvents(session.content.sessionKey)
        
        # 채팅 이벤트 핸들러 등록
        events.on("chat", handle_chat)
        await events.subscribe("chat")
        
        print("릴리 봇이 눈을 떴습니다! 👁️")
        await events.connect()

asyncio.run(main())
```

---

## 📄 License

MIT © 2026 쵸코릴리 (medeia_beliar@naver.com)
