Перейти к содержанию

MediaProbe

Основной класс для инспекции медиафайлов. Точка входа в библиотеку.

from url_media_probe import MediaProbe

probe = MediaProbe()

Высокоуровневая обёртка: получает части файла и парсит метаданные в MediaInfo.

Поддерживает три источника: 1. URL — скачивает по HTTP через RangeDownloader. 2. Локальный файл — читает через RangeFileReader. 3. bytes/BytesIO — читает через RangeBytesReader.

Attributes

last_head: bytes property

Байты head последней инспекции.

last_tail: bytes property

Байты tail последней инспекции.

downloaded: int property

Количество фактически скачанных данных для определения информации о файле.

downloaded_human: str property

Количество скачанных данных в человекочитаемом виде.

last_media_info: MediaInfo | None = None instance-attribute

Methods:

from_url(url: str, *, session: aiohttp.ClientSession | None = None, timeout: int = 30, max_total: int = 256000, max_ratio: float = 0.1, max_retries: int = 3, retry_on_statuses: tuple[int, ...] = (429, 500, 502, 503, 504), retry_backoff_factor: float = 1.0, allow_external_auth: bool = False) -> MediaInfo async

Инспектирует удалённый файл по URL.

Parameters:

Name Type Description Default
url str

URL файла.

required
session ClientSession | None

aiohttp-сессия (создаётся при None). Если вам нужно отправить авторизацию (Authorization, Cookie) на сторонний URL, укажите allow_external_auth=True.

None
timeout int

Таймаут HTTP-запроса в секундах.

30
max_total int

Максимальный объём скачанных данных (байт). 0 → режим «только заголовки» (тело не скачивается). Бюджет тратится только на то, что запросил парсер: head, tail или слайс — каждая порция ограничена остатком.

256000
max_ratio float

Доля размера файла — относительный лимит скачивания, действует наравне с max_total: общий бюджет равен min(max_total, file_size * max_ratio) (head, tail и слайс суммарно не превышают его). 0 → режим «только заголовки» (тело не скачивается).

0.1
max_retries int

Число повторных попыток при retry_on_statuses.

3
retry_on_statuses tuple[int, ...]

HTTP-статусы, при которых повторять запрос.

(429, 500, 502, 503, 504)
retry_backoff_factor float

Множитель задержки между попытками (1.0 → 1с, 2с, 4с).

1.0
allow_external_auth bool

Разрешить отправку авторизации на сторонние домены (по умолчанию только oneme.ru/okcdn.ru).

False

Returns:

Name Type Description
MediaInfo MediaInfo

Результат инспекции (в т.ч. при сетевой ошибке).

from_file(path: str) -> MediaInfo async

Инспектирует локальный файл.

Parameters:

Name Type Description Default
path str

Путь к файлу.

required

Returns:

Name Type Description
MediaInfo MediaInfo

Результат инспекции.

from_bytes(data: bytes | BytesIO, *, file_name: str = '') -> MediaInfo async

Инспектирует уже загруженные байты.

Parameters:

Name Type Description Default
data bytes | BytesIO

Содержимое файла.

required
file_name str

Имя файла (для guess MIME по расширению).

''

Returns:

Name Type Description
MediaInfo MediaInfo

Результат инспекции.

from_bytes_range(head: bytes, tail: bytes, file_size: int, *, file_name: str = '') -> MediaInfo async

Инспектирует по готовым head/tail и известному размеру файла.

Parameters:

Name Type Description Default
head bytes

Начало файла.

required
tail bytes

Конец файла.

required
file_size int

Полный размер файла.

required
file_name str

Имя файла (для guess MIME по расширению).

''

Returns:

Name Type Description
MediaInfo MediaInfo

Результат инспекции.

full_file_save(file_path: str | Path, *, file_name: str | None = None) -> Path async

Сохраняет файл целиком на диск.

Deprecated

Since version 0.2.2. Use download_file instead.

Parameters:

Name Type Description Default
file_path str | Path

Директория для сохранения.

required
file_name str | None

Имя файла. Если не указано, используется meta.file_name из результата инспекции.

None

Returns:

Name Type Description
Path Path

Абсолютный путь к сохранённому файлу.

download_file(file_path: str | Path, *, file_name: str | None = None) -> Path async

Сохраняет файл целиком на диск, используя уже полученные данные и активное соединение для докачки недостающих данных.

Работает после from_url() в любом режиме, включая «только заголовки» — закрытое соединение переоткрывается.

Parameters:

Name Type Description Default
file_path str | Path

Директория для сохранения.

required
file_name str | None

Имя файла. Если не указано, используется meta.file_name из результата инспекции.

None

Returns:

Name Type Description
Path Path

Абсолютный путь к сохранённому файлу.