프로젝트 소개

Music Bot은 Navidrome 라이브러리를 위한 Telegram 컴패니언입니다. Tidal, Spotify, Apple Music, Deezer, YouTube Music, SoundCloud, Amazon Music, Shazam 같은 서비스의 링크를 붙여넣으면 트랙이나 앨범을 자동으로 식별하고, slskd를 통해 Soulseek P2P 네트워크에서 무손실 복사본을 찾아 전체 메타데이터(아티스트, 앨범, 트랙 번호, 장르, ReplayGain, 커버 아트, 동기화된 가사)로 태깅한 뒤 파일을 라이브러리에 넣습니다. 1분 후면 Navidrome에서 음악을 재생할 수 있습니다. 주요 기능: • FLAC로 앨범/트랙 다운로드, 무손실 피어가 없을 경우 선택적 mp3 대체(≥320 kbps) 제공. • 까다로운 소스 선택: 각 후보는 Deezer 데이터와 재생 시간을 대조하고 신뢰도와 피어 안정성 점수를 매깁니다. • 풍부한 태깅: Deezer 메타데이터와 Last.fm 커뮤니티 태그를 결합해 세분화된 장르를 제공합니다. • 라이브러리 관리: `/retag`는 전체 컬렉션의 태그를 새로 고치고, `/scan`은 Navidrome을 다시 스캔하며, `/stats`는 크기를 표시하고, `/help`는 명령어를 나열합니다. • 인라인 검색: `@yourbot 쿼리`를 입력해 Deezer, Navidrome 라이브러리를 검색하거나 `np`(현재 트랙 전송), `s`(링크 공유), `l`(가사), `del 이름`(앨범 제거) 같은 명령을 실행할 수 있습니다. • 로컬 업로드: 봇의 업로드 페이지나 `./bot-data/uploads/`에 zip 또는 폴더를 넣으면 동일한 태깅 및 중복 제거 파이프라인을 거칩니다. • 개인정보 보호: `ALLOWED_USERS`에 나열된 Telegram 사용자 ID만 상호작용할 수 있습니다. 설정은 두 개의 서비스(slskd와 music-bot)로 구성된 Docker Compose 스택이며 `.env`에서 구성합니다. 봇은 slskd와 REST API로 통신하고, 메타데이터에는 Deezer의 무료 API를 사용하며, 품질 제한(`MAX_BIT_DEPTH`, `MAX_SAMPLE_RATE_HZ`, `MAX_FILE_BYTES`)을 준수합니다. 선택적 프록시 지원과 로컬 업로드 HTTP 포트를 사용할 수 있습니다. 사용법은 간단합니다: 음악 링크를 여넣어 다운로드를 시작하거나, 기존 항목을 다시 다운로드하려면 `re`를 추가하거나, 인라인 모드로 빠른 검색과 재생 작업을 할 수 있습니다. 봇은 Telegram에서 어떤 피어가 선택되었는지, 트랙 진행 상황, 최종 결과를 보여주는 실시간 상태 업데이트를 제공합니다. 전반적으로 Music Bot은 새 음악을 확보하고 태깅하여 Navidrome에 통합하는 과정을 자동화하며, Telegram에서 직접 재생 제어와 가사를 제공합니다.