Rust로 작성된 터미널용 Spotify 클라이언트.
위 데모의 터미널은 Rigel 테마를 사용하고 있습니다.
스포티파이 TUI
홈브류
스냅
AUR
아니야
공허한 리눅스
페도라/센트OS
뱃짐
윈도우
수동
Linux에 대한 참고 사항
스쿠프 설치 프로그램
설치
Spotify의 API에 연결
용법
구성
아직 구현되지 않은 높은 수준의 요구사항
Linux용 Windows 하위 시스템
제한 사항
Spotify와 함께 사용
사용된 라이브러리
개발
기여자
로드맵
바이너리 실행 파일은 spt
입니다.
macOS와 Linux 모두에 해당
양조 설치 Spotify-tui
업데이트하려면 다음을 실행하세요.
양조 업그레이드 Spotify-tui
Snap이 설치된 시스템의 경우 다음을 실행합니다.
스냅 설치 spt
안정적인 버전이 자동으로 설치됩니다.
야간 빌드를 설치하려면 다음을 실행하세요.
스냅 설치 spt --edge
Arch Linux 사용자의 경우 여기 AUR에서 패키지를 찾을 수 있습니다. 그러나 AUR 도우미를 사용하는 경우 해당 도우미에서 직접 설치할 수 있습니다(예: yay의 경우).
예 -S Spotify-tui
spotify-tui
패키지로 사용 가능합니다. 설치하려면 다음을 실행하세요.
nix-env -iA nixpkgs.spotify-tui
여기서 nixpkgs
는 구성의 채널 이름입니다. 최신 버전으로 설치하려면 불안정 채널을 사용하세요. environment.systemPackages
(NixOS의 경우) 또는 home-manager를 사용하는 경우 home.packages
에 패키지를 추가할 수도 있습니다.
공식 저장소에서 사용 가능합니다. 설치하려면 다음을 실행하세요.
sudo xbps-install -Su Spotify-tui
Copr 저장소에서 사용 가능합니다. 설치하려면 다음을 실행하세요.
sudo dnf copr 활성화 atim/spotify-tui -y && sudo dnf install spotify-tui
릴리스 페이지에 있는 사전 빌드된 바이너리가 아키텍처를 지원하지 않는 경우 이 옵션을 사용하세요.
먼저 Rust를 설치하고(권장되는 rustup
설치 방법 사용) 그런 다음
화물 설치 Spotify-tui
이 방법은 소스에서 바이너리를 빌드합니다.
업데이트하려면 동일한 명령을 다시 실행하세요.
Linux에서 컴파일하려면 libssl
용 개발 패키지가 필요합니다. 기본 설치 지침은 OpenSSL 설치를 참조하세요. 종속성을 찾으려면 컴파일 시 pkg-config
도 설치되어 있어야 합니다.
Linux용 Windows 하위 시스템을 사용하는 경우 추가 종속성을 설치해야 합니다.
먼저, Scoop 설치 프로그램이 Windows 상자에 있는지 확인하십시오. 지침을 보려면 Scoop.sh를 방문하십시오.
그런 다음 powershell을 열고 다음 두 명령을 실행하십시오.
스쿠프 버킷 스쿠프 버킷 추가 https://github.com/Rigellute/scoop-bucket 스쿠프 설치 Spotify-tui
해당 프로그램은 spt
또는 spt.exe
로 사용 가능합니다.
OS에 맞는 최신 바이너리를 다운로드하세요.
방금 다운로드한 파일을 cd
에 넣고 압축을 푼다.
cd
spotify-tui
로 이동하고 ./spt
로 실행합니다.
spotify-tui
이름으로 음악을 찾고 트랙을 재생하려면 Spotify의 API에 연결해야 합니다.
앱을 처음 실행할 때 설정 방법에 대한 지침이 표시됩니다.
그러나 여기에 다시 있습니다:
Spotify 대시보드로 이동
Create an app
클릭하세요.
이제 귀하의 Client ID
와 Client Secret
볼 수 있습니다.
이제 Edit Settings
클릭하세요.
리디렉션 URI에 http://localhost:8888/callback
추가합니다.
아래로 스크롤하여 Save
클릭하세요.
이제 Spotify로 인증할 준비가 되었습니다!
터미널로 돌아가세요
spt
실행
Client ID
입력하세요
Client Secret
입력하세요
Enter를 눌러 기본 포트(8888)를 확인하거나 사용자 정의 포트를 입력하세요.
권한을 요청하기 위해 공식 Spotify 웹페이지로 리디렉션됩니다.
권한을 수락하면 localhost로 리디렉션됩니다. 모든 것이 순조롭게 진행되면 리디렉션 URL이 자동으로 구문 분석되어 완료됩니다. 어떤 이유로 로컬 웹 서버에 오류가 발생하면 실행 중인 서버가 없기 때문에 "연결 거부됨"과 같은 내용이 표시된 빈 웹 페이지로 리디렉션됩니다. 어쨌든 URL을 복사하여 터미널의 프롬프트에 붙여넣습니다.
이제 spotify-tui
사용할 준비가 되셨나요?
${HOME}/.config/spotify-tui/client.yml
에서 언제든지 구성을 편집할 수 있습니다. (스냅의 경우 ${HOME}/snap/spt/current/.config/spotify-tui/client.yml
)
바이너리 이름은 spt
입니다.
인수 없이 spt
실행하면 UI가 표시됩니다. 누르다 ?
현재 구현된 주요 이벤트와 해당 작업을 보여주는 도움말 메뉴를 표시합니다. UI가 수행하는 대부분의 작업을 수행할 수 있는 CLI도 있습니다. 자세히 알아보려면 spt --help
사용하세요.
다음은 여러분을 흥분시킬 몇 가지 예입니다.
spt --completions zsh # Prints shell completions for zsh to stdout (bash, power-shell and more are supported) spt play --name "Your Playlist" --playlist --random # Plays a random song from "Your Playlist" spt play --name "A cool song" --track # Plays 'A cool song' spt playback --like --shuffle # Likes the current song and toggles shuffle mode spt playback --toggle # Plays/pauses the current playback spt list --liked --limit 50 # See your liked songs (50 is the max limit) # Looks for 'An even cooler song' and gives you the '{name} from {album}' of up to 30 matches spt search "An even cooler song" --tracks --format "%t from %b" --limit 30
스냅 ${HOME}/snap/spt/current/.config/spotify-tui/config.yml
에 대한 구성 파일은 ${HOME}/.config/spotify-tui/config.yml
에 있습니다(혼동하지 마세요). Spotify 인증을 처리하는 client.yml 사용)
다음은 샘플 config.yml 파일입니다.
# 샘플 구성 파일# 테마 색상은 "255, 255, 255" 형식의 RGB 문자열이거나 터미널 테마의 색상을 참조하는 문자열(재설정, 검정색, 빨간색, 녹색, 노란색, 파란색, 자홍색, 청록색)일 수 있습니다. , Gray, DarkGray, LightRed, LightGreen, LightYellow, LightBlue, LightMagenta, LightCyan, White.theme: active: Cyan # 목록에서 현재 재생 중인 노래 배너: LightCyan # 출시 시 "spotify-tui" 배너 error_border: 빨간색 # 오류 대화 상자 테두리 error_text: LightRed # 오류 메시지 텍스트(예: "Spotify API에서 오류 404를 보고했습니다.") 힌트: 노란색 # 오류가 있는 힌트 텍스트 hovered: 마젠타색 # hovered 창 테두리 inactive: 회색 # 비활성 창 테두리 playbar_Background: 검은색 # 진행률 표시줄 배경 playbar_progress: LightCyan # 진행률 표시줄의 일부가 채워짐 playbar_progress_text: 청록색 # 진행률 표시줄의 노래 길이 및 재생 시간/왼쪽 표시기 playbar_text: 흰색 # 플레이어 창의 아티스트 이름 selected: LightCyan # a) 선택한 창 테두리, b) 목록에서 항목을 가리키고, c) 플레이어의 트랙 제목 text: "255, 255, 255" # 창의 텍스트 header: 흰색 # 창의 헤더 텍스트(예: '제목', '아티스트' 등)behavior:eek_milliseconds: 5000 볼륨_증분: 10 # 숫자가 낮을수록 "초당 프레임 수"가 높아집니다. 오디오 시각화가 더 부드러워지도록 이 숫자를 줄일 수 있지만 비용이 많이 들 수 있습니다! Tick_rate_milliseconds: 250 # 텍스트 강조를 활성화합니다(일반적으로 기울임꼴/굵은 텍스트 스타일). 터미널 구성이 제한되어 있고 텍스트 이스케이프 렌더링이 UI를 방해하는 경우 이 기능을 비활성화하는 것이 중요할 수 있습니다. 활성화_텍스트_강조: true # Spotify API와 통신할 때마다 UI 오른쪽 상단에 로딩 표시기를 표시할지 여부를 제어합니다. show_loading_indicator: 사실 # 더 큰 검색창을 더 작게 만드는 반응형 레이아웃을 비활성화합니다. # 화면을 표시하고 넓은 검색창을 적용합니다. Enforce_wide_search_bar: 거짓 # "좋아요"를 누른 Spotify 항목 옆에 표시할 텍스트 아이콘을 결정합니다. # 노래와 앨범을 좋아하거나 아티스트를 팔로우했습니다. 임의의 길이의 문자열이 될 수 있습니다. # 이 아이콘에는 패치된 Nerd 글꼴이 필요합니다. like_icon: ♥ shuffle_icon: ? 반복_트랙_아이콘: ? 반복_컨텍스트_아이콘: ? Playing_icon: ▶ 일시 중지_아이콘: ⏸ # ANSI 이스케이프 코드를 통해 창 제목을 "spt - Spotify TUI"로 설정합니다. set_window_title: truekeybindings: # 두 개의 키만 사용하는 경우 키 입력을 사용할 수 있습니다. # ctrl-q가 작동합니다. # ctrl-alt-q는 그렇지 않습니다. 뒤로: "ctrl-q" jump_to_album: "a" # Shift 수정자는 대문자를 사용합니다(다른 수정자 키에도 적용됨) # Ctrl-A와 유사) jump_to_artist_album: "A" 관리 장치: "d" 감소_볼륨: "-" 증가_볼륨: "+" Toggle_playback: " " 탐색_뒤로: "<" 탐색_전달: ">" next_track: "n" 이전_트랙: "p" copy_song_url: "c" copy_album_url: "C" 돕다: "?" 셔플: "ctrl-s" 반복: "r" 찾다: "/" audio_analytic: "v" jump_to_context: "o" basic_view: "B" add_item_to_queue: "z"
이 앱은 스트리밍 자체를 처리하지 않는 Spotify의 웹 API를 사용합니다. 따라서 공식 Spotify 클라이언트가 열려 있거나 Spotify와 같은 더 가벼운 대안이 필요합니다.
트랙을 재생하려면 Spotify를 사용하려면 프리미엄 계정이 있어야 합니다.
Spotifyd 설명서에 따라 설정하세요.
그 이후에는 별로 할 일이 없습니다.
Spotifyd 데몬 실행을 시작합니다.
spt
시작
d
눌러 장치 선택 메뉴로 이동하면 스포티파이된 "장치"가 거기에 있어야 합니다. 그렇지 않은 경우 이 문서를 확인하세요.
투이르
알스포티파이
OpenSSL 설치
러스트 설치
xorg-dev
설치(클립보드 지원에 필요)
이 저장소를 복제하거나 포크하여 cd
로 저장하세요.
그리고 cargo run
연결 오류가 발생할 수 있습니다. 그렇다면 아마도 클립보드 패키지에 필요한 추가 종속성을 설치해야 할 것입니다.
sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
다음 멋진 분들에게 감사드립니다(이모지 키):
알렉산더 켈리리스 ? ? ? ? ? ? | 미카엘 마르케스 ? | 그제고르츠 코페르와스 | 오스틴 가스서트 | 칼렌 로비네트 | M*C*O ? | 앤드류 친 |
샘 나세르 | 미카 | 네리글리사르 | 티몬 | 에코사요나라 | D-니스 ? | 그르제고르츠 파울릭 |
레나르트 베른하르트 | 아르노 르페브르 | tem1029 | 피터 K. 모스 | 제프 섀넌 | 재커리 메이휴 | 팔티스 |
마르셀 슈람 | 저우팡이 | 맥스 | 스벤 반 데르 블리스트 | 제이콥크리스마쉬 | 닐스 라우치 | 닉 스톡턴 ? ? |
스튜어트 힌슨 | 샘 칼버트 | 제로엔 위젠버그 | 킴벌리 쿡 | 오드리 백스터 | 노르만 인 | 피터 마트만 |
알렉산드르 | 핀 보스 | 카를로스 에르난데스 ? | 페드로 알베스 | jtagcat | 벤자민 키토 | 알레스 나즈만 ? |
제레미 스투키 | ('⌣`ʃhong) | 아르템 폴리쉬추크 ? | 크리스 소스닌 | 벤 부스 | 션 리 | 티모시거버 |
페르디난드 라타이차크 | 쉴 촉시 | 마이클 헬위그 | 올리버 다니엘 | 드류 피셔 | 엔코더-1 | 맥과이어 린톨 |
리카르도 올긴 | 케이스케 토요타 | 크레이그 애스틸 | 오니엘파 | usrme | 세르게이 A. | 오카다 히데유키 |
케패 | 에리코 노게이라 로림 | 알렉산더 마인하르트 슈러 | 온드르제이 킨슈트 | 크라이언90 | n-이바노프 | 비1예우 |
5월 | 브루노 A. 무치뇨 | 핀 헤디거 | dp304 | 마르코 미케라 | 마르코 이에니 ? | 아르투르 코바치 |
안토니 켈러만 | 라스무스 페데르센 | 느와르-Z | 데이비드 베일리 | 양벽 | 화냈어 | 제시 |
상 | 다카하시 유우키 | 알레한드로 앙굴로 | 안톤 코스틴 | 저스틴 섹스턴 | 지아티 레 | 매튜 코빙 |
마일로 ? | 디에고 베랄리 | 마야 보자르스카 |
이 프로젝트는 모든 기여자 사양을 따릅니다. 어떤 종류의 기여도 환영합니다!
목표는 결국 거의 모든 Spotify 기능을 구현하는 것입니다.
재생목록에 노래 추가
모든 보기에서 결과 페이지를 스크롤할 수 있습니다.
이 표는 Spotify API로 가능한 모든 것, 이미 구현된 것, 그리고 그것이 필수적인지 여부를 보여줍니다.
API 방식 | 아직 구현되었나요? | 설명 | 필수적인? |
---|---|---|---|
길 | 아니요 | 트랙의 ID, URI 또는 URL이 주어지면 단일 트랙을 반환합니다. | 아니요 |
트랙 | 아니요 | 트랙 ID, URI 또는 URL 목록이 제공된 트랙 목록을 반환합니다. | 아니요 |
아티스트 | 아니요 | 아티스트의 ID, URI 또는 URL이 지정된 단일 아티스트를 반환합니다. | 예 |
예술가 | 아니요 | 아티스트 ID, URI 또는 URL이 지정된 아티스트 목록을 반환합니다. | 아니요 |
아티스트_앨범 | 예 | 아티스트 앨범에 대한 Spotify 카탈로그 정보 받기 | 예 |
아티스트_톱_트랙 | 예 | 국가별 아티스트의 상위 10개 트랙에 대한 Spotify 카탈로그 정보를 받으세요. | 예 |
아티스트_관련_아티스트 | 예 | 식별된 아티스트와 유사한 아티스트에 대한 Spotify 카탈로그 정보를 얻으세요. 유사성은 Spotify 커뮤니티의 청취 기록 분석을 기반으로 합니다. | 예 |
앨범 | 예 | 앨범의 ID, URI 또는 URL이 주어지면 단일 앨범을 반환합니다. | 예 |
앨범 | 아니요 | 앨범 ID, URI 또는 URL이 지정된 앨범 목록을 반환합니다. | 아니요 |
검색_앨범 | 예 | 쿼리를 기반으로 앨범 검색 | 예 |
search_artist | 예 | 쿼리를 기반으로 아티스트 검색 | 예 |
검색_트랙 | 예 | 쿼리를 기반으로 트랙 검색 | 예 |
검색_재생목록 | 예 | 쿼리를 기반으로 재생목록 검색 | 예 |
앨범_트랙 | 예 | 앨범 트랙에 대한 Spotify 카탈로그 정보 얻기 | 예 |
사용자 | 아니요 | Spotify 사용자에 대한 기본 프로필 정보를 가져옵니다. | 아니요 |
재생목록 | 예 | Spotify 재생 목록에 대한 자세한 내용을 확인하세요 | 예 |
current_user_playlists | 예 | 프로필을 가져오지 않고도 현재 사용자 재생 목록을 가져옵니다. | 예 |
user_playlists | 아니요 | 사용자의 재생목록을 가져옵니다. | 아니요 |
user_playlist | 아니요 | 사용자의 재생목록을 가져옵니다. | 아니요 |
user_playlist_tracks | 예 | 사용자가 소유한 재생목록 트랙의 전체 세부정보를 확인하세요. | 예 |
user_playlist_create | 아니요 | 사용자를 위한 재생목록을 만듭니다. | 예 |
user_playlist_change_detail | 아니요 | 재생목록의 이름 및/또는 공개/비공개 상태를 변경합니다. | 예 |
user_playlist_unfollow | 예 | 사용자의 재생 목록을 팔로우 해제(삭제)합니다. | 예 |
user_playlist_add_track | 아니요 | 재생 목록에 트랙을 추가합니다. | 예 |
user_playlist_replace_track | 아니요 | 재생 목록의 모든 트랙 교체 | 아니요 |
user_playlist_recorder_tracks | 아니요 | 재생 목록의 트랙 재정렬 | 아니요 |
user_playlist_remove_all_occurrences_of_track | 아니요 | 주어진 재생목록에서 주어진 트랙의 모든 항목을 제거합니다. | 아니요 |
user_playlist_remove_특이적_occurrenes_of_track | 아니요 | 주어진 재생목록에서 주어진 트랙의 모든 항목을 제거합니다. | 아니요 |
user_playlist_follow_playlist | 예 | 현재 인증된 사용자를 재생 목록의 팔로어로 추가합니다. | 예 |
user_playlist_check_follow | 아니요 | 지정된 사용자가 지정된 재생목록을 팔로우하고 있는지 확인하세요. | 예 |
나 | 아니요 | 현재 사용자에 대한 자세한 프로필 정보를 가져옵니다. | 예 |
현재_사용자 | 아니요 | me 위한 별칭 | 예 |
current_user_playing_track | 예 | 현재 트랙을 재생 중인 현재 사용자에 대한 정보를 가져옵니다. | 예 |
current_user_saved_albums | 예 | 현재 인증된 사용자의 "Your Music" 라이브러리에 저장된 앨범 목록을 가져옵니다. | 예 |
current_user_saved_tracks | 예 | 사용자가 저장한 트랙 또는 '좋아요 노래'를 가져옵니다. | 예 |
current_user_followed_artists | 예 | 아티스트 목록과 현재 승인된 사용자 목록을 가져옵니다. | 예 |
current_user_saved_tracks_delete | 예 | 현재 사용자의 "Your Music" 라이브러리에서 하나 이상의 트랙을 제거합니다. | 예 |
current_user_saved_tracks_contain | 아니요 | 현재 Spotify 사용자의 "Your Music" 라이브러리에 하나 이상의 트랙이 이미 저장되어 있는지 확인하세요. | 예 |
current_user_saved_tracks_add | 예 | 현재 사용자의 "Your Music" 라이브러리에 하나 이상의 트랙을 저장합니다. | 예 |
current_user_top_artists | 아니요 | 현재 사용자의 최고 아티스트 가져오기 | 예 |
current_user_top_tracks | 아니요 | 현재 사용자의 인기 트랙 가져오기 | 예 |
current_user_recently_played | 예 | 현재 사용자가 최근에 재생한 트랙을 가져옵니다. | 예 |
current_user_saved_albums_add | 예 | 현재 사용자의 "Your Music" 라이브러리에 하나 이상의 앨범을 추가합니다. | 예 |
current_user_saved_albums_delete | 예 | 현재 사용자의 "Your Music" 라이브러리에서 하나 이상의 앨범을 제거합니다. | 예 |
user_follow_artists | 예 | 한 명 이상의 아티스트 팔로우 | 예 |
user_unfollow_artists | 예 | 한 명 이상의 아티스트 팔로우 해제 | 예 |
user_follow_users | 아니요 | 한 명 이상의 사용자 팔로우 | 아니요 |
user_unfollow_users | 아니요 | 한 명 이상의 사용자 팔로우 해제 | 아니요 |
추천_재생목록 | 아니요 | Spotify 추천 재생 목록 목록 가져오기 | 예 |
new_releases | 아니요 | Spotify에 소개된 새 앨범 릴리스 목록을 받아보세요. | 예 |
카테고리 | 아니요 | Spotify에서 항목에 태그를 지정하는 데 사용되는 카테고리 목록을 가져옵니다. | 예 |
추천 | 예 | 시드를 기반으로 추천 받기 | 예 |
audio_features | 아니요 | 트랙의 오디오 기능 가져오기 | 아니요 |
audios_features | 아니요 | 여러 트랙에 대한 오디오 기능 가져오기 | 아니요 |
오디오 분석 | 예 | 트랙에 대한 오디오 분석 받기 | 예 |
장치 | 예 | 사용자의 사용 가능한 장치 가져오기 | 예 |
현재_재생 | 예 | 사용자의 현재 재생에 대한 정보 얻기 | 예 |
현재_재생 중 | 아니요 | 사용자의 현재 재생 중인 트랙 가져오기 | 아니요 |
전송_재생 | 예 | 사용자의 재생 전송 | 예 |
시작_재생 | 예 | 사용자 재생 시작/재개 | 예 |
일시정지_재생 | 예 | 사용자 재생 일시 중지 | 예 |
next_track | 예 | 사용자 재생을 다음 트랙으로 건너뛰기 | 예 |
이전_트랙 | 예 | 사용자 재생을 이전 트랙으로 건너뛰기 | 예 |
탐색_트랙 | 예 | 현재 재생 중인 트랙에서 위치 탐색 | 예 |
반복하다 | 예 | 사용자 재생 시 반복 모드 설정 | 예 |
용량 | 예 | 사용자 재생 볼륨 설정 | 예 |
혼합 | 예 | 사용자 재생을 위한 셔플 전환 | 예 |