Files
pyrogram-bridge/architecture.md
T
2025-02-01 15:25:54 +03:00

114 lines
2.3 KiB
Markdown

# Telegram RSS Bridge Architecture
## System Components
### 1. Web Parser (Main Bridge)
- Existing web-based parser for public Telegram content
- Fallback mechanism to Pyro Parser when content not found
### 2. Pyro Parser (Backup Service)
- Pyrogram-based client for private content
- HTTP API server for post retrieval
- Session management for Telegram auth
### 3. HTTP API Interface
- Endpoints:
- `GET /post/{channel}/{post_id}` - Get single post
- `GET /channel/{channel}` - (Future) Get channel feed
- Response format:
```json
{
"id": 123,
"date": "2023-01-01T00:00:00",
"text": "post content",
"media": [],
"views": 100,
"reactions": [] // Future extension
}
```
## Service Structure
```text
pyro_parser/
├── telegram_client.py # Pyrogram wrapper + session management
├── api_server.py # FastAPI/Falcon server
├── schemas.py # Data models/Pydantic schemas
└── config.py # Environment configuration
```
## Key Features
1. **Pyrogram Client**
- Async Telegram client with session persistence
- Automatic reconnection
- Rate limiting handling
- Error tracking for API calls
2. **Content Processing**
- Raw post transformation
- Media links extraction
- Text cleanup utilities
- (Future) Reactions parser
## Environment Configuration
```bash
# Core settings
TG_API_ID=123456
TG_API_HASH=abcdef123456
SESSION_PATH=/data/session.file
# Server config
API_HOST=0.0.0.0
API_PORT=8000
REQUEST_TIMEOUT=30
```
## Docker Setup
```yaml
services:
pyro_parser:
image: ghcr.io/vvzvlad/pyrotg-bridge:latest
environment:
TG_API_ID: ${TG_API_ID}
TG_API_HASH: ${TG_API_HASH}
volumes:
- ./sessions:/data
ports:
- "8000:8000"
```
## CI/CD Integration
```yaml
# .github/workflows/deploy.yml
name: Deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/vvzvlad/pyrotg-bridge:latest
```
## Extension Points
1. **Post Processing**
- Media download hooks
- Link preview generators
- Content filters
2. **API Features**
- Pagination params
- Field selection
- Webhook support
3. **Monitoring**
- /status endpoint
- Basic request metrics
- Error logging