ya-editor 0.0.2
Yandex translate, correct, rewrite, and improve for Russian and English
Requires Python: >=3.11

# ya_editor

Асинхронная Python-библиотека (3.11+) для работы с **неофициальным API Яндекс.Редактора и Яндекс.Переводчика**. Позволяет переводить, исправлять, улучшать и трансформировать тексты без необходимости получения API-ключей.

> ⚠️ Библиотека использует внутренние API Яндекса, которые не предназначены для публичного использования.

## Возможности

### Публичные функции

| Функция       | Описание                                                         |
|---------------|------------------------------------------------------------------|
| `translate()` | Перевод текста между русским и английским языками                |
| `transform()` | Преобразование русского/английского текста с различными режимами |

### Режимы трансформации (`TransformActions`)

| Действие    | Описание                                                             |
|-------------|----------------------------------------------------------------------|
| `correct`   | Исправление орфографических, пунктуационных и типографических ошибок |
| `improve`   | Общее улучшение читаемости, стиля и структуры                        |
| `rephrase`  | Перефразирование с сохранением смысла                                |
| `simple`    | Упрощение лексики и синтаксиса                                       |
| `complex`   | Усложнение, обогащение лексики                                       |
| `formal`    | Преобразование в официально-деловой стиль                            |
| `casual`    | Преобразование в разговорный стиль                                   |
| `translate` | Перевод Ru↔En через редактор                                         |

---

## Установка

```bash
uv add ya-editor --prerelease=allow
```

```bash
pip install --upgrade --pre ya-editor
```

---

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

```python
import asyncio
from ya_editor import translate, transform

async def main():
    # Перевод текста
    translated = await translate("Hello, world!")
    print(translated)  # "Привет, мир!"
    
    # Исправление ошибок
    corrected = await transform("Превет как дила?", action='correct')
    print(corrected)  # "Привет, как дела?"
    
    # Улучшение текста
    improved = await transform("Текст написан плохо. Надо лучше.", action='improve')
    print(improved)

asyncio.run(main())
```

---

## API Reference

### `translate(input_text, logger=None) -> str`

Асинхронно переводит текст между русским и английским языками.

**Параметры:**
- `input_text` (str): Исходный текст для перевода
- `logger` (Logger, optional): Экземпляр стандартного логгера Python

**Возвращает:** Переведённый текст

**Пример:**
```python
# Русский → Английский
result = await translate("Доброе утро!")
# "Good morning!"

# Английский → Русский  
result = await translate("Good morning!")
# "Доброе утро!"
```

---

### `transform(input_text, action='correct', logger=None) -> str`

Выполняет преобразование текста согласно указанному действию.

**Параметры:**
- `input_text` (str): Исходный текст
- `action` (TransformActions): Тип преобразования (по умолчанию `'correct'`)
- `logger` (Logger, optional): Экземпляр логгера

**Возвращает:** Преобразованный текст

---

## Примеры использования

### Исправление ошибок

```python
text = """
Привет всем! Сиводня я хачу расказать вам о важном. 
Не забудте подписатся на канал,  поставить лайк.
"""

result = await transform(text, action='correct')
# "Привет всем! Сегодня я хочу рассказать вам о важном.
#  Не забудьте подписаться на канал, поставить лайк."
```

### Упрощение текста

```python
complex_text = """
Имплементация данного алгоритма предполагает использование 
рекурсивных структур данных с амортизированной сложностью O(log n).
"""

result = await transform(complex_text, action='simple')
# Более простое объяснение того же самого
```

### Формализация текста

```python
casual_text = "Привет! Слушай, нам бы созвониться, обсудить проект."

result = await transform(casual_text, action='formal')
# "Здравствуйте! Предлагаю организовать телефонный разговор 
#  для обсуждения проекта."
```

### Работа с логированием

```python
import logging

# Настройка логгера
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger('ya_editor')

# Использование с логгером — полезно для отладки и мониторинга
result = await translate(long_text, logger=logger)

# В логах будут сообщения о повторных попытках:
# WARNING - чанк [2/5]: попытка 1/3 — YandexRequestError. повтор через 2.0с...
```

### Обработка больших текстов

```python
# Библиотека автоматически разбивает большие тексты на чанки
large_text = "..." * 50000  # Большой текст

# Автоматическое разбиение на части до 10000 символов
# с сохранением Markdown-разметки
result = await transform(large_text, action='improve')
```