rigellute / spotify-tui Goto Github PK
View Code? Open in Web Editor NEWSpotify for the terminal written in Rust 🚀
License: MIT License
Spotify for the terminal written in Rust 🚀
License: MIT License
I was playing on an android TV while controlling from the macOS desktop app. spt didn't like that (API error).
The app struct and file are pretty big and have a lot of responsibility. I think it is better to split the code like it is done in OOP. The code does a lot and is not the easiest to get started in. We can split it in the following groups:
Chose a playlist, hit space and nothing happened. The user shouldn't have to fumble around to pick a starting song.
thread '' panicked at 'called Result::unwrap()
on an Err
value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/libcore/result.rs:999:5
note: run with RUST_BACKTRACE=1
environment variable to display a backtrace.
Could use D
for down and U
for up to control volume?
Hi, I'm currently trying to get spotify-tui
to work with spotifyd
. spt
sees the currently playing song by spotifyd
@MyPC but won't allow me to control the daemon because of this error:
Error
Api response: Spotify API reported an error
If you are trying to play a track make sure the official spotify app is open
My spotifyd
is installed from AUR.
kernel: 5.3.4-arch1-1-ARCH
↳spotifyd --version
spotifyd 0.2.18
↳spt --version
spotify-tui 0.4.0
↳systemctl status --user spotifyd
● spotifyd.service - A spotify playing daemon
Loaded: loaded (/etc/systemd/user/spotifyd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-10-08 20:15:26 CEST; 9min ago
Docs: https://github.com/Spotifyd/spotifyd
Main PID: 81601 (spotifyd)
CGroup: /user.slice/user-1000.slice/[email protected]/spotifyd.service
└─81601 /usr/bin/spotifyd --no-daemon
Oct 08 20:15:26 wojtas-arch spotifyd[81601]: 18:15:26 [INFO] Using alsa volume controller.
Oct 08 20:15:26 wojtas-arch spotifyd[81601]: 18:15:26 [INFO] Connecting to AP ""
Oct 08 20:15:26 wojtas-arch spotifyd[81601]: 18:15:26 [INFO] Authenticated as "" !
Oct 08 20:15:26 wojtas-arch spotifyd[81601]: 18:15:26 [INFO] Country: "PL"
Oct 08 20:15:36 wojtas-arch spotifyd[81601]: 18:15:36 [INFO] Loading track "I Hear A Rhapsody" with Spotify URI "spotify:track:2oEvw0AfrT2fPNpEnBwVml"
Oct 08 20:15:37 wojtas-arch spotifyd[81601]: 18:15:37 [INFO] Track "I Hear A Rhapsody" loaded
There's no documentation on getting that setup.
Would be great if you could $ cargo install spotify-tui
.
Looks like a sweet project.
I press d
, but no device menu. Tried spotify-tui 0.4.0, and git. Running spotifyd --no-daemon
I think these should be created in the config directory. If you run $ spotify-tui
in a directory, and then move directories and do it again, it makes you reauth since it can't find the cached tokens.
Would be awsome if you could add next and previous track.
I know that there is some issues with:
"The auth token does not currently automatically refresh - when you leave spotify-tui running for a while, you won't be able to control playback. And you'll need to quit and restart to get it working again."
I had the same issue, i checked if the current token is valid. You could probably do this in a nicer way but when a user signs in the first time you get:
{
"access_token" : "NgAagA...Um_SHo",
"expires_in" : "3600",
"refresh_token" : "NgCXRK...MzYjw"
}
The expires_in tells you when the access_token expires. You can use it to decide when to get a new access_token. Then use the refresh_token to get a new access_token.
You can renew the access_token by using a refresh_token. This token is provided to you when you first make the request to authenticate the user. You should save that refresh_token if you don't already do so. The refresh_token is valid forever but you can't control playback with the refresh_token.
To get a new access_token with the refresh_token: (JavaScript)
const res = await fetch(
`${this.baseUrl}/auth/refresh_token?refresh_token=${refreshKey}`,
{
method: 'GET'
}
);
You will then get a new access_token that you can use to control playback.
Documentation from Spotify on how to use the refresh_token to access a new access_token.
https://developer.spotify.com/documentation/ios/guides/token-swap-and-refresh/
btw, love what you have made! Great work!
I'm on Ubuntu 19.10 and getting this error
spt: symbol lookup error: spt: undefined symbol: CRYPTO_set_locking_callback
cargo version
cargo 1.38.0 (23ef9a4ef 2019-08-20)
I saw other issues with libssl and I fixed my problems from the recommendations in those tickets but still getting this error.
Here's a quick strace -ff spt
I didn't have time to dig into the problem but thought you'd want to know.
$ strace -ff spt | xclip -selection clipboard
execve("/home/jgarr/.cargo/bin/spt", ["spt"], 0x7ffca3f90b48 /* 78 vars */) = 0
brk(NULL) = 0x55ad341f6000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=115558, ...}) = 0
mmap(NULL, 115558, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fbfd3127000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/x86_64/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls/haswell/x86_64", 0x7ffef831d590) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls/haswell", 0x7ffef831d590) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffef831d590) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls", 0x7ffef831d590) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/x86_64/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/haswell/x86_64", 0x7ffef831d590) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/haswell", 0x7ffef831d590) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/x86_64", 0x7ffef831d590) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\333\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=585504, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfd3125000
mmap(NULL, 588080, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfd3095000
mmap(0x7fbfd30b1000, 315392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c000) = 0x7fbfd30b1000
mmap(0x7fbfd30fe000, 106496, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x69000) = 0x7fbfd30fe000
mmap(0x7fbfd3118000, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x82000) = 0x7fbfd3118000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libcrypto.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\220\7\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=2925408, ...}) = 0
mmap(NULL, 2940776, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfd2dc7000
mmap(0x7fbfd2e3f000, 1671168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x78000) = 0x7fbfd2e3f000
mmap(0x7fbfd2fd7000, 577536, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x210000) = 0x7fbfd2fd7000
mmap(0x7fbfd3064000, 188416, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x29c000) = 0x7fbfd3064000
mmap(0x7fbfd3092000, 12136, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbfd3092000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\21\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=18656, ...}) = 0
mmap(NULL, 20752, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfd2dc1000
mmap(0x7fbfd2dc2000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7fbfd2dc2000
mmap(0x7fbfd2dc4000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fbfd2dc4000
mmap(0x7fbfd2dc5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fbfd2dc5000
close(3)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2603\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=39880, ...}) = 0
mmap(NULL, 44000, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfd2db6000
mmap(0x7fbfd2db9000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fbfd2db9000
mmap(0x7fbfd2dbd000, 8192, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fbfd2dbd000
mmap(0x7fbfd2dbf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7fbfd2dbf000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200|\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=149840, ...}) = 0
mmap(NULL, 132288, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfd2d95000
mmap(0x7fbfd2d9c000, 61440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fbfd2d9c000
mmap(0x7fbfd2dab000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fbfd2dab000
mmap(0x7fbfd2db0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7fbfd2db0000
mmap(0x7fbfd2db2000, 13504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbfd2db2000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0203\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=100736, ...}) = 0
mmap(NULL, 103504, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfd2d7b000
mmap(0x7fbfd2d7e000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fbfd2d7e000
mmap(0x7fbfd2d8f000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7fbfd2d8f000
mmap(0x7fbfd2d93000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7fbfd2d93000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200l\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2000480, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfd2d79000
mmap(NULL, 2008696, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfd2b8e000
mmap(0x7fbfd2bb3000, 1519616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7fbfd2bb3000
mmap(0x7fbfd2d26000, 299008, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x198000) = 0x7fbfd2d26000
mmap(0x7fbfd2d6f000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e0000) = 0x7fbfd2d6f000
mmap(0x7fbfd2d75000, 13944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbfd2d75000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\362\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1365096, ...}) = 0
mmap(NULL, 1364240, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfd2a40000
mmap(0x7fbfd2a4f000, 679936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x7fbfd2a4f000
mmap(0x7fbfd2af5000, 618496, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb5000) = 0x7fbfd2af5000
mmap(0x7fbfd2b8c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14b000) = 0x7fbfd2b8c000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfd2a3e000
mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfd2a3a000
arch_prctl(ARCH_SET_FS, 0x7fbfd2a3ba40) = 0
mprotect(0x7fbfd2d6f000, 12288, PROT_READ) = 0
mprotect(0x7fbfd2b8c000, 4096, PROT_READ) = 0
mprotect(0x7fbfd2d93000, 4096, PROT_READ) = 0
mprotect(0x7fbfd2db0000, 4096, PROT_READ) = 0
mprotect(0x7fbfd2dbf000, 4096, PROT_READ) = 0
mprotect(0x7fbfd2dc5000, 4096, PROT_READ) = 0
mprotect(0x7fbfd3064000, 180224, PROT_READ) = 0
mprotect(0x7fbfd3118000, 36864, PROT_READ) = 0
writev(2, [{iov_base="spt", iov_len=3}, {iov_base=": ", iov_len=2}, {iov_base="symbol lookup error", iov_len=19}, {iov_base=": ", iov_len=2}, {iov_base="spt", iov_len=3}, {iov_base=": ", iov_len=2}, {iov_base="undefined symbol: CRYPTO_set_loc"..., iov_len=45}, {iov_base="", iov_len=0}, {iov_base="", iov_len=0}, {iov_base="\n", iov_len=1}], 10spt: symbol lookup error: spt: undefined symbol: CRYPTO_set_locking_callback
) = 77
exit_group(127) = ?
+++ exited with 127 +++
When moving cursor up and down, it doesn't show selected/highlighted choice when terminal window is resized. I use tmux, and the pane resizes great to fit the proper space, but it doesn't update the scroll buffer of what is visible to select.
I am selecting songs below the visible song list, because they are still selectable in the current scroll buffer from the tmux resize.
Every time I try to authorize I get INVALID_CLIENT: Invalid redirect URI
as a reply from Spotify.
The URL generated by spotify-tui is:
https://accounts.spotify.com/authorize?redirect_uri=http:%2F%2Flocalhost:8888%2Fcallback&client_id=[CLIENT_ID]&response_type=code&state=[STATE]&scope=playlist-read-private%20user-library-modify%20user-library-read%20user-modify-playback-state%20user-read-currently-playing%20user-read-playback-state%20user-read-private%20user-read-recently-played&
This happens independent of browser with the homebrew version on MacOs 10.14.5
Similar to how pressing 'a' displays the album tracks of the playing song pressing 'A' could be mapped to showing the artists albums.
Hey there, when I run spt, there are no devices available in the devices list.
I'm running macOS 10.14.5 (Mojave)
I do have a Premium account. Spotifyd is able to connect to Spotify, and I am using pulseaudio as the backend. But spotify-tui just says that I need to have the official app open.
macOS Mojava 10.14.6, install by brew:
spt
dyld: Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /usr/local/lib/libJPEG.dylib
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
[1] 5267 abort spt
First of all, i have tried your tui now for a while and i gotta say that i love it! I follow every new feature and i am really happy to see all the progress.
Sorry if this is not the right forum but do you have a command that updates the tui to the latest version? Or should this command check the latest version when it starts?
Example: I have the older version that does not have "next track". Could it be a good thing to implement a check for your latest version so i know that i could update it? I have to check everything manually now.
Solution: Check if the user has the latest version and ask if you want to update. When new update is installed maybe have some text with new implemented features?
Application exits on any keypress after first appearance of non-ascii symbol in search bar, like ž, Ф, or 🥰
Steps to reproduce:
Just press /
and try to enter any non-ascii character
Version: spotify-tui 0.6.2
Os: Macos 10.15
Terminal: iterm2 Build 3.3.3
When I try to launch a start a track I get an error message saying:
"Api response: Spotify API reported an error.
If you are trying to play a track, make sure the offical spotify app is open"
And it is open I can even see what song is currently playing.
Hi, thanks for working on this! Pretty interesting project.
I installed this with cargo (5eaecb0) but for some reason it won't detect that my Spotify Desktop is open and I always end up with this error whenever I try to play a track through TUI:
Api response: Spotify API reported an error
If you are trying to play a track, make sure the official spotify app is open
Press <Esc> to return
However, the TUI displays the current track playing and its position correctly.
Might it be that Spotify API requires a Spotify Premium account for this feature to work?
No sound.
Using on gnome-terminal in budgie desktop environment on the latest version of Arch Linux.
I have followed the instructions in the README and created the file in ~/.config/spotify-tui/client.yml
with the correct credentials, and it's being read correctly.
Here is the request being made with important parts removed:
$ spotify-tui
Opened https://accounts.spotify.com/authorize?scope=user-modify-playback-state%20user-read-playback-state%20user-read-private%20user-read-currently-playing%20playlist-read-private%20user-library-read%20user-read-recently-played&client_id=CLIENT_ID&redirect_uri=http:%2F%2Flocalhost:8888%2Fcallback&response_type=code&state=xvlgXiO7MBaweLQ6& in your browser
Enter the URL you were redirected to:
Here's the error page I get:
I'm noticing that the secret isn't included in the request. Should it be?
Create a config for easy customization of keybindings, program behaviour, etc. It could be located at $HOME/.config/spotify-tui/config.yml.
The current client configurations could be moved into this configuration too.
E.g
---
client:
- client_id:
- client_secret:
- device_id:
keybindings:
- left: h
- down: j
- up: k
- right: l
Thanks for this great app! I am trying to build for Ubuntu 18.04 but getting this error. Thank you for any guidance.
Compiling spotify-tui v0.6.2 error: linking with
ccfailed: exit code: 1 | = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/brendan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.0.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.1.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.10.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.11.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.12.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.13.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.14.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.15.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.2.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.3.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.4.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.5.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.6.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.7.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.8.rcgu.o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.spt.9nqlk0j9-cgu.9.rcgu.o" "-o" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561" "/tmp/cargo-install4Cfs9h/release/deps/spt-7ec6f893f06f5561.47pxari3l4vn7782.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/tmp/cargo-install4Cfs9h/release/deps" "-L" "/tmp/cargo-install4Cfs9h/release/build/backtrace-sys-6335e9cbc5f67c4d/out" "-L" "/home/brendan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/tmp/cargo-install4Cfs9h/release/deps/libserde_yaml-8d44eac82564392d.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libyaml_rust-d81429449dc24cbb.rlib" "/tmp/cargo-install4Cfs9h/release/deps/liblinked_hash_map-e4890eadedeb8224.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libclap-ea086e5ba1a1d381.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libvec_map-31dc9a693a4a81e3.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libtextwrap-bdab6b89a06c723b.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libstrsim-4dcff5113b2146ff.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libansi_term-32b6666dc48e585a.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libdirs-bab61cddd523db62.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libdirs_sys-639bdc321521283b.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libtui-20e40b0d40cfb4e2.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libcassowary-d86a96321c02898a.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libunicode_width-9f3924e3e3141e72.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libunicode_segmentation-9a919c577d642cc2.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libtermion-e7792cde031aadd5.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libnumtoa-7557d30a5e9b1a6d.rlib" "/tmp/cargo-install4Cfs9h/release/deps/librspotify-698216f05d0e1fb4.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libdotenv-e89e02bb033aec32.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libitertools-c80bad646a5eab1d.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libwebbrowser-daebd74259dba216.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libchrono-0805c79bb7ee4099.rlib" "/tmp/cargo-install4Cfs9h/release/deps/librustc_serialize-5b0f76bcae5f9800.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libnum_integer-d4c1ffdd4e03d0ed.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libnum_traits-1e075d15ab2edabd.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib" "/tmp/cargo-install4Cfs9h/release/deps/libuuid-5470b3f4ddf64c15.rlib" "/tmp/cargo-install4Cfs9h/release/deps/librand-77ebb0d412a3eec8.rlib" "/tmp/cargo-install4Cfs9h/re = note: /tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.15.rcgu.o): In function
core::ptr::real_drop_in_place':
reqwest.f36917vf-cgu.15:(.text._ZN4core3ptr18real_drop_in_place17h8541869b63f84185E+0x4d): undefined reference to sk_pop' reqwest.f36917vf-cgu.15:(.text._ZN4core3ptr18real_drop_in_place17h8541869b63f84185E+0x60): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.15:(.text._ZN4core3ptr18real_drop_in_place17h8541869b63f84185E+0x8f): undefined reference to sk_free' /tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.15.rcgu.o): In function
core::ptr::real_drop_in_place':
reqwest.f36917vf-cgu.15:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x2f): undefined reference to sk_pop' reqwest.f36917vf-cgu.15:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x42): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.15:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x6d): undefined reference to sk_free' /tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.3.rcgu.o): In function
core::ptr::real_drop_in_place':
reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17h8541869b63f84185E+0x4d): undefined reference to sk_pop' reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17h8541869b63f84185E+0x60): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17h8541869b63f84185E+0x8f): undefined reference to sk_free' /tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.3.rcgu.o): In function
core::ptr::real_drop_in_place':
reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17hbca00f17854cfa86E+0x33): undefined reference to sk_pop' reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17hbca00f17854cfa86E+0x46): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17hbca00f17854cfa86E+0x67): undefined reference to sk_free' /tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.3.rcgu.o): In function
core::ptr::real_drop_in_place':
reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x2f): undefined reference to sk_pop' reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x42): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.3:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x6d): undefined reference to sk_free' /tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.3.rcgu.o): In function
reqwest::connect::Connector::new_default_tls':
reqwest.f36917vf-cgu.3:(.text._ZN7reqwest7connect9Connector15new_default_tls17h8d3027f3120d2e3cE+0x257): undefined reference to sk_pop' reqwest.f36917vf-cgu.3:(.text._ZN7reqwest7connect9Connector15new_default_tls17h8d3027f3120d2e3cE+0x26a): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.3:(.text._ZN7reqwest7connect9Connector15new_default_tls17h8d3027f3120d2e3cE+0x288): undefined reference to sk_free' reqwest.f36917vf-cgu.3:(.text._ZN7reqwest7connect9Connector15new_default_tls17h8d3027f3120d2e3cE+0x3b5): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.3:(.text._ZN7reqwest7connect9Connector15new_default_tls17h8d3027f3120d2e3cE+0x3c8): undefined reference to sk_pop' reqwest.f36917vf-cgu.3:(.text._ZN7reqwest7connect9Connector15new_default_tls17h8d3027f3120d2e3cE+0x3e8): undefined reference to
sk_free'
/tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.4.rcgu.o): In function core::ptr::real_drop_in_place': reqwest.f36917vf-cgu.4:(.text._ZN4core3ptr18real_drop_in_place17h03f22d935e3f560bE+0x4d): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.4:(.text._ZN4core3ptr18real_drop_in_place17h03f22d935e3f560bE+0x60): undefined reference to sk_pop' reqwest.f36917vf-cgu.4:(.text._ZN4core3ptr18real_drop_in_place17h03f22d935e3f560bE+0x8f): undefined reference to
sk_free'
/tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.4.rcgu.o): In function core::ptr::real_drop_in_place': reqwest.f36917vf-cgu.4:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x2f): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.4:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x42): undefined reference to sk_pop' reqwest.f36917vf-cgu.4:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x6d): undefined reference to
sk_free'
/tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.5.rcgu.o): In function core::ptr::real_drop_in_place': reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17hbca00f17854cfa86E+0x33): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17hbca00f17854cfa86E+0x46): undefined reference to sk_pop' reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17hbca00f17854cfa86E+0x67): undefined reference to
sk_free'
/tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.5.rcgu.o): In function core::ptr::real_drop_in_place': reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17he55c792f297e5e24E+0x28): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17he55c792f297e5e24E+0x3b): undefined reference to sk_pop' reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17he55c792f297e5e24E+0x5d): undefined reference to
sk_free'
/tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.5.rcgu.o): In function core::ptr::real_drop_in_place': reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x2f): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x42): undefined reference to sk_pop' reqwest.f36917vf-cgu.5:(.text._ZN4core3ptr18real_drop_in_place17hecff3f6f06deb1d7E+0x6d): undefined reference to
sk_free'
/tmp/cargo-install4Cfs9h/release/deps/libreqwest-a596dff68d420d29.rlib(reqwest-a596dff68d420d29.reqwest.f36917vf-cgu.5.rcgu.o): In function reqwest::async_impl::client::ClientBuilder::build': reqwest.f36917vf-cgu.5:(.text._ZN7reqwest10async_impl6client13ClientBuilder5build17hf413fe8b04345345E+0x2c6): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.5:(.text._ZN7reqwest10async_impl6client13ClientBuilder5build17hf413fe8b04345345E+0x2d9): undefined reference to sk_pop' reqwest.f36917vf-cgu.5:(.text._ZN7reqwest10async_impl6client13ClientBuilder5build17hf413fe8b04345345E+0x2fe): undefined reference to
sk_free'
reqwest.f36917vf-cgu.5:(.text._ZN7reqwest10async_impl6client13ClientBuilder5build17hf413fe8b04345345E+0xa62): undefined reference to sk_pop' reqwest.f36917vf-cgu.5:(.text._ZN7reqwest10async_impl6client13ClientBuilder5build17hf413fe8b04345345E+0xa75): undefined reference to
sk_pop'
reqwest.f36917vf-cgu.5:(.text._ZN7reqwest10async_impl6client13ClientBuilder5build17hf413fe8b04345345E+0xa9e): undefined reference to sk_free' /tmp/cargo-install4Cfs9h/release/deps/libnative_tls-6bd62f1981dbd61d.rlib(native_tls-6bd62f1981dbd61d.native_tls.1u6r82qc-cgu.0.rcgu.o): In function
native_tls::imp::TlsConnector::new':
native_tls.1u6r82qc-cgu.0:(.text._ZN10native_tls3imp12TlsConnector3new17h6c93eca07e6cb695E+0x484): undefined reference to sk_num' native_tls.1u6r82qc-cgu.0:(.text._ZN10native_tls3imp12TlsConnector3new17h6c93eca07e6cb695E+0x4aa): undefined reference to
sk_value'
/tmp/cargo-install4Cfs9h/release/deps/libnative_tls-6bd62f1981dbd61d.rlib(native_tls-6bd62f1981dbd61d.native_tls.1u6r82qc-cgu.2.rcgu.o): In function native_tls::TlsConnectorBuilder::identity': native_tls.1u6r82qc-cgu.2:(.text._ZN10native_tls19TlsConnectorBuilder8identity17hebf2175177689622E+0x43): undefined reference to
sk_pop'
native_tls.1u6r82qc-cgu.2:(.text._ZN10native_tls19TlsConnectorBuilder8identity17hebf2175177689622E+0x56): undefined reference to sk_pop' native_tls.1u6r82qc-cgu.2:(.text._ZN10native_tls19TlsConnectorBuilder8identity17hebf2175177689622E+0x78): undefined reference to
sk_free'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.0.rcgu.o): In function openssl::ssl::SslMethod::tls': openssl.cdqq66go-cgu.0:(.text._ZN7openssl3ssl9SslMethod3tls17hae668f941a8dc151E+0x2): undefined reference to
SSLv23_method'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.0.rcgu.o): In function <openssl::ssl::SslContext as core::clone::Clone>::clone': openssl.cdqq66go-cgu.0:(.text._ZN63_$LT$openssl..ssl..SslContext$u20$as$u20$core..clone..Clone$GT$5clone17h97f995de37326510E+0x24): undefined reference to
CRYPTO_add_lock'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.0.rcgu.o): In function openssl::ssl::Ssl::new': openssl.cdqq66go-cgu.0:(.text._ZN7openssl3ssl3Ssl3new17h1ea4689978bace7aE+0x9a): undefined reference to
CRYPTO_add_lock'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.15.rcgu.o): In function std::sync::once::Once::call_once::{{closure}}': openssl.cdqq66go-cgu.15:(.text._ZN3std4sync4once4Once9call_once28_$u7b$$u7b$closure$u7d$$u7d$17h5677c6dfbb7094a0E+0x1a): undefined reference to
SSL_get_ex_new_index'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.15.rcgu.o): In function std::sync::once::Once::call_once::{{closure}}': openssl.cdqq66go-cgu.15:(.text._ZN3std4sync4once4Once9call_once28_$u7b$$u7b$closure$u7d$$u7d$17h7f9137704afd4bd0E+0x3e): undefined reference to
SSL_get_ex_new_index'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.15.rcgu.o): In function core::ops::function::FnOnce::call_once{{vtable-shim}}': openssl.cdqq66go-cgu.15:(.text._ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h2bf8105945cea7d0E+0x3e): undefined reference to
SSL_get_ex_new_index'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.15.rcgu.o): In function core::ops::function::FnOnce::call_once{{vtable-shim}}': openssl.cdqq66go-cgu.15:(.text._ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h3a60acbce837a2ffE+0x1a): undefined reference to
SSL_get_ex_new_index'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.15.rcgu.o): In function openssl::ssl::connector::SslConnector::builder': openssl.cdqq66go-cgu.15:(.text._ZN7openssl3ssl9connector12SslConnector7builder17h0c046c5b88fa9875E+0x39): undefined reference to
SSLeay'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.2.rcgu.o): In function <openssl::x509::X509Ref as alloc::borrow::ToOwned>::to_owned': openssl.cdqq66go-cgu.2:(.text._ZN65_$LT$openssl..x509..X509Ref$u20$as$u20$alloc..borrow..ToOwned$GT$8to_owned17h0b86f3b926f154f6E+0x21): undefined reference to
CRYPTO_add_lock'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl-f1d462493160d7b7.rlib(openssl-f1d462493160d7b7.openssl.cdqq66go-cgu.2.rcgu.o): In function <openssl::x509::X509 as core::clone::Clone>::clone': openssl.cdqq66go-cgu.2:(.text._ZN58_$LT$openssl..x509..X509$u20$as$u20$core..clone..Clone$GT$5clone17h162fdad7cc6a69a7E+0x21): undefined reference to
CRYPTO_add_lock'
/tmp/cargo-install4Cfs9h/release/deps/libopenssl_sys-870c6348f4aa41df.rlib(openssl_sys-870c6348f4aa41df.openssl_sys.2czsmp8s-cgu.13.rcgu.o): In function std::sync::once::Once::call_once::{{closure}}': openssl_sys.2czsmp8s-cgu.13:(.text._ZN3std4sync4once4Once9call_once28_$u7b$$u7b$closure$u7d$$u7d$17ha5097da62f58cce2E+0x1f): undefined reference to
SSL_library_init'
openssl_sys.2czsmp8s-cgu.13:(.text.ZN3std4sync4once4Once9call_once28SSL_load_error_strings' openssl_sys.2czsmp8s-cgu.13:(.text._ZN3std4sync4once4Once9call_once28_$u7b$$u7b$closure$u7d$$u7d$17ha5097da62f58cce2E+0x2b): undefined reference to
OPENSSL_add_all_algorithms_noconf'
openssl_sys.2czsmp8s-cgu.13:(.text.ZN3std4sync4once4Once9call_once28CRYPTO_num_locks' openssl_sys.2czsmp8s-cgu.13:(.text._ZN3std4sync4once4Once9call_once28_$u7b$$u7b$closure$u7d$$u7d$17ha5097da62f58cce2E+0x220): undefined reference to
CRYPTO_set_locking_callback'
openssl_sys.2czsmp8s-cgu.13:(.text.ZN3std4sync4once4Once9call_once28
collect2: error: ld returned 1 exit status
error: aborting due to previous error
error: failed to compile spotify-tui v0.6.2
, intermediate artifacts can be found at /tmp/cargo-install4Cfs9h
Caused by:
Could not compile spotify-tui
.
`
$ spt --version
spotify-tui 0.4.0
Scrolling should be asynchronous and fast, or spt defeats its own utility.
I installed spt under Ubuntu 19.04 inside a virtualbox. I was able to connect spt to spotify. E.g. I can see a couple of play lists, I added. But as soon as I tray to play a song, I get the following error message.
Api response: No device_id selected
If you are trying to play a track, make sure the official
$ spt --version
spotify-tui 0.4.0
//EDIT: After I started the spotify desktop app on one of my computers, this computer showed up as a device i can select. After that I can control the playback on that device, but I can't play music where I installed spotify tui. I do have a couple of connected sonos devices here in my network, they don't get detected.
//EDIT2: Ahaaaaa, when you maximize the terminal with spotify tui some explanations get shown. It's like responsive website. But the problem is, that the wrapping doesn't work properly. With a small window, there's no text at all. If you make the window bigger, the text will be cut. Only when you maximize the terminal application, you'll see the whole text.
Just gonna leave this here as a suggestion, there exists an on-going effort at an open source Spotify client in Rust over at librespot and there might be some way to collaborate (I'm only a user of librespot though, so don't expect anything from my side).
When you try to find any not English characters application did fatal exit
It seems that after downloading the binary from cargo
, I do not have a working config file
Posting a blank config working could solve this issue.
Error: Message("invalid type: unit value, expected struct ClientConfig", Some(Pos { marker: Marker { index: 6, line: 4, col: 0 }, path: "." }))
This is my error message.
Hi,
About spotify-tui windows installation, there is a tutorial to use it?
Greetings
Hi. First time Rust user so excuse my naivety.
Running cargo install spotify-tui
produces:
...
Compiling idna v0.2.0
Compiling idna v0.1.5
Compiling want v0.2.0
error: failed to run custom build command for `openssl-sys v0.9.50`
Caused by:
process didn't exit successfully: `/tmp/cargo-installsXx3mo/release/build/openssl-sys-29b8e6cd7dd78066/build-script-main` (exit code: 101)
--- stdout
cargo:rustc-cfg=const_fn
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
cargo:rerun-if-env-changed=OPENSSL_DIR
OPENSSL_DIR unset
run pkg_config fail: "Failed to run `\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"`: No such file or directory (os error 2)"
--- stderr
thread 'main' panicked at '
Could not find directory of OpenSSL installation, and this `-sys` crate cannot
proceed without this knowledge. If OpenSSL is installed and this crate had
trouble finding it, you can set the `OPENSSL_DIR` environment variable for the
compilation process.
Make sure you also have the development packages of openssl installed.
For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.
If you're in a situation where you think the directory *should* be found
automatically, please open a bug at https://github.com/sfackler/rust-openssl
and include information about your system as well as this message.
$HOST = x86_64-unknown-linux-gnu
$TARGET = x86_64-unknown-linux-gnu
openssl-sys = 0.9.50
It looks like you're compiling on Linux and also targeting Linux. Currently this
requires the `pkg-config` utility to find OpenSSL but unfortunately `pkg-config`
could not be found. If you have OpenSSL installed you can likely fix this by
installing `pkg-config`.
', /home/tim/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.50/build/find_normal.rs:150:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
warning: build failed, waiting for other jobs to finish...
error: failed to compile `spotify-tui v0.4.0`, intermediate artifacts can be found at `/tmp/cargo-installsXx3mo`
Caused by:
build failed
~/work via 🐍 3.6.2 took 3m 25s
➜ sudo apt-get install libssl-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libssl-dev is already the newest version (1.1.1c-1ubuntu4).
The following packages were automatically installed and are no longer required:
apache2-utils authbind libapr1 libaprutil1 libecj-java libjaxb-api-java libjetty9-extra-java libjffi-java libjffi-jni libjnr-constants-java libjnr-enxio-java libjnr-ffi-java libjnr-posix-java libjnr-unixsocket-java libjnr-x86asm-java
libspring-beans-java libspring-core-java libtaglibs-standard-impl-java libtaglibs-standard-spec-java
Use 'sudo apt autoremove' to remove them.
0 to upgrade, 0 to newly install, 0 to remove and 1 not to upgrade.
~/work via 🐍 3.6.2
➜ openssl version
OpenSSL 1.1.1c 28 May 2019
Looking at sfackler/rust-openssl#1164, it appears that openssl-sys v0.9.50 (which is in your dependency chain?) does not work with OpenSSL 1.1.1
Hi everyone, let me get to the point fast
I followed all the steps, included the API credentials that are needed and also whitelisted http://localhost/8888/callback
When the client is running I made sure to check that the port is open.
However, when I go to the authentication link and I login I get INVALID_CLIENT: Invalid client. Even when trying to paste in the URL from this into the tool I get an error.
Is it possible to use this app in conjunction with mkchromecast for casting to chromecast?
Would love to know if I am listening to the correct playlist when a friend shares one, such as https://open.spotify.com/playlist/0LbHaoYiD4HCZrrHsf5JK5?si=LlvBb9ySSDmNqzuH4qhRiw
To replicate, type something into the search box and keep pressing the left arrow key- you can keep going past the first character and overflow off to the right side of the screen. the program usually crashes after other input at this point.
Home and end keys don't work either, but I can forgive that. :)
Installed via cargo on Thursday 10 Oct so apologies if this has been fixed since then.
This program is really awesome- thanks a lot! I'm using it to control the office spotify machine without having to get up ;)
You said it only works for mac, but I want to try in Linux, it seems working but returns an error at the below after facebook log in.
Could not connect: Connection refused.
You are very impressive!
After selecting a playlist, I can only view the first 30 or so songs and can't scroll beyond that. Scrolling using vim keys or arrow keys brings me back to the top of the list, and ctl+d/u doesn't do anything (although I'm not too sure ctl+d/u should do). Hopefully I'm not missing something easy in the help section.
Tried installing via cargo:
cargo install spotify-tui
and got the following error:
Updating crates.io index
Installing spotify-tui v0.4.0
error: failed to compile `spotify-tui v0.4.0`, intermediate artifacts can be found at `/tmp/cargo-installls8SWH`
Caused by:
unable to get packages from source
Caused by:
failed to parse manifest at `/home/ubuntu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/Cargo.toml`
Caused by:
feature `rename-dependency` is required
this Cargo does not support nightly features, but if you
switch to nightly channel you can add
`cargo-features = ["rename-dependency"]` to enable this feature
Rust installed via rustup on Ubuntu 18.04
Hey, podcasts don't seem to appear. Although playlists of podcasts do, trying to enter them doesn't do anything. Am I right in thinking the aren't supported right now or have I just misconfigured something?
An option to sort the playlist in different ways would be nice: Show the most recently added songs on top for example.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.