Um cliente Spotify para o terminal escrito em Rust.
O terminal na demonstração acima usa o tema Rigel.
TUI do Spotify
Cerveja caseira
Foto
AUR
Nix
Anular Linux
Fedora/CentOS
Carga
Windows
Manual
Nota sobre Linux
Instalador de colher
Instalação
Conectando-se à API do Spotify
Uso
Configuração
Requisitos de alto nível ainda a serem implementados
Subsistema Windows para Linux
Limitações
Usando com spotifyd
Bibliotecas usadas
Desenvolvimento
Colaboradores
Roteiro
O executável binário é spt
.
Para macOS e Linux
preparar instalar spotify-tui
Para atualizar, execute
preparar atualização spotify-tui
Para um sistema com Snap instalado, execute
instalação instantânea spt
A versão estável será instalada automaticamente para você.
Se você deseja instalar a compilação noturna, execute
instalação instantânea spt --edge
Para quem usa Arch Linux você pode encontrar o pacote no AUR aqui. Se, no entanto, você estiver usando um auxiliar AUR, poderá instalar diretamente a partir dele, por exemplo (no caso de yay), execute
sim -S spotify-tui
Disponível como pacote spotify-tui
. Para instalar execute:
nix-env -iA nixpkgs.spotify-tui
Onde nixpkgs
é o nome do canal na sua configuração. Para uma instalação mais atualizada, use o canal instável. Também é possível adicionar o pacote a environment.systemPackages
(para NixOS) ou home.packages
ao usar o home-manager.
Disponível nos repositórios oficiais. Para instalar, execute
sudo xbps-install -Su spotify-tui
Disponível nos repositórios Copr. Para instalar, execute
sudo dnf copr ativar atim/spotify-tui -y && sudo dnf instalar spotify-tui
Use esta opção se sua arquitetura não for suportada pelos binários pré-construídos encontrados na página de lançamentos.
Primeiro, instale o Rust (usando o método de instalação rustup
recomendado) e depois
carga instalar spotify-tui
Este método construirá o binário a partir do código-fonte.
Para atualizar, execute o mesmo comando novamente.
Para compilação no Linux são necessários os pacotes de desenvolvimento para libssl
. Para obter instruções básicas de instalação, consulte instalar o OpenSSL. Para localizar dependências, a compilação também requer a instalação pkg-config
.
Se estiver usando o subsistema Windows para Linux, você precisará instalar dependências adicionais.
Primeiro, certifique-se de que o instalador do scoop esteja na sua caixa do Windows. Para obter instruções, visite scoop.sh
Em seguida, abra o PowerShell e execute os dois comandos seguintes:
balde de colher adicionar balde de colher https://github.com/Rigellute/scoop-bucket colher instalar spotify-tui
Depois que o programa estiver disponível como: spt
ou spt.exe
Baixe o binário mais recente para o seu sistema operacional.
cd
para o arquivo que você acabou de baixar e descompacte
cd
para spotify-tui
e execute com ./spt
spotify-tui
precisa se conectar à API do Spotify para encontrar músicas por nome, reproduzir faixas etc.
Instruções sobre como configurar isso serão mostradas quando você executar o aplicativo pela primeira vez.
Mas aqui estão eles novamente:
Vá para o painel do Spotify
Clique em Create an app
Agora você pode ver seu Client ID
e Client Secret
Agora clique em Edit Settings
Adicione http://localhost:8888/callback
aos URIs de redirecionamento
Role para baixo e clique em Save
Agora você está pronto para se autenticar no Spotify!
Volte para o terminal
Execute spt
Insira seu Client ID
Insira Client Secret
Pressione Enter para confirmar a porta padrão (8888) ou insira uma porta personalizada
Você será redirecionado para uma página oficial do Spotify para solicitar permissões.
Após aceitar as permissões, você será redirecionado para localhost. Se tudo correr bem, o URL de redirecionamento será analisado automaticamente e pronto. Se o servidor local falhar por algum motivo, você será redirecionado para uma página em branco que pode dizer algo como "Conexão recusada", já que nenhum servidor está em execução. Independentemente disso, copie o URL e cole no prompt do terminal.
E agora você está pronto para usar o spotify-tui
?
Você pode editar a configuração a qualquer momento em ${HOME}/.config/spotify-tui/client.yml
. (para snap ${HOME}/snap/spt/current/.config/spotify-tui/client.yml
)
O binário é denominado spt
.
Executar spt
sem argumentos abrirá a IU. Imprensa ?
para abrir um menu de ajuda que mostra os principais eventos implementados atualmente e suas ações. Há também uma CLI que é capaz de fazer a maior parte das coisas que a IU faz. Use spt --help
para saber mais.
Aqui estão alguns exemplos para deixá-lo animado.
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
Um arquivo de configuração está localizado em ${HOME}/.config/spotify-tui/config.yml
, para snap ${HOME}/snap/spt/current/.config/spotify-tui/config.yml
(não deve ser confundido com client.yml que lida com a autenticação do Spotify)
A seguir está um exemplo de arquivo config.yml:
# Arquivo de configuração de amostra# As cores do tema podem ser uma string rgb no formato "255, 255, 255" ou uma string que faça referência às cores do tema do seu terminal: Redefinir, Preto, Vermelho, Verde, Amarelo, Azul, Magenta, Ciano , Gray, DarkGray, LightRed, LightGreen, LightYellow, LightBlue, LightMagenta, LightCyan, White.theme: active: Cyan # música atualmente reproduzida na lista banner: LightCyan # o banner "spotify-tui" no lançamento error_border: Borda vermelha da caixa de diálogo de erro # error_text: LightRed # texto da mensagem de erro (por exemplo, "Spotify API relatou erro 404") dica: Amarelo # texto de dica em erros pairado: Magenta # borda do painel pairado inativo: cinza # bordas dos painéis inativos playbar_background: Preto # fundo da barra de progresso playbar_progress: LightCyan # parte preenchida da barra de progresso playbar_progress_text: Ciano # duração da música e indicador de tempo tocado/esquerdo na barra de progresso playbar_text: Branco # nome do artista no painel do player selecionado: LightCyan # a) borda do painel selecionado, b) item pairado na lista e c) título da faixa no player text: "255, 255, 255" # texto nos painéis cabeçalho: branco # texto do cabeçalho em painéis (por exemplo, 'Título', 'Artista', etc.) comportamento: seek_milliseconds: 5000 incremento_volume: 10 # Quanto menor o número, maior será o número de "quadros por segundo". Você pode diminuir esse número para que a visualização do áudio seja mais suave, mas isso pode custar caro! tick_rate_milliseconds: 250 # Habilite a ênfase do texto (normalmente estilo de texto em itálico/negrito). Desabilitar isso pode ser importante se a configuração do terminal for restrita e a renderização de escapes de texto interferir na interface do usuário. enable_text_emphasis: verdadeiro # Controla se um indicador de carregamento deve ser mostrado no canto superior direito da UI sempre que se comunicar com a API do Spotify show_loading_indicator: verdadeiro # Desativa o layout responsivo que torna a barra de pesquisa menor e maior # filtra e impõe uma ampla barra de pesquisa force_wide_search_bar: falso # Determina o ícone de texto a ser exibido ao lado dos itens "curtidos" do Spotify, como # gostou de músicas e álbuns ou seguiu artistas. Pode ser uma string de qualquer comprimento. # Esses ícones requerem uma fonte nerd corrigida. ícone_curtido: ♥ shuffle_icon: ? repetir_track_icon: ? repetir_context_icon: ? ícone_de_jogo: ▶ paused_icon: ⏸ # Define o título da janela para "spt - Spotify TUI" via código de escape ANSI. set_window_title: truekeybindings: # O toque de tecla pode ser usado se usar apenas duas teclas: # ctrl-q funciona, # ctrl-alt-q não. voltar: "ctrl-q" jump_to_album: "a" # Os modificadores Shift usam uma letra maiúscula (também se aplica a outras teclas modificadoras # como ctrl-A) jump_to_artist_album: "A" gerenciar_devices: "d" diminuir_volume: "-" aumentar_volume: "+" toggle_playback: " " procurar_backwards: "<" seek_forwards: ">" próxima_track: "n" faixa_anterior: "p" copy_song_url: "c" copy_album_url: "C" ajuda: "?" embaralhar: "ctrl-s" repita: "r" procurar: "/" análise_áudio: "v" pular_para_contexto: "o" visualização_básica: "B" add_item_to_queue: "z"
Este aplicativo usa a API Web do Spotify, que não suporta streaming em si. Portanto, você precisará de um cliente oficial do Spotify aberto ou de uma alternativa mais leve, como o spotifyd.
Se você quiser reproduzir faixas, o Spotify exige que você tenha uma conta Premium.
Siga a documentação do Spotify para configurar.
Depois disso não há muito o que fazer.
Comece a executar o daemon spotifyd.
Iniciar spt
Pressione d
para ir para o menu de seleção de dispositivos e o "dispositivo" spotifyd deve estar lá - se não, verifique estes documentos
tui-rs
rspotify
Instale o OpenSSL
Instalar ferrugem
Instale xorg-dev
(necessário para suporte à área de transferência)
Clone ou bifurque este repositório e faça cd
para ele
E então cargo run
Você pode receber um erro de vinculação. Nesse caso, você provavelmente precisará instalar dependências adicionais exigidas pelo pacote da área de transferência
sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
Os agradecimentos vão para essas pessoas maravilhosas (chave emoji):
Alexandre Keliris ? ? ? ? ? ? | Mickael Marques ? | Grzegorz Koperwas | Austin Gassert | Calen Robinette | M*C*O ? | André Queixo |
Sam Naser | Micha | neriglissar | Timão | ecoSayonara | D-legal ? | Grzegorz Pawlik |
Lennart Bernhardt | Arnaud Lefebvre | tem1029 | Peter K. Moss | Geoff Shannon | Zachary Mayhew | jfaltis |
Marcel Schramm | Fangyi Zhou | Máx. | Sven van der Vlist | jacobchristmarsh | Nils Rauch | Nick Stockton ? ? |
Stuart Hinson | Sam Calvert | Jeroen Wijenbergh | Kimberley Cook | Audrey Baxter | normando | Peter Maatman |
AlexandreS | Finn Vos | Carlos Hernández ? | Pedro Alves | jtagcat | Benjamin Kitor | Aleš Najmann ? |
Jeremy Stucki | (´⌣`ʃƪ) | Artem Polishchuk ? | Chris Sosnin | Ben Buhse | Sean Li | Timothee Gerber |
Fernando Ratajczak | Sheel Choksi | Michael Hellwig | OliverDaniel | Drew Fisher | codificador-1 | Macguire Rintoul |
Ricardo Holguín | Keisuke Toyota | Craig Astill | Onielfa | usrme | Sérgio A. | Hideyuki Okada |
Kepae | Érico Nogueira Rolim | Alexander Meinhardt Scheurer | Ondřej Kinšt | Kryan90 | n-ivanov | bi1yeu |
Poderia | Bruno A. Muciño | Finn Hediger | dp304 | Marco Micera | Marco Ieni ? | Artúr Kovács |
Antony Kellermann | Rasmus Pedersen | noir-Z | David Bailey | muro de ovelhas | O que era isso | Jessé |
Cantou | Yuuki Takahashi | Alejandro Angulo | Anton Kostin | Justin Sexton | Jiati Le | Matthew Cobbing |
Milo ? | Diego Veralli | Maja Bojarska |
Este projeto segue a especificação de todos os contribuidores. Contribuições de qualquer tipo são bem-vindas!
O objetivo é eventualmente implementar quase todos os recursos do Spotify.
Adicionar músicas a uma playlist
Ser capaz de rolar pelas páginas de resultados em todas as visualizações
Esta tabela mostra tudo o que é possível com a API do Spotify, o que já está implementado e se isso é essencial.
Método API | Já implementado? | Explicação | Essencial? |
---|---|---|---|
acompanhar | Não | retorna uma única faixa com base no ID, URI ou URL da faixa | Não |
faixas | Não | retorna uma lista de faixas com base em uma lista de IDs de faixa, URIs ou URLs | Não |
artista | Não | retorna um único artista com base no ID, URI ou URL do artista | Sim |
artistas | Não | retorna uma lista de artistas com os IDs, URIs ou URLs do artista | Não |
álbuns_de_artista | Sim | Obtenha informações do catálogo do Spotify sobre os álbuns de um artista | Sim |
artista_top_tracks | Sim | Obtenha informações do catálogo do Spotify sobre as 10 melhores faixas de um artista por país. | Sim |
artista_relacionado_artistas | Sim | Obtenha informações do catálogo do Spotify sobre artistas semelhantes a um artista identificado. A similaridade é baseada na análise do histórico de audição da comunidade Spotify. | Sim |
álbum | Sim | retorna um único álbum de acordo com o ID, URIs ou URL do álbum | Sim |
álbuns | Não | retorna uma lista de álbuns com base nos IDs, URIs ou URLs dos álbuns | Não |
álbum_pesquisa | Sim | Pesquisar álbum com base na consulta | Sim |
artista_de_pesquisa | Sim | Pesquisar artista com base na consulta | Sim |
trilha_pesquisa | Sim | Rastreamento de pesquisa com base na consulta | Sim |
lista_de_pesquisa | Sim | Pesquisar playlist com base na consulta | Sim |
faixa_do_álbum | Sim | Obtenha informações do catálogo do Spotify sobre as faixas de um álbum | Sim |
usuário | Não | Obtém informações básicas de perfil sobre um usuário Spotify | Não |
lista de reprodução | Sim | Obtenha detalhes completos sobre a lista de reprodução do Spotify | Sim |
listas de reprodução_de_usuários_atual | Sim | Obtenha playlists de usuários atuais sem precisar obter seu perfil | Sim |
listas de reprodução de usuários | Não | Obtém playlists de um usuário | Não |
lista de reprodução_do_usuário | Não | Obtém a playlist de um usuário | Não |
user_playlist_tracks | Sim | Obtenha detalhes completos das faixas de uma playlist de propriedade de um usuário | Sim |
user_playlist_create | Não | Cria uma lista de reprodução para um usuário | Sim |
user_playlist_change_detail | Não | Altera o nome e/ou estado público/privado de uma playlist | Sim |
user_playlist_unfollow | Sim | Deixa de seguir (exclui) uma playlist de um usuário | Sim |
user_playlist_add_track | Não | Adiciona faixas a uma lista de reprodução | Sim |
user_playlist_replace_track | Não | Substitua todas as faixas de uma playlist | Não |
user_playlist_recorder_tracks | Não | Reordenar faixas em uma playlist | Não |
user_playlist_remove_all_occurrences_of_track | Não | Remove todas as ocorrências das faixas fornecidas na lista de reprodução fornecida | Não |
user_playlist_remove_specific_occurrenes_of_track | Não | Remove todas as ocorrências das faixas fornecidas na lista de reprodução fornecida | Não |
user_playlist_follow_playlist | Sim | Adicione o usuário autenticado atual como seguidor de uma playlist. | Sim |
user_playlist_check_follow | Não | Verifique se os usuários determinados estão seguindo a lista de reprodução fornecida | Sim |
meu | Não | Obtenha informações detalhadas do perfil do usuário atual. | Sim |
usuário_atual | Não | Alias para me | Sim |
current_user_playing_track | Sim | Obtenha informações sobre os usuários atuais que estão reproduzindo a faixa. | Sim |
current_user_saved_albums | Sim | Obtém uma lista dos álbuns salvos na biblioteca "Suas Músicas" do usuário autorizado atual | Sim |
current_user_saved_tracks | Sim | Obtém as faixas salvas do usuário ou "Músicas curtidas" | Sim |
current_user_followed_artists | Sim | Obtém uma lista dos artistas seguidos pelo usuário autorizado atual | Sim |
current_user_saved_tracks_delete | Sim | Remova uma ou mais faixas da biblioteca "Suas músicas" do usuário atual. | Sim |
current_user_saved_tracks_contain | Não | Verifique se uma ou mais faixas já estão salvas na biblioteca “Suas Músicas” do usuário atual do Spotify. | Sim |
current_user_saved_tracks_add | Sim | Salve uma ou mais faixas na biblioteca "Suas músicas" do usuário atual. | Sim |
current_user_top_artists | Não | Obtenha os principais artistas do usuário atual | Sim |
current_user_top_tracks | Não | Obtenha as principais faixas do usuário atual | Sim |
current_user_recentemente_played | Sim | Obtenha as faixas reproduzidas recentemente do usuário atual | Sim |
current_user_saved_albums_add | Sim | Adicione um ou mais álbuns à biblioteca "Suas músicas" do usuário atual. | Sim |
current_user_saved_albums_delete | Sim | Remova um ou mais álbuns da biblioteca "Suas músicas" do usuário atual. | Sim |
user_follow_artists | Sim | Siga um ou mais artistas | Sim |
user_unfollow_artists | Sim | Deixar de seguir um ou mais artistas | Sim |
user_follow_users | Não | Siga um ou mais usuários | Não |
user_unfollow_users | Não | Deixar de seguir um ou mais usuários | Não |
listas de reprodução em destaque | Não | Obtenha uma lista de playlists em destaque do Spotify | Sim |
novos_lançamentos | Não | Obtenha uma lista de lançamentos de novos álbuns apresentados no Spotify | Sim |
categorias | Não | Obtenha uma lista de categorias usadas para marcar itens no Spotify | Sim |
recomendações | Sim | Obtenha recomendações baseadas em sementes | Sim |
recursos_de_áudio | Não | Obtenha recursos de áudio para uma faixa | Não |
audios_features | Não | Obtenha recursos de áudio para várias faixas | Não |
análise_áudio | Sim | Obtenha análise de áudio para uma faixa | Sim |
dispositivo | Sim | Obtenha os dispositivos disponíveis de um usuário | Sim |
reprodução_atual | Sim | Obtenha informações sobre a reprodução atual do usuário | Sim |
jogando_atual | Não | Obtenha a faixa que está sendo reproduzida atualmente pelo usuário | Não |
transfer_playback | Sim | Transferir a reprodução de um usuário | Sim |
start_playback | Sim | Iniciar/retomar a reprodução de um usuário | Sim |
pausa_reprodução | Sim | Pausar a reprodução de um usuário | Sim |
próxima_faixa | Sim | Pular a reprodução do usuário para a próxima faixa | Sim |
faixa_anterior | Sim | Pular a reprodução do usuário para a faixa anterior | Sim |
busca_track | Sim | Procure se posicionar na faixa atualmente em reprodução | Sim |
repita | Sim | Definir modo de repetição na reprodução do usuário | Sim |
volume | Sim | Definir volume para reprodução do usuário | Sim |
embaralhar | Sim | Alternar Shuffle para reprodução do usuário | Sim |