Un cliente de Spotify para el terminal escrito en Rust.
El terminal de la demostración anterior utiliza el tema Rigel.
Spotify TUI
cerveza casera
Quebrar
AUR
Nada
Linux vacío
Fedora/CentOS
Carga
ventanas
Manual
Nota sobre Linux
instalador de primicia
Instalación
Conexión a la API de Spotify
Uso
Configuración
Requisitos de alto nivel aún por implementar
Subsistema de Windows para Linux
Limitaciones
Usando con spotifyd
Bibliotecas utilizadas
Desarrollo
Colaboradores
Hoja de ruta
El ejecutable binario es spt
.
Tanto para macOS como para Linux
instalar cerveza spotify-tui
Para actualizar, ejecute
mejora de cerveza spotify-tui
Para un sistema con Snap instalado, ejecute
instalación rápida spt
La versión estable se instalará automáticamente.
Si desea instalar la compilación nocturna, ejecute
instalación instantánea spt --edge
Para aquellos en Arch Linux, pueden encontrar el paquete en AUR aquí. Sin embargo, si estás utilizando un asistente AUR, puedes instalarlo directamente desde él, por ejemplo (en el caso de yay), ejecuta
yay -S spotify-tui
Disponible como paquete spotify-tui
. Para instalar ejecute:
nix-env -iA nixpkgs.spotify-tui
Donde nixpkgs
es el nombre del canal en su configuración. Para una instalación más actualizada, utilice el canal inestable. También es posible agregar el paquete a environment.systemPackages
(para NixOS) o home.packages
cuando se usa home-manager.
Disponible en los repositorios oficiales. Para instalar, ejecute
sudo xbps-install -Su spotify-tui
Disponible en los repositorios de Copr. Para instalar, ejecute
sudo dnf copr enable atim/spotify-tui -y && sudo dnf install spotify-tui
Utilice esta opción si su arquitectura no es compatible con los archivos binarios prediseñados que se encuentran en la página de lanzamientos.
Primero, instale Rust (usando el método de instalación rustup
recomendado) y luego
instalación de carga spotify-tui
Este método construirá el binario desde la fuente.
Para actualizar, ejecute el mismo comando nuevamente.
Para la compilación en Linux se requieren los paquetes de desarrollo para libssl
. Para obtener instrucciones de instalación básicas, consulte instalar OpenSSL. Para localizar dependencias, la compilación también requiere que esté instalado pkg-config
.
Si está utilizando el subsistema de Windows para Linux, deberá instalar dependencias adicionales.
Primero, asegúrese de que el instalador de Scoop esté en su caja de Windows; para obtener instrucciones, visite Scoop.sh.
Luego abra powershell y ejecute los siguientes dos comandos:
cubo de cuchara agregar cubo de cuchara https://github.com/Rigellute/scoop-bucket primicia instalar spotify-tui
Después ese programa estará disponible como: spt
o spt.exe
Descargue el binario más reciente para su sistema operativo.
cd
al archivo que acabas de descargar y descomprimir
cd
a spotify-tui
y ejecutar con ./spt
spotify-tui
necesita conectarse a la API de Spotify para poder buscar música por nombre, reproducir pistas, etc.
Las instrucciones sobre cómo configurar esto se mostrarán cuando ejecute la aplicación por primera vez.
Pero aquí están de nuevo:
Ir al panel de Spotify
Haga clic en Create an app
Ahora puede ver su Client ID
y Client Secret
Ahora haga clic en Edit Settings
Agregue http://localhost:8888/callback
a los URI de redireccionamiento
Desplácese hacia abajo y haga clic en Save
¡Ya estás listo para autenticarte con Spotify!
Volver a la terminal
ejecutar spt
Ingrese su Client ID
Ingrese su Client Secret
Presione Intro para confirmar el puerto predeterminado (8888) o ingrese un puerto personalizado
Serás redirigido a una página web oficial de Spotify para solicitarte permisos.
Después de aceptar los permisos, serás redirigido a localhost. Si todo va bien, la URL de redireccionamiento se analizará automáticamente y ya está. Si el servidor web local falla por algún motivo, serás redirigido a una página web en blanco que podría decir algo como "Conexión rechazada", ya que no hay ningún servidor en ejecución. De todos modos, copie la URL y péguela en el mensaje del terminal.
¿Y ahora estás listo para usar spotify-tui
?
Puede editar la configuración en cualquier momento en ${HOME}/.config/spotify-tui/client.yml
. (para complemento ${HOME}/snap/spt/current/.config/spotify-tui/client.yml
)
El binario se llama spt
.
Al ejecutar spt
sin argumentos, aparecerá la interfaz de usuario. Prensa ?
para abrir un menú de ayuda que muestra los eventos clave implementados actualmente y sus acciones. También hay una CLI que puede hacer la mayoría de las cosas que hace la interfaz de usuario. Utilice spt --help
para obtener más información.
A continuación se muestran algunos ejemplos para entusiasmarlo.
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
Hay un archivo de configuración ubicado en ${HOME}/.config/spotify-tui/config.yml
, para snap ${HOME}/snap/spt/current/.config/spotify-tui/config.yml
(no debe confundirse con client.yml que maneja la autenticación de Spotify)
El siguiente es un archivo config.yml de muestra:
# Archivo de configuración de muestra# Los colores del tema pueden ser una cadena rgb con el formato "255, 255, 255" o una cadena que haga referencia a los colores del tema de tu terminal: Restablecer, Negro, Rojo, Verde, Amarillo, Azul, Magenta, Cian , Gris, Gris oscuro, Rojo claro, Verde claro, Amarillo claro, Azul claro, Magenta claro, Cian claro, Blanco. Tema: activo: Cian # canción que se está reproduciendo actualmente en la lista banner: LightCyan # el banner "spotify-tui" en el lanzamiento error_border: Borde de diálogo de error # rojo error_text: LightRed # texto del mensaje de error (por ejemplo, "La API de Spotify informó el error 404") sugerencia: texto de sugerencia # amarillo en errores suspendido: Magenta # borde del panel suspendido inactivo: Gris # bordes de paneles inactivos playbar_background: Fondo negro # de la barra de progreso playbar_progress: LightCyan # parte rellenada de la barra de progreso playbar_progress_text: Cian # duración de la canción y tiempo de reproducción/indicador izquierdo en la barra de progreso playbar_text: # blanco nombre del artista en el panel del reproductor seleccionado: LightCyan # a) borde del panel seleccionado, b) elemento suspendido en la lista y c) título de la pista en el reproductor texto: "255, 255, 255" # texto en paneles encabezado: blanco # texto del encabezado en los paneles (por ejemplo, 'Título', 'Artista', etc.) comportamiento: seek_millisegundos: 5000 incremento_volumen: 10 # Cuanto menor sea el número, mayores serán los "cuadros por segundo". Puede disminuir este número para que la visualización de audio sea más fluida, ¡pero esto puede resultar costoso! tick_rate_millisegundos: 250 # Habilite el énfasis del texto (normalmente estilo de texto en cursiva/negrita). Deshabilitar esto puede ser importante si la configuración del terminal está restringida y la representación de escapes de texto interfiere con la interfaz de usuario. enable_text_emphasis: verdadero # Controla si se muestra un indicador de carga en la parte superior derecha de la interfaz de usuario cada vez que se comunica con la API de Spotify show_loading_indicator: verdadero # Desactiva el diseño responsivo que hace que la barra de búsqueda sea más pequeña o más grande # pantallas y aplica una barra de búsqueda amplia enforce_wide_search_bar: falso # Determina el ícono de texto que se mostrará junto a los elementos de Spotify que "me gustan", como # Me gustaron canciones y álbumes, o artistas seguidos. Puede ser una cadena de cualquier longitud. # Estos íconos requieren una fuente nerd parcheada. icono_me gusta: ♥ icono_shuffle: ? repetir_track_icon: ? repetir_context_icon: ? icono_jugando: ▶ icono_pausado: ⏸ # Establece el título de la ventana en "spt - Spotify TUI" mediante el código de escape ANSI. set_window_title: truekeybindings: # La pulsación de tecla se puede usar si solo usa dos teclas: # Ctrl-q funciona, # Ctrl-alt-q no lo hace. atrás: "ctrl-q" jump_to_album: "a" # Los modificadores de cambio usan una letra mayúscula (también se aplica con otras teclas modificadoras # como Ctrl-A) jump_to_artist_album: "A" administrar_dispositivos: "d" disminuir_volumen: "-" aumentar_volumen: "+" toggle_playback: " " buscar_hacia atrás: "<" buscar_forwards: ">" next_track: "n" pista_anterior: "p" copy_song_url: "c" copy_album_url: "C" ayuda: "?" barajar: "ctrl-s" repetir: "r" buscar: "/" análisis_audio: "v" jump_to_context: "o" vista_básica: "B" add_item_to_queue: "z"
Esta aplicación utiliza la API web de Spotify, que no maneja la transmisión por sí misma. Por lo tanto, necesitarás un cliente oficial de Spotify abierto o una alternativa más ligera como Spotify.
Si desea reproducir pistas, Spotify requiere que tenga una cuenta Premium.
Siga la documentación de Spotify para configurarlo.
Después de eso no hay mucho que hacer.
Comience a ejecutar el demonio Spotify.
Iniciar spt
Presione d
para ir al menú de selección de dispositivo y el "dispositivo" de Spotify debería estar allí; si no, consulte estos documentos
tui-rs
rspotificar
Instalar OpenSSL
Instalar óxido
Instale xorg-dev
(requerido para la compatibilidad con el portapapeles)
Clona o bifurca este repositorio y cd
en él
Y luego cargo run
Es posible que obtenga un error de vinculación. Si es así, probablemente necesitarás instalar dependencias adicionales requeridas por el paquete del portapapeles.
sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
Gracias a estas maravillosas personas (tecla emoji):
Alexander Keliris ? ? ? ? ? ? | Mickael Marques ? | Grzegorz Koperwas | Austin Gassert | Robinette Calen | M*C*O ? | Andrés Chin |
Sam Naser | micha | neriglisar | timon | ecoSayonara | D-bien ? | 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 | jacobchrismarsh | Nils Rauch | Nick Stockton ? ? |
Stuart Hinson | Sam Calvert | Jeroen Wijenbergh | Kimberley Cook | Audrey Baxter | normando | Peter Maatman |
AlexandreS | Finn Vos | carlos hernandez ? | Pedro Alves | jtagcat | Benjamín Kitor | Aleš Najmann ? |
Jeremy Stucki | (´⌣`ʃƪ) | Artem Polachuk ? | Chris Sosnin | Ben Buhse | Sean Li | TimotheeGerber |
Fernando Ratajczak | Sheel Choksi | Michael Hellwig | Daniel Oliver | Drew Fisher | codificador-1 | Macguire Rintoul |
Ricardo Holguín | Toyota | Craig Astill | onielfa | usme | Serguéi A. | Hideyuki Okada |
kepae | Érico Nogueira Rolim | Alexander Meinhardt Scheurer | Ondřej Kinšt | kryan90 | n-ivanov | bi1yeu |
Puede | Bruno A. Muciño | finlandés hediger | dp304 | Marco Micera | Marco Ieni ? | Artúr Kovács |
Antonio Kellermann | Rasmus Pedersen | negro-Z | David Bailey | muro de ovejas | Hwatwasese | jesse |
cantó | Yuuki Takahashi | alejandro angulo | Antón Kostin | Justin Sextón | Jiati Le | Mateo Cobbing |
Milón ? | Diego Veralli | Maja Bojarska |
Este proyecto sigue la especificación de todos los contribuyentes. ¡Se aceptan aportes de cualquier tipo!
El objetivo es implementar eventualmente casi todas las funciones de Spotify.
Agregar canciones a una lista de reproducción
Poder desplazarse por las páginas de resultados en cada vista
Esta tabla muestra todo lo que es posible con la API de Spotify, lo que ya está implementado y si es esencial.
método API | ¿Ya se ha implementado? | Explicación | ¿Básico? |
---|---|---|---|
pista | No | devuelve una sola pista dada la ID, URI o URL de la pista | No |
pistas | No | devuelve una lista de pistas dada una lista de ID de pista, URI o URL | No |
artista | No | devuelve un solo artista dado el ID, URI o URL del artista | Sí |
artistas | No | devuelve una lista de artistas dados los ID de artista, URI o URL | No |
álbumes_artista | Sí | Obtener información del catálogo de Spotify sobre los álbumes de un artista | Sí |
artista_top_tracks | Sí | Obtenga información del catálogo de Spotify sobre las 10 pistas principales de un artista por país. | Sí |
artistas_relacionados_artistas | Sí | Obtenga información del catálogo de Spotify sobre artistas similares a un artista identificado. La similitud se basa en el análisis del historial de escucha de la comunidad de Spotify. | Sí |
álbum | Sí | devuelve un solo álbum dado el ID, URI o URL del álbum | Sí |
álbumes | No | devuelve una lista de álbumes dados los ID de álbum, URI o URL | No |
álbum_búsqueda | Sí | Buscar álbum según la consulta | Sí |
artista_buscador | Sí | Buscar artista según la consulta | Sí |
pista_búsqueda | Sí | Pista de búsqueda basada en consulta | Sí |
lista de reproducción de búsqueda | Sí | Buscar lista de reproducción según la consulta | Sí |
pista_álbum | Sí | Obtener información del catálogo de Spotify sobre las pistas de un álbum | Sí |
usuario | No | Obtiene información básica del perfil de un usuario de Spotify | No |
lista de reproducción | Sí | Obtenga todos los detalles sobre la lista de reproducción de Spotify | Sí |
listas_de_reproducción_de_usuario_actuales | Sí | Obtenga listas de reproducción de usuarios actuales sin necesidad de obtener su perfil | Sí |
listas de reproducción_usuario | No | Obtiene listas de reproducción de un usuario | No |
lista de reproducción_usuario | No | Obtiene la lista de reproducción de un usuario | No |
user_playlist_tracks | Sí | Obtenga todos los detalles de las pistas de una lista de reproducción propiedad de un usuario | Sí |
usuario_playlist_create | No | Crea una lista de reproducción para un usuario. | Sí |
detalle_cambio_lista_reproducción_usuario | No | Cambia el nombre de una lista de reproducción y/o el estado público/privado | Sí |
usuario_lista de reproducción_unfollow | Sí | Dejar de seguir (eliminar) una lista de reproducción para un usuario | Sí |
user_playlist_add_track | No | Agrega pistas a una lista de reproducción | Sí |
user_playlist_replace_track | No | Reemplazar todas las pistas en una lista de reproducción | No |
user_playlist_recorder_tracks | No | Reordenar pistas en una lista de reproducción | No |
user_playlist_remove_all_ocurrences_of_track | No | Elimina todas las apariciones de las pistas dadas de la lista de reproducción dada | No |
user_playlist_remove_specific_ocurrences_of_track | No | Elimina todas las apariciones de las pistas dadas de la lista de reproducción dada | No |
lista de reproducción_usuario_seguir_lista de reproducción | Sí | Agregue el usuario autenticado actual como seguidor de una lista de reproducción. | Sí |
usuario_playlist_check_follow | No | Verifique si los usuarios dados están siguiendo la lista de reproducción dada | Sí |
a mí | No | Obtenga información de perfil detallada sobre el usuario actual. | Sí |
usuario_actual | No | Alias para me | Sí |
pista_de_reproducción_actual_usuario | Sí | Obtenga información sobre los usuarios actuales que reproducen la pista. | Sí |
álbumes_guardados_de_usuario_actuales | Sí | Obtiene una lista de los álbumes guardados en la biblioteca "Tu música" del usuario autorizado actual. | Sí |
pistas_guardadas_de_usuario_actuales | Sí | Obtiene las pistas guardadas del usuario o "Canciones que le gustan" | Sí |
artistas_usuarios_actuales_seguidos | Sí | Obtiene una lista de los artistas seguidos por el usuario autorizado actual. | Sí |
current_user_saved_tracks_delete | Sí | Elimina una o más pistas de la biblioteca "Tu música" del usuario actual. | Sí |
current_user_saved_tracks_contain | No | Comprueba si una o más pistas ya están guardadas en la biblioteca "Tu música" del usuario actual de Spotify. | Sí |
current_user_saved_tracks_add | Sí | Guarde una o más pistas en la biblioteca "Tu música" del usuario actual. | Sí |
usuarios_actuales_top_artistas | No | Obtenga los mejores artistas del usuario actual | Sí |
current_user_top_tracks | No | Obtener las mejores pistas del usuario actual | Sí |
usuario_actual_recientemente_jugado | Sí | Obtener las pistas reproducidas recientemente por el usuario actual | Sí |
current_user_saved_albums_add | Sí | Agregue uno o más álbumes a la biblioteca "Tu música" del usuario actual. | Sí |
current_user_saved_albums_delete | Sí | Elimina uno o más álbumes de la biblioteca "Tu música" del usuario actual. | Sí |
usuarios_seguidores_artistas | Sí | Seguir a uno o más artistas | Sí |
usuario_unfollow_artistas | Sí | Dejar de seguir a uno o más artistas | Sí |
usuario_seguir_usuarios | No | Seguir a uno o más usuarios | No |
usuario_unfollow_users | No | Dejar de seguir a uno o más usuarios | No |
listas_de_reproducción destacadas | No | Obtenga una lista de listas de reproducción destacadas de Spotify | Sí |
nuevos lanzamientos | No | Obtenga una lista de lanzamientos de nuevos álbumes destacados en Spotify | Sí |
categorias | No | Obtenga una lista de categorías utilizadas para etiquetar elementos en Spotify | Sí |
recomendaciones | Sí | Obtenga recomendaciones basadas en semillas | Sí |
características_de_audio | No | Obtener funciones de audio para una pista | No |
características_audios | No | Obtenga funciones de audio para varias pistas | No |
análisis_de_audio | Sí | Obtener análisis de audio para una pista | Sí |
dispositivo | Sí | Obtener los dispositivos disponibles de un usuario | Sí |
reproducción_actual | Sí | Obtener información sobre la reproducción actual del usuario | Sí |
jugando_actualmente | No | Obtener la pista que el usuario está reproduciendo actualmente | No |
transferencia_reproducción | Sí | Transferir la reproducción de un usuario | Sí |
inicio_reproducción | Sí | Iniciar/reanudar la reproducción de un usuario | Sí |
pausa_reproducción | Sí | Pausar la reproducción de un usuario | Sí |
siguiente_pista | Sí | Saltar la reproducción del usuario a la siguiente pista | Sí |
pista_anterior | Sí | Saltar la reproducción del usuario a la pista anterior | Sí |
buscar_pista | Sí | Busque posicionarse en la pista que se está reproduciendo actualmente | Sí |
repetir | Sí | Establecer el modo de repetición en la reproducción del usuario | Sí |
volumen | Sí | Establecer volumen para la reproducción del usuario | Sí |
barajar | Sí | Alternar reproducción aleatoria para la reproducción del usuario | Sí |