Skip to content

RomanDronow/spotify-mattermost-live-status

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spotify Matters 🎵

Node.js приложение, которое автоматически обновляет ваш статус в Mattermost информацией о текущем треке из Spotify. Идеально для команд, которые хотят делиться своими музыкальными вкусами в реальном времени!

Возможности

  • 🎧 Живое отслеживание Spotify: Мониторинг текущих треков из Spotify
  • 💬 Интеграция с Mattermost: Обновление статуса в Mattermost информацией о текущем треке
  • 🎨 Кастомные эмодзи: Автоматическое обновление кастомного эмодзи в Mattermost обложкой альбома текущего трека
  • 🔄 Автоматические обновления: Обновляет статус каждые 5 секунд при смене треков
  • 🎯 Умное определение: Обновляет статус только при реальной смене трека
  • 🔐 Безопасная аутентификация: Использует Spotify OAuth с refresh токенами

Требования

Перед началом работы убедитесь, что у вас есть:

  • Node.js (версия 14 или выше)
  • Аккаунт Spotify
  • Сервер Mattermost с доступом к API
  • ngrok (для локальной разработки)

Установка

1. Клонирование репозитория

git clone <url-репозитория>
cd spotify-matters
npm install

Примечание: Убедитесь, что файл spotify.png находится в корне проекта. Этот файл используется как дефолтный эмодзи в Mattermost, когда трек не воспроизводится.

2. Настройка Spotify API

  1. Перейдите в Spotify Developer Dashboard
  2. Создайте новое приложение
  3. Добавьте ваш redirect URI в список разрешенных URIs (например: https://ваш-туннель.ngrok-free.app/callback)
  4. Запишите ваш Client ID и Client Secret

3. Настройка Mattermost API

  1. Сгенерируйте персональный токен доступа в вашем экземпляре Mattermost
  2. Запишите ваш User ID (находится в настройках профиля)
  3. Убедитесь, что у вас есть необходимые разрешения для обновления статуса

4. Конфигурация окружения

Создайте файл .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. Это имя кастомного эмодзи, которое будет обновляться обложкой альбома текущего трека.

5. Получение Spotify Refresh Token

Важно: Перед запуском убедитесь, что у вас настроен 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 + Не играет

Как это работает

  1. Аутентификация: Использует Spotify OAuth с refresh токенами для постоянного доступа
  2. Мониторинг треков: Опрашивает Spotify API каждые 5 секунд для получения информации о текущем воспроизведении
  3. Обновление эмодзи: При смене трека автоматически обновляет кастомный эмодзи в Mattermost обложкой альбома текущего трека. Если трек не играет, используется дефолтный эмодзи из файла spotify.png
  4. Обновление статуса: Отправляет PUT запросы к Mattermost API для обновления вашего статуса с текстом трека и соответствующим эмодзи
  5. Умные обновления: Обновляет статус и эмодзи только при реальной смене трека, чтобы избежать спама

Используемые API endpoints

Spotify API

  • GET /v1/me/player/currently-playing - Получение информации о текущем треке
  • POST /api/token - Обновление access токенов

Mattermost API

  • 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

Устранение неполадок

Частые проблемы

  1. "Недействительный refresh token"

    • Перезапустите node get-token.js для получения нового refresh токена
  2. "Unauthorized" ошибки Mattermost

    • Проверьте ваш персональный токен доступа и user ID
    • Убедитесь, что у вас есть разрешение на обновление статуса
  3. "Нет текущего воспроизведения"

    • Убедитесь, что Spotify воспроизводит музыку
    • Проверьте, что ваш аккаунт Spotify активен
  4. "Ошибка redirect URI"

    • Убедитесь, что SPOTIFY_REDIRECT_URI в .env файле совпадает с URI в настройках Spotify приложения
    • Проверьте, что ngrok туннель активен и доступен

Режим отладки

Добавьте более подробное логирование, изменив console.log выражения в live-status.js.

Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Внесите ваши изменения
  4. Отправьте pull request

Лицензия

ISC License - см. package.json для деталей

Поддержка

Если вы столкнулись с проблемами, пожалуйста, проверьте раздел устранения неполадок выше или создайте issue в репозитории.

About

Share your current track from Spotify to Mattermost status

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors