웹사이트 검색

내 오래된 킨들은 내가 그것을 멋진 스포티파이 대시보드로 바꿀 때까지 먼지를 모으고 있었다


최근에 저는 약간의 셀프 호스팅과 홈랩에 푹 빠져 있어서, 주변에 굴러다니는 하드웨어를 최대한 활용하려고 하고 있습니다. 최근에 킨들이 낮은 전력 소비와 아름다운 전자 잉크 디스플레이 덕분에 훌륭한 대시보드가 된다는 것을 깨달았습니다. 그래서 저는 제 킨들을 스포티파이 리모컨과 대시보드로 사용하고 있습니다.

나의 첫 번째 킨들 대시보드는 생산성 타이머였다

저는 사용하지 않는 노트북 절반(화면이 없는 하프탑)이 있었는데, 그것을 작은 서버로 바꾸어 여러 앱을 호스팅했습니다. 그 앱 중 하나가 제 근무 시간을 추적하는 Timetagger였습니다. 이 앱은 훌륭하지만, 작업 시간 확인을 위해 탭을 전환해야 했습니다. 그래서 한눈에 쉽게 볼 수 있는 방법을 원했습니다. 처음에는 Timetagger의 타이머 출력을 제 휴대폰에 표시할 수 있을 거라고 생각했지만, 몇 시간 동안 화면을 켜두면 배터리가 너무 빨리 닳습니다. 그때 제 킨들이 이 작업에 완벽하다는 생각이 떠올랐습니다.

저는 Timetagger가 제공하는 API를 사용하여 타이머 정보를 가져왔습니다. 그런 다음 Timetagger 컨테이너와 동일한 서버에서 실행되는 간단한 bash 스크립트를 만들었습니다. 이 Bash 스크립트는 몇 초마다 갱신되는 HTML 페이지를 생성합니다. halftop은 로컬 네트워크에서 특정 포트로 그 페이지를 제공하며, 저는 내장 웹 브라우저를 사용하여 Kindle에서 접근할 수 있습니다. 이 페이지는 몇 초마다 업데이트된 타이머 데이터로 자동 갱신됩니다.

이 간단한 대시보드 설정은 제 목적에 정말 완벽해서 킨들에 표시할 수 있는 다른 것들을 생각하기 시작했습니다. 가장 먼저 떠오른 생각은 제 Spotify 클라이언트를 원격으로 제어할 수 있도록 설정하는 것이었습니다. 이렇게 하면 책상에서 작업하면서 타이머를 확인하거나 음악 재생을 제어하기 위해 앱을 전환할 필요가 없었습니다.

무료 앱을 찾았지만, 이것은 Spotify 프리미엄에서만 작동합니다

알고 보니 이 정확한 작업을 위한 앱이 이미 있습니다. 'Kindlify'라는 무료 웹 앱입니다. Kindle 브라우저에서 Kindlify.co 웹사이트를 열고, 휴대전화로 QR 코드를 스캔한 후 Spotify에 로그인하고 무언가를 재생하세요. 그런 다음 Kindle로 돌아오면 앨범 커버, 탐색 바, 트랙 및 아티스트 이름, 재생 컨트롤이 있는 아름다운 인터페이스가 표시됩니다.

이것은 Kindle에 연결된 어떤 블루투스 장치를 통해서도 음악을 재생하지 않습니다. 단지 리모컨일 뿐입니다. 음악은 실제로 실행 중인 클라이언트를 통해 계속 재생됩니다.

안타깝게도, 이 기능을 작동시키려면 프리미엄 Spotify 구독이 필요합니다. 왜냐하면 Spotify는 웹 API를 프리미엄 계정과만 공유하기 때문입니다. Spotify는 또한 다른 클라이언트와 데몬이 재생을 제어할 수 있게 해주는 'Spotify Connect' 기능을 제한했습니다. 그래서 저는 직접 하기로 결정했습니다.

나는 반쪽짜리 노트북과 가벼운 스크립트를 사용하여 스포티파이 대시보드를 만들었다

