Emby STRM Exporter

Утилита экспорта одной категории медиатеки PostgreSQL в дерево .strm-файлов для Emby. Она переработана из GenerateEmbyContent.py: устаревшие жёстко заданные IP-адреса, пароль, загрузка постеров и генерация NFO исключены. Осталась только главная задача — безопасно подготовить ссылки на поток для локальной медиатеки.

Возможности и границы

  • получает категорию по site_code из таблицы categorys;
  • для каждой комбинации названия и качества выбирает строку с максимумом seeds;
  • строит каталог <категория>/<год>/<название (год)>;
  • создаёт UTF-8 .strm, содержащий URL, сформированный из infohash;
  • получает параметры подключения исключительно из переменных окружения.

Экспортёр не изменяет базу данных, не загружает изображения, не обращается к API Emby и не содержит учётных данных. Используйте его только для своей базы данных и разрешённых источников потоков.

Требования

  • Python 3.10+;
  • PostgreSQL с таблицами categorys и torrents;
  • доступ на чтение к этим таблицам.

В используемой исторической схеме требуются поля:

categorys(site_code, name)
torrents(category_id, name, year, quality, seeds, infohash)

Установка

git clone https://github.dfv24.com/fofanov.dmitry/emby-strm-exporter.git
cd emby-strm-exporter
python -m venv .venv
. .venv/bin/activate
python -m pip install --editable .

Конфигурация

Скопируйте шаблон, но не добавляйте заполненный .env в Git:

cp .env.example .env
export DATABASE_URL='postgresql://reader:password@db.example.org:5432/media'
export ACE_STREAM_URL='http://stream.example.org/ace/getstream?infohash={infohash}&.mp4'

ACE_STREAM_URL обязан содержать литерал {infohash}. Он будет заменён на значение строки БД. Переменная .env не загружается программой автоматически: экспортируйте значения в оболочку либо используйте ваш менеджер секретов.

Экспорт

emby-strm-export ./library 1

Где ./library — корневой каталог медиатеки, а 1 — site_code категории. Пример результата:

library/
  Фильмы/
    2024/
      Пример (2024)/
        Пример (2024)-WEB-DL.strm

Повторный запуск может перезаписать .strm того же качества. Перед массовым экспортом удобно сначала выполнить его в тестовый каталог.

Структура и проверка

src/emby_strm_exporter/
  exporter.py  # запрос к БД и запись файлов
  cli.py       # интерфейс командной строки
python -m compileall -q src

Лицензия

Код распространяется по лицензии MIT.

Description
Экспорт медиатеки PostgreSQL в STRM-библиотеку для Emby.
Readme MIT 36 KiB
Languages
Python 100%