call-to-text/old/parsers/base.py
ed0ss 7f03949593 Первая версия: транскрипция звонков из Novofon DATA API в Directus
- Клиент Novofon DATA API (JSON-RPC, get.calls_report, чанки по 90 дней)
- faster-whisper (модель turbo) на CUDA с разделением стереоканалов
- Маркировка спикеров: левый канал = caller, правый = callee
- Directus: коллекции calls, calls_74951284933, contacts
- CLI: process, process-file, export, daemon (polling 5 мин)
- Docker Compose для Directus + PostgreSQL
- Архив email-парсинга в old/
2026-06-26 12:44:50 +03:00

30 lines
959 B
Python

from typing import Optional
from dataclasses import dataclass
@dataclass
class CallMetadata:
call_id: Optional[str] = None
caller_number: Optional[str] = None
callee_number: Optional[str] = None
caller_name: Optional[str] = None
callee_name: Optional[str] = None
employee: Optional[str] = None
direction: Optional[str] = None
duration_sec: Optional[int] = None
datetime: Optional[str] = None
audio_url: Optional[str] = None
audio_data: Optional[bytes] = None
audio_filename: Optional[str] = None
source_email_id: Optional[str] = None
class BaseEmailParser:
def parse_email(self, subject: str, body_text: str, body_html: str) -> Optional[CallMetadata]:
raise NotImplementedError
def parse_url(self, url: str) -> Optional[CallMetadata]:
raise NotImplementedError
def extract_audio_url(self, body_text: str, body_html: str) -> Optional[str]:
raise NotImplementedError