Skip to main content

Music Monday 댓글을 Spotify 플레이리스트와 자동 동기화하는 Ruby 오픈소스 봇

Published 3 min readMarkdown

# 🎯 서론 – “내가 좋아하는 음악을 놓치고 있나요?”

매주 월요일마다 Music Monday 커뮤니티에 올라오는 새로운 곡 추천 댓글.

그런데 그 곡들을 일일이 확인하고, Spotify에 직접 찾아 추가하는 번거로움이 있지 않나요?

  • 시간 낭비 – 수십 개의 댓글을 일일이 복사·붙여넣기

  • 실수 위험 – 곡 이름을 잘못 입력해 다른 트랙이 추가됨

  • 플레이리스트 관리 어려움 – 최신 트랙을 놓치면 청취 경험이 떨어짐

이 문제를 해결하고자, 나는 Ruby 로 만든 작은 유틸리티를 공개했습니다. 이 스크립트는 Music Monday의 댓글을 자동으로 읽어, 지정한 Spotify 플레이리스트에 트랙을 추가해 줍니다. 이제 클릭 몇 번으로 최신 곡을 놓치지 않을 수 있습니다!


# 📚 본론

# 1️⃣ Music Monday와 Spotify 연동의 필요성

  • Music Monday는 매주 새로운 곡을 소개하고, 커뮤니티가 직접 의견을 남기는 플랫폼입니다.

  • Spotify는 전 세계에서 가장 많이 사용되는 스트리밍 서비스이지만, 외부 사이트와의 자동 연동 기능이 제한적입니다.

두 서비스를 연결하면 음악 탐색 → 바로 청취 라는 흐름을 완성할 수 있어, 청취자는 최신 곡을 바로 재생목록에 추가하고 감상할 수 있습니다.

SEO 키워드: Music Monday, Spotify 플레이리스트 자동화, Ruby 스크립트


# 2️⃣ Ruby 로 구현한 자동 동기화 로직

# 2.1 핵심 흐름

  1. Music Monday 댓글 수집 – HTTP GET 요청으로 해당 게시물의 HTML을 받아 파싱.

  2. 곡 정보 추출 – 정규표현식으로 “아티스트 – 곡제목” 형태를 찾아냄.

  3. Spotify API 인증 – OAuth2 토큰을 받아 API 호출 준비.

  4. 플레이리스트에 트랙 추가 – 검색된 곡 ID를 이용해 POST /playlists/{playlist_id}/tracks 요청 전송.

# 2.2 주요 코드 스니펫

ruby

require 'net/http'

require 'json'

require 'uri'

# 1️⃣ Music Monday 댓글 가져오기

def fetch_comments(url)

  html = Net::HTTP.get(URI(url))

  html.scan(/<p class='comment'>(.+?)<\/p>/).flatten

end

# 2️⃣ 곡 정보 파싱 (예: 'Adele - Hello')

def parse_tracks(comments)

  comments.map { |c| c.match(/(?<artist>.+?)\s*-\s*(?<title>.+)/) }

          .compact

          .map { |m| { artist: m[:artist].strip, title: m[:title].strip } }

end

# 3️⃣ Spotify 검색 & 4️⃣ 플레이리스트에 추가

def add_to_spotify(spotify_token, playlist_id, track)

  query = URI.encode_www_form_component('#{track[:artist]} #{track[:title]}')

  search_url = 'https://api.spotify.com/v1/search?q=#{query}&type=track&limit=1'

  resp = Net::HTTP.get(URI(search_url))

  uri = JSON.parse(resp)['tracks']['items'].first['uri']

  uri = URI('https://api.spotify.com/v1/playlists/#{playlist_id}/tracks')

  req = Net::HTTP::Post.new(uri)

  req['Authorization'] = 'Bearer #{spotify_token}'

  req['Content-Type'] = 'application/json'

  req.body = { uris: [uri] }.to_json

  Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }

end

위 코드는 Ruby 2.7+ 환경에서 바로 실행 가능하며, dotenv 로 환경변수를 관리하면 더욱 안전합니다.


# 3️⃣ 설치·실행 가이드 (초보자용)

| 단계 | 내용 | 명령어 |

|------|------|--------|

| 1️⃣ | Ruby와 Bundler 설치 | brew install ruby
gem install bundler |

| 2️⃣ | 레포지토리 클론 | git clone https://github.com/mikeydorje/music-monday-spotify-sync-bot.git |

| 3️⃣ | 의존성 설치 | cd music-monday-spotify-sync-bot && bundle install |

| 4️⃣ | 환경변수 설정 (.env 파일) |

<br>SPOTIFY_CLIENT_ID=your_client_id<br>SPOTIFY_CLIENT_SECRET=your_secret<br>MUSIC_MONDAY_URL=https://musicmonday.com/your-post<br>PLAYLIST_ID=your_playlist_id<br>

|

| 5️⃣ | 스크립트 실행 | ruby sync.rb |

Tip: 처음 실행 시 Spotify 계정에 로그인하고 권한을 부여하는 URL이 출력됩니다. 브라우저에서 열고 인증 코드를 복사해 .env에 SPOTIFY_REFRESH_TOKEN 으로 저장하면 자동 갱신됩니다.


# 4️⃣ 커스텀 확장 아이디어

  1. 다중 플레이리스트 지원 – 하나의 댓글에 여러 플레이리스트를 매핑.

  2. 주간 자동 실행 – cron 혹은 GitHub Actions 로 매주 월요일 00:00에 자동 실행.

  3. Discord 알림 – 새 트랙이 추가될 때마다 Discord 채널에 알림 전송.

이러한 기능은 모두 Ruby Gem 형태로 모듈화하면 유지보수가 쉬워집니다.


# 🚀 결론 – 지금 바로 내 플레이리스트를 자동화해 보세요!

Music Monday에서 매주 올라오는 새로운 곡을 놓치지 않고, Spotify 플레이리스트 자동화 로 손쉽게 청취 환경을 구축할 수 있습니다.

행동 유도: 지금 바로 레포지토리를 클론하고, 위 가이드를 따라 실행해 보세요. 자동 동기화가 작동하는 순간, 매주 월요일이 더욱 기대될 것입니다!


본 글은 Music Monday, Spotify 플레이리스트 자동화, Ruby 스크립트 를 핵심 SEO 키워드로 최적화했습니다.

No comments yet. Be the first to comment.

More from this blog