Metadata-Version: 2.5
Name: parsai
Version: 0.4.160
Summary: Гибридный парсер названий медиафайлов (rule-based + AI)
License: PolyForm-Noncommercial-1.0.0
License-File: LICENSE
License-File: NOTICE
Keywords: filename,media,onnx,parser,release-name,torrent
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia
Classifier: Topic :: Text Processing :: Linguistic
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: chardet
Requires-Dist: msgpack>=1.0
Requires-Dist: numpy
Requires-Dist: onnxruntime==1.28.0
Requires-Dist: pydantic>=2.0
Requires-Dist: pyyaml
Requires-Dist: rapidfuzz>=3.14.6
Requires-Dist: regex
Provides-Extra: cli
Requires-Dist: click; extra == 'cli'
Description-Content-Type: text/markdown

# parsai

Парсер названий медиафайлов: из имени релиза достаёт название, год, сезоны и
серии, разрешение, источник, кодеки, озвучку, субтитры и тип медиа.

```
"The.Matrix.1999.1080p.BluRay.x264-GROUP.mkv"
  → title="The Matrix" year=1999 screen_size=1080p source=BluRay video_codec=H.264

"Брат (1997) BDRip 1080p MVO R.G. Pravitel"
  → title="Брат" year=1997 source=BDRip dub=professional

"[AniLibria] Атака титанов - 12 [1080p] [AAC].mkv"
  → title="Атака титанов" episodes=[12] screen_size=1080p audio_codec=AAC

"Сваты [1-9 сезоны: 1-164 серии из 180] (2008-2021) SATRip"
  → seasons=[1..9] episodes=[1..164] episodes_total=180
```

## Установка

```bash
pip install parsai          # библиотека
pip install parsai[cli]     # + консольная команда `parsai`
```

Нужен Python 3.11+. Модель входит в пакет, сеть не требуется
(инференс идёт через `onnxruntime` на процессоре).

## Использование

```python
from parsai import parse

r = parse("The.Matrix.1999.1080p.BluRay.x264-GROUP.mkv")
r.title          # "The Matrix"
r.year           # 1999
r.kind           # "movie" | "series" | "tv" | "music" | "game" | "software" | "other" | "anime"
r.seasons        # list[int] | None — полное перечисление: "[1-9 сезоны]" → [1, ..., 9]
r.episodes       # list[int] | None — "1-7 серии" → [1..7]; "серии 1, 3, 5-7" → [1, 3, 5, 6, 7]
r.episodes_total # int | None — заявленный тотал «из N»
r.media_score    # 0..1: насколько вход похож на имя медиафайла (порог выбирает потребитель)
```

Пакетный разбор (потоки, порядок сохраняется, ошибки возвращаются как
результаты с ошибкой):

```python
from parsai import parse_batch, aparse_batch

results = parse_batch(titles)
results = parse_batch(titles, max_workers=1)   # строго последовательно
results = await aparse_batch(titles)           # для asyncio-кода
```

## Командная строка

```bash
parsai parse "The.Matrix.1999.1080p.BluRay.x264-GROUP.mkv"
parsai parse --json "Бригада.S01E01.DVDRip.avi"
```

## Переменные окружения

| Переменная | Назначение |
|---|---|
| `PARSAI_ORT_THREADS` | число потоков onnxruntime (по умолчанию `1`) |

## Лицензия

PolyForm Noncommercial 1.0.0; условия коммерческого использования — в файле
`LICENSE`.
