No description
- JavaScript 78.1%
- CSS 16.1%
- HTML 5.8%
|
|
||
|---|---|---|
| data | ||
| public | ||
| .gitignore | ||
| example.env | ||
| jellyfin.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| server.js | ||
| storage.js | ||
Media Notify
Веб-панель + Telegram-бот для отправки уведомлений о контенте из Jellyfin выбранным пользователям.
Что умеет
- Получает список фильмов/сериалов из Jellyfin.
- Показывает пользователей Telegram, которые зарегистрировались через
/start. - Отправляет карточку контента в Telegram (с постером и ссылкой на Jellyfin).
- Позволяет менять
DateCreatedу элемента (и у эпизодов сериала), чтобы управлять блоком «Недавно добавленное».
Требования
- Node.js 18+
- Доступ к Jellyfin API
- Telegram Bot Token
Установка
npm install
Настройка (обязательно)
- Создайте
.envиз примера:
cp example.env .env
- Заполните
.envреальными значениями:
PORT— порт приложения (например,3002)JELLYFIN_URL— URL Jellyfin API (например,http://localhost:8096)JELLYFIN_API_KEY— API ключ JellyfinJELLYFIN_USER_ID— ID пользователя Jellyfin, от имени которого читается библиотекаJELLYFIN_URL_WEB— публичный URL Jellyfin Web (для ссылки в уведомлении)TELEGRAM_BOT_TOKEN— токен Telegram-ботаADMIN_TOKEN— токен для доступа к API и панелиDISABLE_ADMIN_TOKEN_AUTH— еслиtrue, доступ к панели и API будет работать безADMIN_TOKEN(только для доверенной локальной сети)
- Создайте
data/users.jsonиз примера:
cp data/users_example.json data/users.json
- Заполните
data/users.jsonпользователями, которым можно отправлять уведомления.
Пример структуры:
{
"users": [
{
"chatId": 123456789,
"telegramUsername": "username",
"firstName": "Name",
"lastName": "LastName",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]
}
Примечание: когда пользователь пишет боту /start, он автоматически добавляется/обновляется в этом файле.
Запуск
npm start
После запуска:
- Панель:
http://localhost:<PORT> - Healthcheck:
GET /health
Как пользоваться
- Откройте панель в браузере.
- Если защита включена, введите
ADMIN_TOKENв поле сверху. - Выберите пользователя из списка.
- Нажмите «Отправить уведомление» на нужной карточке.
- При необходимости откройте карточку и измените дату добавления (
DateCreated).
Основные API-эндпоинты
Если DISABLE_ADMIN_TOKEN_AUTH=false, защищенные эндпоинты требуют заголовок x-admin-token: <ADMIN_TOKEN>.
GET /api/users— список пользователейGET /api/items?limit=80&search=— список элементов из JellyfinPOST /api/notify— отправка уведомления в Telegram (messageText— опционально)POST /api/items/:id/date— изменениеDateCreatedу элемента (и дочерних приapplyToChildren=true)GET /health— проверка работоспособности