https://github.com/asewhy/media-content-manager
Менеджер содержимого медиасервисов наподобие jellyfin или plex по средствам telegram бота
https://github.com/asewhy/media-content-manager
ffmpeg jellyfin video-processing
Last synced: 3 months ago
JSON representation
Менеджер содержимого медиасервисов наподобие jellyfin или plex по средствам telegram бота
- Host: GitHub
- URL: https://github.com/asewhy/media-content-manager
- Owner: AseWhy
- Created: 2025-01-20T19:23:28.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-03T07:40:45.000Z (over 1 year ago)
- Last Synced: 2025-03-20T04:40:12.821Z (over 1 year ago)
- Topics: ffmpeg, jellyfin, video-processing
- Language: TypeScript
- Homepage:
- Size: 423 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# Менеджер медиатеки
В этом репозитории содержится код менеджера медиатеки, который совместим с медиа сервером типа jellyfin или plex.
Менеджер позволяет загружать, удалять, перемещать файлы в медиатеке по средствам telegram бота. Загруженные медиа данные также могут подвергать постобработке (в зависимости от конфигурации).

# Сборка
Сборку можно выполнять по средствам docker или вручную
## Вручную
Для сборки вручную необходимо выполнить в корневой директории и в директории каждого модуля
# Установка общих зависимостей в корневой директории
yarn install
# Установка зависимостей пост обработчика
cd media-post-processor
yarn install
# Поднимаемся выше
cd ../
# Установка зависимостей бота
cd media-telegram-manager-bot
yarn install
## Docker
Для сборки docker нужно выполнить команды в корневой директории проекта
# Сборка пост обработчика
docker build . -t 'media-post-processor:latest' -f ./media-post-processor/Dockerfile
# Сборка бота
docker build . -t 'media-telegram-manager-bot:latest' -f ./media-telegram-manager-bot/Dockerfile
# Запуск
В зависимости от того как выполнялась сборка, для запуска доступно несколько вариантов. Первым необходимо запускать пост обработчик, чтобы он мог создать сервер. Бот должен запускаться вторым.
## На хосте
Для запуска на хосте, нужно использовать команды ниже. Для запуска пост обработчика на хосте должен быть установлен ffmpeg.
# Запуск пост обработчика
cd media-post-processor
yarn start
# Поднимаемся выше
cd ../
# Запуск бота
cd media-telegram-manager-bot
yarn start
## Docker
Для запуска ранее собранных образов нужно выполнить команды
# Запуск пост обработчика
docker run -p 1949:1949 'media-post-processor:latest'
# Запуск бота
docker 'media-telegram-manager-bot:latest'
### Проблемы
При запуске в среде docker могут возникнуть некоторые проблемы.
1. **Низкая скорость передачи медиа на пост обработчик**
**Описание:**
Если используется docker root-less, то можно столкнуться с ограничением скорости передачи медиафайлов между пост обработчиком и ботом (например вместо 1 G/S может быть где-то 100-150M/S) особенно это заметно в локальных сетях.
**Решение:**
В качестве решения можно использовать nerdctl вместо docker в связке с *bypass4netns*. [Подробнее](https://docs.docker.com/engine/security/rootless/#networking-errors)
### Docker Compose - примеры конфигурации
Для быстрого запуска в docker-compose можно использовать следующие конфигурации
# Конфигурация бота
media-telegram-manager-bot.service:
image: media-telegram-manager-bot:latest
restart: always
volumes:
- ./media:/media:rw
- ./config/mpp:/opt/common/app/config
- ./mpp/data:/opt/common/app/data
- ./mpp/torrents:/torrents
environment:
- BOT_ALLOWED_USER_IDS=
- BOT_TOKEN=
- DOWNLOAD_DIR=/torrents
- MANAGED_DIR=/media
- DOWNLOAD_LIMIT=42949672960
# Конфигурация пост обработчика
media-post-processor.latest.service:
image: media-post-processor:latest
restart: always
volumes:
- ./config/mpp:/opt/common/app/config
- ./mpp/data:/opt/common/app/data
- ./mpp/penging:/opt/common/app/penging
- ./mpp/processing:/opt/common/app/processing
ports:
- 1949:1949
devices:
# Тут можно передать устройства для hwa
- /dev/dri/renderD128:/dev/dri/renderD128
environment:
- PENDING_DIR=/opt/common/app/penging
- PROCESSING_DIR=/opt/common/app/processing
# TODO
- Добавить опцию создания новой панели при создании новой загрузки
- Добавить возможность указывать fallback конфигурации для исполнителей у заказчиков пост обработки
- Добавить возможность паузы, возобновления и удаления загрузок
- Добавить возможность конфигурации способа хранения данных (redis, sql, file)
- Добавить защиту обмена данными между обработчиком и ботом (tls, secret-key, jwt, http)
# Важно
- Проблема: Иногда устройство hw требует прав суперпользователя
Решение: `sudo chmod 666 /dev/dri/renderD128`, где renderD128 - это устройство hw
# Решено
- Работа пост обработчика проверена на Intel N97, возможно на других процессорах потребуются дополнительные изменения кода или настройки. В таким случае предлагаю внести PR который бы добавлял конкретную функциональность