Music Monday 댓글을 Spotify 플레이리스트와 자동 동기화하는 Ruby 오픈소스 봇
# 🎯 서론 – “내가 좋아하는 음악을 놓치고 있나요?”
매주 월요일마다 Music Monday 커뮤니티에 올라오는 새로운 곡 추천 댓글.
그런데 그 곡들을 일일이 확인하고, Spotify에 직접 찾아 추가하는 번거로움이 있지 않나요?
시간 낭비 – 수십 개의 댓글을 일일이 복사·붙여넣기
실수 위험 – 곡 이름을 잘못 입력해 다른 트랙이 추가됨
플레이리스트 관리 어려움 – 최신 트랙을 놓치면 청취 경험이 떨어짐
이 문제를 해결하고자, 나는 Ruby 로 만든 작은 유틸리티를 공개했습니다. 이 스크립트는 Music Monday의 댓글을 자동으로 읽어, 지정한 Spotify 플레이리스트에 트랙을 추가해 줍니다. 이제 클릭 몇 번으로 최신 곡을 놓치지 않을 수 있습니다!
# 📚 본론
# 1️⃣ Music Monday와 Spotify 연동의 필요성
Music Monday는 매주 새로운 곡을 소개하고, 커뮤니티가 직접 의견을 남기는 플랫폼입니다.
Spotify는 전 세계에서 가장 많이 사용되는 스트리밍 서비스이지만, 외부 사이트와의 자동 연동 기능이 제한적입니다.
두 서비스를 연결하면 음악 탐색 → 바로 청취 라는 흐름을 완성할 수 있어, 청취자는 최신 곡을 바로 재생목록에 추가하고 감상할 수 있습니다.
SEO 키워드:
Music Monday,Spotify 플레이리스트 자동화,Ruby 스크립트
# 2️⃣ Ruby 로 구현한 자동 동기화 로직
# 2.1 핵심 흐름
Music Monday 댓글 수집 – HTTP GET 요청으로 해당 게시물의 HTML을 받아 파싱.
곡 정보 추출 – 정규표현식으로 “아티스트 – 곡제목” 형태를 찾아냄.
Spotify API 인증 – OAuth2 토큰을 받아 API 호출 준비.
플레이리스트에 트랙 추가 – 검색된 곡 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️⃣ 커스텀 확장 아이디어
다중 플레이리스트 지원 – 하나의 댓글에 여러 플레이리스트를 매핑.
주간 자동 실행 –
cron혹은 GitHub Actions 로 매주 월요일 00:00에 자동 실행.Discord 알림 – 새 트랙이 추가될 때마다 Discord 채널에 알림 전송.
이러한 기능은 모두 Ruby Gem 형태로 모듈화하면 유지보수가 쉬워집니다.
# 🚀 결론 – 지금 바로 내 플레이리스트를 자동화해 보세요!
Music Monday에서 매주 올라오는 새로운 곡을 놓치지 않고, Spotify 플레이리스트 자동화 로 손쉽게 청취 환경을 구축할 수 있습니다.
GitHub 레포지토리: https://dev.to/mikeydorje/music-monday-spotify-open-source-sync-bot-e86
스타 ⭐️ 를 눌러 개발자를 응원하고, Fork 해서 나만의 기능을 추가해 보세요.
행동 유도: 지금 바로 레포지토리를 클론하고, 위 가이드를 따라 실행해 보세요. 자동 동기화가 작동하는 순간, 매주 월요일이 더욱 기대될 것입니다!
본 글은 Music Monday, Spotify 플레이리스트 자동화, Ruby 스크립트 를 핵심 SEO 키워드로 최적화했습니다.
Comments
Join the discussionNo comments yet. Be the first to comment.