API를 얻을 수 없었고, 헤드리스 데몬을 사용하여 Spotify에 접근할 수도 없었기 때문에, Spotify 플레이어와 상호작용할 제3의 방법이 필요했습니다.

다행히도, Linux가 나를 구해주었다. Linux에는 앱들이 서로 소통할 수 있게 해주는 내부 'D-Bus' 시스템이 있다. 그래서 나는 서버에 일반 Spotify 클라이언트를 설치하고 D-Bus 인터페이스를 사용하여 제어할 수 있었다. playerctl이라는 가벼운 도구가 있는데, 이 도구는 D-Bus와의 상호작용을 단순화해준다. 코드를 작성할 필요가 없는데, 모든 것을 알아서 처리해주기 때문이다. 예를 들어, playerctl은 다음과 같은 명령으로 Spotify 재생을 일시정지할 수 있다.

playerctl -p spotify pause

다음, 재개, 메타데이터, 또는 제목을 인수로 전달할 수도 있습니다.

하프탑은 이미 리눅스를 실행하고 있었기 때문에 별도의 설정이 필요하지 않았다. 이제 스포티파이와 통신할 수 있는 간단한 CLI 도구가 생겼으니, 다음 단계는 스크립트 안에서 셸 명령을 사용하는 것이었다. 이 스크립트는 세 가지 작업을 수행하는 웹 서버가 될 것이다.

  1. 웹 페이지(원격 제어 인터페이스가 표시되는 곳)를 제공합니다
  2. 웹 페이지에서 전송된 요청(예: 다음 트랙 재생 요청)을 수신합니다
  3. 웹 페이지에서 받은 요청을 기반으로 playerctl 명령어를 실행합니다.

playerctl이 모든 복잡성을 추상화하고 있기 때문에 스크립트는 간단합니다. 저는 Claude에게 그 모든 작업을 수행할 수 있는 기본적인 Python 스크립트를 생성하게 했습니다. Claude는 관련 playerctl 명령을 실행하고 그 출력 결과를 출력하는 playerctl() 함수를 작성했습니다.

Python에는 모든 폴더를 HTTP 요청을 처리할 수 있는 간단한 웹 서버로 바꿀 수 있는 내장 http.server 라이브러리가 있습니다. Claude는 이것을 스크립트에 포함시켰고, 이를 웹 서버로 실행합니다. 저는 이 Spotify 리모트를 항상 제 로컬 네트워크에서만 접근할 예정이므로, 이 설정은 제 목적에 적합합니다.

이것이 실제로 작동하는 모습입니다

웹 서버를 시작한 후, 모든 것을 연결하기 위해 작동하는 Spotify 클라이언트만 필요했습니다. 같은 하프탑에 Spotify를 설치하고 실행했습니다. 로그인하고 트랙을 재생한 후, 제 설정을 테스트할 시간이었다.



첫 번째 버전은 꽤 기본적이었어요. 일시정지, 재개, 트랙 건너뛰기용 세 개의 버튼만 있었습니다. 기능은 했지만, 그렇게 멋지게 보이지는 않았죠. 실제 대시보드처럼 보이는 무언가를 원했습니다. 그래서 두 번째 버전에서는 클로드에게 진행 바, 커버 아트, 트랙, 아티스트, 앨범 정보를 포함한 미니멀리스트 흑백 인터페이스를 만들어 달라고 요청했습니다.

조금 수동으로 조정한 후, 지금 이렇게 되었습니다. 이 페이지는 현재 재생 중인 'Now Playing' 화면을 보여주기 위해 몇 초마다 자동으로 새로고침됩니다.




같은 리모컨이 내 전화기에서도 작동해서 이제 내 Spotify 재생을 제어할 수 있는 방법이 두 가지가 생겼다. 하지만 킨들은 화면을 몇 시간 동안 켜 두어도 배터리를 거의 소모하지 않기 때문에 완벽한 대시보드가 된다. 또한 눈에도 더 편하다.

관련기사