No description
  • JavaScript 78.1%
  • CSS 16.1%
  • HTML 5.8%
Find a file
2026-03-26 21:10:56 +03:00
data first commit 2026-02-25 23:53:43 +03:00
public modify notification send 2026-03-26 21:09:25 +03:00
.gitignore add gitignore 2026-02-26 13:03:34 +03:00
example.env add variable to env to skip token authentication Fixes #3 2026-03-04 19:57:48 +03:00
jellyfin.js first commit 2026-02-25 23:53:43 +03:00
package-lock.json first commit 2026-02-25 23:53:43 +03:00
package.json first commit 2026-02-25 23:53:43 +03:00
README.md add possibility to send message with custom text 2026-03-08 22:39:11 +03:00
server.js modify notification send 2026-03-26 21:09:25 +03:00
storage.js first commit 2026-02-25 23:53:43 +03:00

Media Notify

Веб-панель + Telegram-бот для отправки уведомлений о контенте из Jellyfin выбранным пользователям.

Что умеет

  • Получает список фильмов/сериалов из Jellyfin.
  • Показывает пользователей Telegram, которые зарегистрировались через /start.
  • Отправляет карточку контента в Telegram (с постером и ссылкой на Jellyfin).
  • Позволяет менять DateCreated у элемента (и у эпизодов сериала), чтобы управлять блоком «Недавно добавленное».

Требования

  • Node.js 18+
  • Доступ к Jellyfin API
  • Telegram Bot Token

Установка

npm install

Настройка (обязательно)

  1. Создайте .env из примера:
cp example.env .env
  1. Заполните .env реальными значениями:
  • PORT — порт приложения (например, 3002)
  • JELLYFIN_URL — URL Jellyfin API (например, http://localhost:8096)
  • JELLYFIN_API_KEY — API ключ Jellyfin
  • JELLYFIN_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 (только для доверенной локальной сети)
  1. Создайте data/users.json из примера:
cp data/users_example.json data/users.json
  1. Заполните 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

Как пользоваться

  1. Откройте панель в браузере.
  2. Если защита включена, введите ADMIN_TOKEN в поле сверху.
  3. Выберите пользователя из списка.
  4. Нажмите «Отправить уведомление» на нужной карточке.
  5. При необходимости откройте карточку и измените дату добавления (DateCreated).

Основные API-эндпоинты

Если DISABLE_ADMIN_TOKEN_AUTH=false, защищенные эндпоинты требуют заголовок x-admin-token: <ADMIN_TOKEN>.

  • GET /api/users — список пользователей
  • GET /api/items?limit=80&search= — список элементов из Jellyfin
  • POST /api/notify — отправка уведомления в Telegram (messageText — опционально)
  • POST /api/items/:id/date — изменение DateCreated у элемента (и дочерних при applyToChildren=true)
  • GET /health — проверка работоспособности