Node.js приложение, которое автоматически обновляет ваш статус в Mattermost информацией о текущем треке из Spotify. Идеально для команд, которые хотят делиться своими музыкальными вкусами в реальном времени!
- 🎧 Живое отслеживание Spotify: Мониторинг текущих треков из Spotify
- 💬 Интеграция с Mattermost: Обновление статуса в Mattermost информацией о текущем треке
- 🎨 Кастомные эмодзи: Автоматическое обновление кастомного эмодзи в Mattermost обложкой альбома текущего трека
- 🔄 Автоматические обновления: Обновляет статус каждые 5 секунд при смене треков
- 🎯 Умное определение: Обновляет статус только при реальной смене трека
- 🔐 Безопасная аутентификация: Использует Spotify OAuth с refresh токенами
Перед началом работы убедитесь, что у вас есть:
- Node.js (версия 14 или выше)
- Аккаунт Spotify
- Сервер Mattermost с доступом к API
- ngrok (для локальной разработки)
git clone <url-репозитория>
cd spotify-matters
npm installПримечание: Убедитесь, что файл spotify.png находится в корне проекта. Этот файл используется как дефолтный эмодзи в Mattermost, когда трек не воспроизводится.
- Перейдите в Spotify Developer Dashboard
- Создайте новое приложение
- Добавьте ваш redirect URI в список разрешенных URIs (например:
https://ваш-туннель.ngrok-free.app/callback) - Запишите ваш
Client IDиClient Secret
- Сгенерируйте персональный токен доступа в вашем экземпляре Mattermost
- Запишите ваш
User ID(находится в настройках профиля) - Убедитесь, что у вас есть необходимые разрешения для обновления статуса
Создайте файл .env в корне проекта:
# Конфигурация Spotify
SPOTIFY_CLIENT_ID=ваш_spotify_client_id
SPOTIFY_CLIENT_SECRET=ваш_spotify_client_secret
SPOTIFY_REFRESH_TOKEN=ваш_refresh_token
SPOTIFY_REDIRECT_URI=https://ваш-ngrok-туннель.ngrok-free.app/callback
# Конфигурация Mattermost
MATTERMOST_SERVER_URL=https://ваш-mattermost-сервер.com
MATTERMOST_USER_ID=ваш_user_id
MATTERMOST_TOKEN=ваш_персональный_токен_доступа
MATTERMOST_EMOJI_NAME=spotikПримечание: MATTERMOST_EMOJI_NAME - опциональная переменная. Если не указана, по умолчанию используется spotik. Это имя кастомного эмодзи, которое будет обновляться обложкой альбома текущего трека.
Важно: Перед запуском убедитесь, что у вас настроен ngrok туннель и переменная SPOTIFY_REDIRECT_URI в .env файле указывает на правильный URL.
Запустите скрипт аутентификации для получения refresh токена:
node get-token.jsЭто выполнит:
- Запустит локальный сервер на порту 8888
- Откроет браузер для авторизации в Spotify
- Сгенерирует refresh токен
- Отобразит токен в консоли и браузере
Скопируйте refresh токен в ваш файл .env.
node live-status.jsПриложение будет:
- Подключаться к Spotify API используя ваш refresh токен
- Мониторить ваши текущие треки
- Обновлять ваш статус в Mattermost каждые 5 секунд при смене треков
- Отображать обновления статуса в консоли
- Играет: Кастомный эмодзи с обложкой альбома +
Название трека – Имя исполнителя - Не играет: Дефолтный эмодзи
spotify.png+Не играет
- Аутентификация: Использует Spotify OAuth с refresh токенами для постоянного доступа
- Мониторинг треков: Опрашивает Spotify API каждые 5 секунд для получения информации о текущем воспроизведении
- Обновление эмодзи: При смене трека автоматически обновляет кастомный эмодзи в Mattermost обложкой альбома текущего трека. Если трек не играет, используется дефолтный эмодзи из файла
spotify.png - Обновление статуса: Отправляет PUT запросы к Mattermost API для обновления вашего статуса с текстом трека и соответствующим эмодзи
- Умные обновления: Обновляет статус и эмодзи только при реальной смене трека, чтобы избежать спама
GET /v1/me/player/currently-playing- Получение информации о текущем трекеPOST /api/token- Обновление access токенов
PUT /api/v4/users/{user_id}/status/custom- Обновление статуса пользователяGET /api/v4/emoji/name/{emoji_name}- Получение ID эмодзи по имениDELETE /api/v4/emoji/{emoji_id}- Удаление эмодзиPOST /api/v4/emoji- Создание нового эмодзи с изображением
Приложение включает комплексную обработку ошибок для:
- Проблем с сетевым подключением
- Недействительных токенов
- Лимитов API
- Отсутствующих переменных окружения
axios- HTTP клиент для API запросовdotenv- Управление переменными окруженияexpress- Веб-сервер для OAuth потокаform-data- Создание multipart/form-data запросов для загрузки эмодзи в Mattermost
-
"Недействительный refresh token"
- Перезапустите
node get-token.jsдля получения нового refresh токена
- Перезапустите
-
"Unauthorized" ошибки Mattermost
- Проверьте ваш персональный токен доступа и user ID
- Убедитесь, что у вас есть разрешение на обновление статуса
-
"Нет текущего воспроизведения"
- Убедитесь, что Spotify воспроизводит музыку
- Проверьте, что ваш аккаунт Spotify активен
-
"Ошибка redirect URI"
- Убедитесь, что
SPOTIFY_REDIRECT_URIв.envфайле совпадает с URI в настройках Spotify приложения - Проверьте, что ngrok туннель активен и доступен
- Убедитесь, что
Добавьте более подробное логирование, изменив console.log выражения в live-status.js.
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите ваши изменения
- Отправьте pull request
ISC License - см. package.json для деталей
Если вы столкнулись с проблемами, пожалуйста, проверьте раздел устранения неполадок выше или создайте issue в репозитории.