알고리즘 기반 디스코드 음악 봇 "팬텀"
알고리즘 기반 음악 추천 디스코드 봇
개발 및 서버 이식
담당자 : 강영재
사용 언어 : Python
단순한 불편에 의해 시작한 프로젝트로, 디스코드 채널을 공유하는 사람들을 위해 음악을 추천하는 디스코드 봇을 개발하였습니다.
배경 설명
디스코드란?
디스코드는 게이머를 위한 무료 음성, 비디오 및 텍스트 채팅 플랫폼으로, 전 세계의 친구 및 커뮤니티와 연결할 수 있는 공간입니다.
사용자는 서버를 만들고, 그 서버에 친구를 초대하여 함께 음성 소통을할 수 있습니다.(물론 현재 화면을 공유하는 것도 가능합니다)
그 중에서도 "봇"은 디스코드 서버에서 자동으로 작업을 수행하는 프로그램으로, 사용자가 명령어를 입력하면 특정 작업을 수행합니다.
예를 들어, 음악을 재생하거나, 서버의 정보를 관리하는 등의 작업을 수행할 수 있습니다.
문제 상황
기본적으로 디스코드 음악 봇은 사용자가 검색할 음악 혹은 URL을 입력하면, 그 입력을 받아 Youtube API를 통해 음악을 검색하여 재생합니다.
하지만, API를 활용해 영상 혹은 음악을 재생하게 되면 광고가 뜨지 않고 조회수가 늘지 않게 됩니다.
따라서 Google은 자동화된 봇이 API를 통해 음악을 재생하고 봇을 판매해 수익을 얻는 행위를 금지하고 있습니다.
그럼에도 불구하고, 디스코드 서버를 공유하는 사람들끼리 대화를 나누며 동시에 같은 음악을 공유하는 문화는 2018년 이후로 정착되어 있습니다.
다른 디스코드 음악 봇의 경우, API 정지를 피하기 위해 사용자가 직접 본인의 로컬 컴퓨터에 API를 통해 음악을 미리 다운받고 이를 봇에서 재생하는 방법을 사용합니다.
하지만, 이 방법은 사용자가 직접 음악 다운로드 프로그램을 다운받아야 한다는 불편함이 존재합니다.
음악 다운로드 프로그램의 결함
음악 다운로드 프로그램의 경우, 사용자가 이 프로그램을 자신의 로컬 컴퓨터에 설치를 하고 디스코드 봇은 해당 프로그램을 통해서 음악을 다운 받고 이를 재생하는 방식입니다.
이 방법은 만약 디스코드 채널 내에서 8명 가량의 사용자가 음악을 듣고 있다면, 8명의 사용자가 모두 음악 다운로드 프로그램을 설치해야 하며, 각자의 컴퓨터에 음악을 다운받아야 합니다.
즉, 불필요하게 여러 사용자들에게 프로그램의 설치를 강요한다는 점에서 불편함이 존재합니다.
디스코드 봇 팬텀의 원리
우선, 팬텀은 전통적인 음악 봇의 형태를 띄고 있습니다.
단순하게 사용자가 듣고싶은 음악 혹은 URL을 입력하면, 팬텀은 그 음악을 Youtube API를 통해 검색하고 재생합니다.
Google에서는 한 개의 음악 봇이 여러개의 채널에서 동시에 음악을 재생하거나, 반복적이고 기계적으로 음악을 검색하는 것을 감지하면, 봇이 아님을 인증하라는 명령을 발송합니다.
팬텀의 경우, 현재 하나의 채널에서만 음악을 재생하고있기 때문에 유튜브 입장에서는 단순히 한 사용자가 음악을 재생하는 것처럼 보입니다.
알고리즘 기반 음악 추천 서비스
팬텀은 Youtube 알고리즘을 활용하여, 현재 재생중인 음악과 비슷한 음악을 추천합니다.
사용자가 음악을 재생하면, 팬텀은 그 음악의 URL을 Youtube API를 통해 검색하고, 알고리즘을 통해 다음에 재생할 음악을 대기열에 추가합니다.
왜 알고리즘이 필요한가?
디스코드 봇을 사용하다 보면 흔히 느꼈던 불편함 중에 하나가, 음악을 재생할 때마다 매번 음악을 검색해야 한다는 점입니다.
예를들어, 사용자가 A라는 노래를 대기열에 추가하면, 팬텀은 A라는 노래를 재생하게 되고, 노래가 끝난 후에는 자동으로 채널에서 나가게 됩니다.
하지만, 사용자가 다른 노래를 재생하고 싶다면, 사용자는 계속 다른 노래를 대기열에 추가해줘야 합니다.
이러한 불편함을 해결하기 위해, 팬텀은 사용자가 음악을 재생할 때마다 그 음악과 비슷한 음악을 자동으로 대기열에 추가합니다.
알고리즘의 동작 방식
팬텀이 A 노래를 재생중일 때, 알고리즘은 A 노래와 비슷한 음악을 대기열에 추가합니다.
이 과정에서, Google은 음악을 재생중에 다른 노래를 반복적으로 검색하는 팬텀을 봇으로 의심할 수 있습니다.
이에, Google은 팬텀에게 인증을 요구합니다.
사람인지 인증을 받기 전까지는 팬텀은 음악을 재생할 수 없습니다.
인증을 받는 방법
Google은 쿠키 기반 인증을 요구하는데, 이 인증은 실제 계정으로 Youtube에 로그인한 후 쿠키파일을 업로드함으로써 우회가 가능합니다.
따라서 팬텀은 지속적으로 쿠키를 업데이트 함으로써, Google의 인증을 우회하고 서비스를 지속할 수 있습니다.
팬텀의 단점
앞서 설명한 것 처럼, 여러 채널에서 팬텀을 사용하게 되면 API 정지를 먹을 수 있습니다.
따라서, 팬텀은 안정성 확보를 위해 하나의 채널에서만 사용해야 합니다.
팬텀의 확장 계획
이 디스코드 봇은 현재 "메이플스토리"게임내 인게임 커뮤니티 원들의 소통 창구로 활용되고 있는 채널에서 사용되고 있습니다.
이에, DB와의 연동을 통해 명령어를 기반으로 다양한 인게임적 기능을 추가할 예정입니다.
예를들어, 사용자가 "팬텀, 메이플스토리 캐릭터 이름"을 입력하면, 팬텀은 해당 캐릭터의 정보를 DB에서 검색하여 사용자에게 보여줄 수 있습니다.
또한, 전체 이용자의 정보를 DB에 저장하여, 각 이용자의 캐릭터가 장착하고 있는 캐시 아이템의 정보를 집계하여, 통계를 내어 현재 어떤 캐시 아이템이 인기있는지를 알려줄 수 있습니다.