用 Rust 寫的終端 Spotify 用戶端。
上面示範中的終端使用 Rigel 主題。
Spotify TUI
自製
折斷
尿素尿率
尼克
虛空Linux
費多拉/CentOS
貨物
視窗
手動的
Linux 上的注意事項
湯匙安裝程序
安裝
連接到 Spotify 的 API
用法
配置
高層要求尚未落實
Linux 的 Windows 子系統
限制
與 Spotify 一起使用
使用的庫
發展
貢獻者
路線圖
二進位可執行檔是spt
。
適用於 macOS 和 Linux
釀造安裝spotify-tui
要更新,請運行
brew 升級 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 子系統,則需要安裝其他相依性。
首先,請確保您的 Windows 機器上有 scoop 安裝程序,有關說明,請造訪 scoop.sh
然後打開 powershell 並執行以下兩個命令:
勺桶添加 scoop-bucket https://github.com/Rigelolute/scoop-bucket 獨家安裝Spotify-tui
之後程式可用作: spt
或spt.exe
下載適合您的作業系統的最新二進位。
cd
到剛剛下載的檔案並解壓縮
cd
到spotify-tui
並使用./spt
運行
spotify-tui
需要連接到 Spotify 的 API 才能按名稱找到音樂、播放曲目等。
當您首次執行應用程式時,將會顯示有關如何設定的說明。
但他們又來了:
前往 Spotify 儀表板
點擊Create an app
現在您可以看到您的Client ID
和Client Secret
現在點擊Edit Settings
將http://localhost:8888/callback
加入到重定向 URI
向下捲動並點擊Save
您現在已準備好使用 Spotify 進行身份驗證!
返回終端
運行spt
輸入您的Client ID
輸入您的Client Secret
按 Enter 確認預設連接埠 (8888) 或輸入自訂連接埠
您將被重新導向到 Spotify 官方網頁,詢問您的權限。
接受權限後,您將被重定向到本機。如果一切順利,重定向 URL 將自動解析,現在就完成了。如果本地網路伺服器因某種原因發生故障,您將被重新導向到空白網頁,該網頁可能會顯示「連線被拒絕」之類的內容,因為沒有伺服器正在執行。不管怎樣,複製 URL 並貼上到終端的提示中。
現在您準備好使用spotify-tui
嗎?
您可以隨時在${HOME}/.config/spotify-tui/client.yml
編輯設定。 (對於快照${HOME}/snap/spt/current/.config/spotify-tui/client.yml
)
該二進位檔案名為spt
。
運行不帶參數的spt
將顯示 UI。按?
開啟幫助選單,顯示目前實施的關鍵事件及其操作。還有一個 CLI 可以完成 UI 所做的大部分工作。使用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}/.config/spotify-tui/config.yml
,用於快照${HOME}/snap/spt/current/.config/spotify-tui/config.yml
(不要混淆使用處理Spotify 身份驗證的client.yml)
以下是範例 config.yml 檔案:
# 範例設定檔# 主題顏色可以是「255, 255, 255」形式的 rgb 字串,也可以是引用終端主題顏色的字串:Reset、Black、Red、Green、Yellow、Blue、Magenta、Cyan , Gray , DarkGray, LightRed, LightGreen, LightYellow, LightBlue, LightMagenta, LightCyan, White.theme: active: Cyan # 清單中目前播放的歌曲 橫幅:LightCyan # 發佈時的“spotify-tui”橫幅 error_border: Red # 錯誤對話框邊框 error_text: LightRed # 錯誤訊息文字(例如「Spotify API 報告錯誤 404」) 提示:黃色 # 錯誤提示文本 懸停:洋紅色#懸停窗格邊框 inactive: Gray # 非活動窗格的邊框 playbar_background: Black # 進度條背景 playbar_progress: LightCyan # 進度條的填滿部分 playbar_progress_text: Cyan # 歌曲長度和播放時間/進度條中的左側指示器 playbar_text: White # 播放器窗格中的藝術家姓名 selected: LightCyan # a) 選定的窗格邊框,b) 清單中懸停的項目,&c) 播放器中的曲目標題 text: "255, 255, 255" # 窗格中的文本 header: White # 窗格中的標題文字(例如「標題」、「藝術家」等)behavior:eek_milliseconds: 5000 體積增量:10 # 數字越小,「每秒影格數」越高。您可以減少此數字,以使音訊視覺化更加流暢,但這可能會很昂貴! 滴答率毫秒:250 # 啟用文字強調(通常是斜體/粗體文字樣式)。如果終端配置受到其他限制且渲染文字轉義會幹擾 UI,則停用此功能可能很重要。 啟用文字強調:true # 控制與 Spotify API 通訊時是否在 UI 右上角顯示載入指示器 顯示載入指示符:true # 停用響應式佈局,使搜尋列變小變大 # 篩選並強制使用寬搜尋欄 force_wide_search_bar: false # 確定在「喜歡的」Spotify 項目旁邊顯示的文字圖標,例如 # 喜歡歌曲和專輯,或關注藝術家。可以是任意長度的字串。 # 這些圖示需要修補的書呆子字體。 喜歡的圖示:♥ 隨機播放圖示:? 重複軌道圖標:? 重複上下文圖示:? 播放圖示: ▶ 暫停圖標:⏸ # 透過 ANSI 轉義碼將視窗標題設定為「spt - Spotify TUI」。 set_window_title: truekeybindings: # 如果只使用兩個鍵,則可以使用按鍵: # ctrl-q 有效, # ctrl-alt-q 沒有。 返回:“ctrl-q” 跳到專輯:“a” # Shift 修飾鍵使用大寫字母(也適用於其他修飾鍵 # 就像 ctrl-A) 跳到藝術家專輯:“A” 管理設備:“d” 減少音量:“-” 增加音量:“+” 切換播放:“” 向後尋找:“<” 尋求轉發:“>” 下一個軌道:“n” 上一首曲目:“p” 複製歌曲網址:“c” copy_album_url:“C” 幫助: ”?” 隨機播放:“ctrl-s” 重複:“r” 搜尋: "/" 音訊分析:“v” 跳到上下文:“o” 基本視圖:“B” 新增項目到佇列:“z”
該應用程式使用 Spotify 的 Web API,該 API 本身不處理串流媒體。因此,您需要開啟官方 Spotify 用戶端,或使用更輕量級的替代方案,例如 Spotify。
如果您想播放曲目,Spotify 要求您擁有 Premium 帳戶。
請按照 Spotify 文件進行設定。
之後就沒什麼了。
開始執行 Spotify 守護程式。
啟動spt
按d
到設備選擇選單,spotifyd“設備”應該在那裡 - 如果沒有,請檢查這些文檔
tui-rs
rspotify
安裝 OpenSSL
安裝 Rust
安裝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 | 彼得·莫斯 | 傑夫·香農 | 札卡里·梅休 | 傑法爾蒂斯 |
馬塞爾施拉姆 | 週芳怡 | 最大限度 | 斯文·范德弗利斯特 | 雅各布·克里斯馬什 | 尼爾斯·勞奇 | 尼克·斯托克頓 ? ? |
史都華辛森 | 薩姆·卡爾弗特 | 傑羅恩‧維金伯格 | 金伯利·庫克 | 奧黛麗·巴克斯特 | 諾曼 | 彼得·馬特曼 |
亞歷山大 | 芬·沃斯 | 卡洛斯·埃爾南德斯 ? | 佩德羅·阿爾維斯 | 標籤貓 | 班傑明·基托 | 阿萊斯·奈曼 ? |
傑里米·斯塔基 | (´⌣`ʃƪ) | 阿爾喬姆·波利甚丘克 ? | 克里斯·索斯寧 | 本布希 | 李肖恩 | 蒂莫西·格伯 |
費迪南德·拉塔伊恰克 | 謝爾·喬克西 | 邁克爾·赫爾維格 | 奧利佛丹尼爾 | 德魯費雪 | 編碼器-1 | 麥奎爾·林圖爾 |
里卡多·奧爾金 | 豐田圭介 | 克雷格·阿提爾 | 奧尼爾法 | 烏爾梅 | 謝爾蓋·A. | 岡田英行 |
凱帕埃 | 埃里科·諾蓋拉·羅利姆 | 亞歷山大·邁因哈特·舍雷爾 | 翁德熱·金斯特 | 克賴安90 | 伊凡諾夫 | 比1yeu |
可能 | 布魯諾·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 的相簿列表 | 不 |
搜尋相簿 | 是的 | 根據查詢搜尋相冊 | 是的 |
搜尋藝術家 | 是的 | 根據查詢搜尋藝術家 | 是的 |
搜尋軌跡 | 是的 | 根據查詢搜尋曲目 | 是的 |
搜尋播放列表 | 是的 | 根據查詢搜尋播放列表 | 是的 |
專輯曲目 | 是的 | 獲取有關專輯曲目的 Spotify 目錄信息 | 是的 |
使用者 | 不 | 獲取有關 Spotify 用戶的基本個人資料信息 | 不 |
播放清單 | 是的 | 獲取有關 Spotify 播放列表的完整詳細信息 | 是的 |
目前用戶播放列表 | 是的 | 獲取當前用戶的播放列表,而無需獲取他的個人資料 | 是的 |
使用者播放列表 | 不 | 取得使用者的播放列表 | 不 |
使用者播放列表 | 不 | 取得使用者的播放列表 | 不 |
使用者播放清單曲目 | 是的 | 獲取用戶擁有的播放列表曲目的完整詳細信息 | 是的 |
用戶播放清單創建 | 不 | 為使用者建立播放列表 | 是的 |
用戶播放列表更改詳細信息 | 不 | 變更播放清單的名稱和/或公有/私有狀態 | 是的 |
用戶播放清單取消關注 | 是的 | 取消追蹤(刪除)用戶的播放列表 | 是的 |
使用者播放清單新增軌道 | 不 | 將曲目新增至播放列表 | 是的 |
使用者播放清單替換曲目 | 不 | 替換播放清單中的所有曲目 | 不 |
使用者播放清單記錄器曲目 | 不 | 對播放清單中的曲目重新排序 | 不 |
user_playlist_remove_all_occurrences_of_track | 不 | 從給定播放清單中刪除所有出現的給定曲目 | 不 |
user_playlist_remove_specific_occurrenes_of_track | 不 | 從給定播放清單中刪除所有出現的給定曲目 | 不 |
user_playlist_follow_playlist | 是的 | 將目前經過身份驗證的使用者新增為播放清單的追蹤者。 | 是的 |
user_playlist_check_follow | 不 | 檢查給定的用戶是否正在關注給定的播放列表 | 是的 |
我 | 不 | 取得有關目前使用者的詳細個人資料資訊。 | 是的 |
目前用戶 | 不 | me 的別名 | 是的 |
目前用戶播放曲目 | 是的 | 取得有關目前使用者目前正在播放曲目的資訊。 | 是的 |
目前用戶儲存的專輯 | 是的 | 取得目前授權使用者的「您的音樂」庫中已儲存的專輯列表 | 是的 |
目前用戶儲存的曲目 | 是的 | 取得用戶儲存的曲目或“喜歡的歌曲” | 是的 |
當前用戶關注的藝術家 | 是的 | 獲取當前授權用戶關注的藝術家列表 | 是的 |
目前用戶儲存的曲目刪除 | 是的 | 從目前使用者的「您的音樂」庫中刪除一首或多首曲目。 | 是的 |
current_user_saved_tracks_contain | 不 | 檢查目前 Spotify 用戶的「您的音樂」庫中是否已儲存一首或多首曲目。 | 是的 |
current_user_saved_tracks_add | 是的 | 將一首或多首曲目儲存到目前使用者的「您的音樂」庫中。 | 是的 |
當前用戶頂級藝術家 | 不 | 獲取當前用戶的頂級藝術家 | 是的 |
目前用戶熱門曲目 | 不 | 取得目前用戶的熱門曲目 | 是的 |
當前用戶最近玩過的遊戲 | 是的 | 取得目前用戶最近播放的曲目 | 是的 |
current_user_saved_albums_add | 是的 | 將一張或多張專輯新增至目前使用者的「您的音樂」庫。 | 是的 |
目前使用者儲存的相簿刪除 | 是的 | 從目前使用者的「您的音樂」庫中刪除一張或多張專輯。 | 是的 |
使用者關注藝術家 | 是的 | 專注於一位或多位藝術家 | 是的 |
用戶取消追蹤藝術家 | 是的 | 取消追蹤一位或多位藝術家 | 是的 |
用戶關注用戶 | 不 | 關註一位或多位用戶 | 不 |
用戶取消追蹤用戶 | 不 | 取消追蹤一位或多位用戶 | 不 |
特色播放列表 | 不 | 取得 Spotify 精選播放清單的列表 | 是的 |
新版本 | 不 | 獲取 Spotify 中精選的新專輯發行列表 | 是的 |
類別 | 不 | 取得用於在 Spotify 中標記項目的類別列表 | 是的 |
建議 | 是的 | 取得基於種子的推薦 | 是的 |
音頻特徵 | 不 | 取得曲目的音訊特徵 | 不 |
音頻特徵 | 不 | 取得多個曲目的音訊功能 | 不 |
音訊分析 | 是的 | 取得曲目的音訊分析 | 是的 |
裝置 | 是的 | 取得使用者可用的設備 | 是的 |
目前播放 | 是的 | 取得有關用戶目前播放的信息 | 是的 |
目前播放 | 不 | 取得用戶目前播放的曲目 | 不 |
傳輸_回放 | 是的 | 傳輸用戶的播放 | 是的 |
開始播放 | 是的 | 開始/恢復使用者的播放 | 是的 |
暫停播放 | 是的 | 暫停用戶的播放 | 是的 |
下一首曲目 | 是的 | 跳到用戶的播放到下一曲目 | 是的 |
上一首曲目 | 是的 | 跳到用戶的播放到上一曲目 | 是的 |
尋找軌道 | 是的 | 尋找目前播放曲目中的位置 | 是的 |
重複 | 是的 | 設定使用者播放的重複模式 | 是的 |
體積 | 是的 | 設定使用者播放的音量 | 是的 |
隨機播放 | 是的 | 切換用戶隨機播放 | 是的 |