• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/H24-Aug-2021-193175

cargo-crates/H03-May-2022-2,257,3511,803,140

snap/H24-Aug-2021-5752

src/H03-May-2022-12,12210,811

.all-contributorsrcH A D24-Aug-202122.2 KiB853852

.gitignoreH A D24-Aug-2021179 1915

CHANGELOG.mdH A D24-Aug-202118.2 KiB340226

Cargo.lockH A D24-Aug-202161.6 KiB2,5082,246

Cargo.tomlH A D24-Aug-20211,019 3632

LICENSEH A D24-Aug-20211 KiB2217

README.mdH A D24-Aug-202157.9 KiB541439

how_to_release.mdH A D24-Aug-20211.1 KiB2416

rustfmt.tomlH A D24-Aug-202130 32

README.md

1# Spotify TUI
2
3![Continuous Integration](https://github.com/Rigellute/spotify-tui/workflows/Continuous%20Integration/badge.svg?branch=master&event=push)
4![](https://img.shields.io/badge/license-MIT-blueviolet.svg)
5![](https://tokei.rs/b1/github/Rigellute/spotify-tui?category=code)
6[![Crates.io](https://img.shields.io/crates/v/spotify-tui.svg)](https://crates.io/crates/spotify-tui)
7![](https://img.shields.io/github/v/release/Rigellute/spotify-tui?color=%23c694ff)
8
9<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
10[![All Contributors](https://img.shields.io/badge/all_contributors-91-orange.svg?style=flat-square)](#contributors-)
11<!-- ALL-CONTRIBUTORS-BADGE:END -->
12
13[![Follow Alexander Keliris (Rigellute)](https://img.shields.io/twitter/follow/AlexKeliris?label=Follow%20Alexander%20Keliris%20%28Rigellute%29&style=social)](https://twitter.com/intent/follow?screen_name=AlexKeliris)
14
15A Spotify client for the terminal written in Rust.
16
17![Demo](https://user-images.githubusercontent.com/12150276/75177190-91d4ab00-572d-11ea-80bd-c5e28c7b17ad.gif)
18
19The terminal in the demo above is using the [Rigel theme](https://rigel.netlify.com/).
20
21- [Spotify TUI](#spotify-tui)
22  - [Installation](#installation)
23    - [Homebrew](#homebrew)
24    - [Snap](#snap)
25    - [AUR](#aur)
26    - [Nix](#nix)
27    - [Void Linux](#void-linux)
28    - [Fedora/CentOS](#fedora-centos)
29    - [Cargo](#cargo)
30      - [Note on Linux](#note-on-linux)
31    - [Windows](#windows-10)
32      - [Scoop installer](#scoop-installer)
33    - [Manual](#manual)
34  - [Connecting to Spotify’s API](#connecting-to-spotifys-api)
35  - [Usage](#usage)
36- [Configuration](#configuration)
37  - [Limitations](#limitations)
38  - [Using with spotifyd](#using-with-spotifyd)
39  - [Libraries used](#libraries-used)
40  - [Development](#development)
41    - [Windows Subsystem for Linux](#windows-subsystem-for-linux)
42  - [Contributors](#contributors)
43  - [Roadmap](#roadmap)
44    - [High-level requirements yet to be implemented](#high-level-requirements-yet-to-be-implemented)
45
46## Installation
47
48The binary executable is `spt`.
49
50### Homebrew
51
52For both macOS and Linux
53
54```bash
55brew install spotify-tui
56```
57
58To update, run
59
60```bash
61brew upgrade spotify-tui
62```
63
64### Snap
65
66For a system with Snap installed, run
67
68```bash
69snap install spt
70```
71
72The stable version will be installed for you automatically.
73
74If you want to install the nightly build, run
75
76```bash
77snap install spt --edge
78```
79
80### AUR
81
82For those on Arch Linux you can find the package on AUR [here](https://aur.archlinux.org/packages/spotify-tui/). If however you're using an AUR helper you can install directly from that, for example (in the case of [yay](https://github.com/Jguer/yay)), run
83
84```bash
85yay -S spotify-tui
86```
87
88### Nix
89
90Available as the package `spotify-tui`. To install run:
91
92```bash
93nix-env -iA nixpkgs.spotify-tui
94```
95
96Where `nixpkgs` is the channel name in your configuration. For a more up-to-date installation, use the unstable channel.
97It is also possible to add the package to `environment.systemPackages` (for NixOS), or `home.packages` when using [home-manager](https://github.com/rycee/home-manager).
98
99### Void Linux
100
101Available on the official repositories. To install, run
102
103```bash
104sudo xbps-install -Su spotify-tui
105```
106
107### Fedora/CentOS
108
109Available on the [Copr](https://copr.fedorainfracloud.org/coprs/atim/spotify-tui/) repositories. To install, run
110
111```bash
112sudo dnf copr enable atim/spotify-tui -y && sudo dnf install spotify-tui
113```
114
115### Cargo
116
117Use this option if your architecture is not supported by the pre-built binaries found on the [releases page](https://github.com/Rigellute/spotify-tui/releases).
118
119First, install [Rust](https://www.rust-lang.org/tools/install) (using the recommended `rustup` installation method) and then
120
121```bash
122cargo install spotify-tui
123```
124
125This method will build the binary from source.
126
127To update, run the same command again.
128
129#### Note on Linux
130
131For compilation on Linux the development packages for `libssl` are required.
132For basic installation instructions, see [install OpenSSL](https://docs.rs/openssl/0.10.25/openssl/#automatic).
133In order to locate dependencies, the compilation also requires `pkg-config` to be installed.
134
135If you are using the Windows Subsystem for Linux, you'll need to [install additional dependencies](#windows-subsystem-for-linux).
136
137### Windows 10
138
139#### Scoop installer
140
141First, make sure scoop installer is on your windows box, for instruction please visit [scoop.sh](https://scoop.sh)
142
143Then open powershell and run following two commands:
144
145```bash
146scoop bucket add scoop-bucket https://github.com/Rigellute/scoop-bucket
147scoop install spotify-tui
148```
149
150After that program is available as: `spt` or `spt.exe`
151
152### Manual
153
1541. Download the latest [binary](https://github.com/Rigellute/spotify-tui/releases) for your OS.
1551. `cd` to the file you just downloaded and unzip
1561. `cd` to `spotify-tui` and run with `./spt`
157
158## Connecting to Spotify’s API
159
160`spotify-tui` needs to connect to Spotify’s API in order to find music by
161name, play tracks etc.
162
163Instructions on how to set this up will be shown when you first run the app.
164
165But here they are again:
166
1671. Go to the [Spotify dashboard](https://developer.spotify.com/dashboard/applications)
1681. Click `Create an app`
169    - You now can see your `Client ID` and `Client Secret`
1701. Now click `Edit Settings`
1711. Add `http://localhost:8888/callback` to the Redirect URIs
1721. Scroll down and click `Save`
1731. You are now ready to authenticate with Spotify!
1741. Go back to the terminal
1751. Run `spt`
1761. Enter your `Client ID`
1771. Enter your `Client Secret`
1781. Press enter to confirm the default port (8888) or enter a custom port
1791. You will be redirected to an official Spotify webpage to ask you for permissions.
1801. After accepting the permissions, you'll be redirected to localhost. If all goes well, the redirect URL will be parsed automatically and now you're done. If the local webserver fails for some reason you'll be redirected to a blank webpage that might say something like "Connection Refused" since no server is running. Regardless, copy the URL and paste into the prompt in the terminal.
181
182And now you are ready to use the `spotify-tui` ��
183
184You can edit the config at anytime at `${HOME}/.config/spotify-tui/client.yml`. (for snap `${HOME}/snap/spt/current/.config/spotify-tui/client.yml`)
185
186## Usage
187
188The binary is named `spt`.
189
190Running `spt` with no arguments will bring up the UI. Press `?` to bring up a help menu that shows currently implemented key events and their actions.
191There is also a CLI that is able to do most of the stuff the UI does. Use `spt --help` to learn more.
192
193Here are some example to get you excited.
194```
195spt --completions zsh # Prints shell completions for zsh to stdout (bash, power-shell and more are supported)
196
197spt play --name "Your Playlist" --playlist --random # Plays a random song from "Your Playlist"
198spt play --name "A cool song" --track # Plays 'A cool song'
199
200spt playback --like --shuffle # Likes the current song and toggles shuffle mode
201spt playback --toggle # Plays/pauses the current playback
202
203spt list --liked --limit 50 # See your liked songs (50 is the max limit)
204
205# Looks for 'An even cooler song' and gives you the '{name} from {album}' of up to 30 matches
206spt search "An even cooler song" --tracks --format "%t from %b" --limit 30
207```
208
209# Configuration
210
211A configuration file is located at `${HOME}/.config/spotify-tui/config.yml`, for snap `${HOME}/snap/spt/current/.config/spotify-tui/config.yml`
212(not to be confused with client.yml which handles spotify authentication)
213
214The following is a sample config.yml file:
215
216```yaml
217# Sample config file
218
219# The theme colours can be an rgb string of the form "255, 255, 255" or a string that references the colours from your terminal theme: Reset, Black, Red, Green, Yellow, Blue, Magenta, Cyan, Gray, DarkGray, LightRed, LightGreen, LightYellow, LightBlue, LightMagenta, LightCyan, White.
220theme:
221  active: Cyan # current playing song in list
222  banner: LightCyan # the "spotify-tui" banner on launch
223  error_border: Red # error dialog border
224  error_text: LightRed # error message text (e.g. "Spotify API reported error 404")
225  hint: Yellow # hint text in errors
226  hovered: Magenta # hovered pane border
227  inactive: Gray # borders of inactive panes
228  playbar_background: Black # background of progress bar
229  playbar_progress: LightCyan # filled-in part of the progress bar
230  playbar_progress_text: Cyan # song length and time played/left indicator in the progress bar
231  playbar_text: White # artist name in player pane
232  selected: LightCyan # a) selected pane border, b) hovered item in list, & c) track title in player
233  text: "255, 255, 255" # text in panes
234  header: White # header text in panes (e.g. 'Title', 'Artist', etc.)
235
236behavior:
237  seek_milliseconds: 5000
238  volume_increment: 10
239  # The lower the number the higher the "frames per second". You can decrease this number so that the audio visualisation is smoother but this can be expensive!
240  tick_rate_milliseconds: 250
241  # Enable text emphasis (typically italic/bold text styling). Disabling this might be important if the terminal config is otherwise restricted and rendering text escapes interferes with the UI.
242  enable_text_emphasis: true
243  # Controls whether to show a loading indicator in the top right of the UI whenever communicating with Spotify API
244  show_loading_indicator: true
245  # Disables the responsive layout that makes the search bar smaller on bigger
246  # screens and enforces a wide search bar
247  enforce_wide_search_bar: false
248  # Determines the text icon to display next to "liked" Spotify items, such as
249  # liked songs and albums, or followed artists. Can be any length string.
250  # These icons require a patched nerd font.
251  liked_icon: ♥
252  shuffle_icon: ��
253  repeat_track_icon: ��
254  repeat_context_icon: ��
255  playing_icon: ▶
256  paused_icon: ⏸
257
258keybindings:
259  # Key stroke can be used if it only uses two keys:
260  # ctrl-q works,
261  # ctrl-alt-q doesn't.
262  back: "ctrl-q"
263
264  jump_to_album: "a"
265
266  # Shift modifiers use a capital letter (also applies with other modifier keys
267  # like ctrl-A)
268  jump_to_artist_album: "A"
269
270  manage_devices: "d"
271  decrease_volume: "-"
272  increase_volume: "+"
273  toggle_playback: " "
274  seek_backwards: "<"
275  seek_forwards: ">"
276  next_track: "n"
277  previous_track: "p"
278  copy_song_url: "c"
279  copy_album_url: "C"
280  help: "?"
281  shuffle: "ctrl-s"
282  repeat: "r"
283  search: "/"
284  audio_analysis: "v"
285  jump_to_context: "o"
286  basic_view: "B"
287  add_item_to_queue: "z"
288```
289
290## Limitations
291
292This app uses the [Web API](https://developer.spotify.com/documentation/web-api/) from Spotify, which doesn't handle streaming itself. So you'll need either an official Spotify client open or a lighter weight alternative such as [spotifyd](https://github.com/Spotifyd/spotifyd).
293
294If you want to play tracks, Spotify requires that you have a Premium account.
295
296## Using with [spotifyd](https://github.com/Spotifyd/spotifyd)
297
298Follow the spotifyd documentation to get set up.
299
300After that there is not much to it.
301
3021. Start running the spotifyd daemon.
3031. Start up `spt`
3041. Press `d` to go to the device selection menu and the spotifyd "device" should be there - if not check [these docs](https://github.com/Spotifyd/spotifyd#logging)
305
306## Libraries used
307
308- [tui-rs](https://github.com/fdehau/tui-rs)
309- [rspotify](https://github.com/ramsayleung/rspotify)
310
311## Development
312
3131. [Install OpenSSL](https://docs.rs/openssl/0.10.25/openssl/#automatic)
3141. [Install Rust](https://www.rust-lang.org/tools/install)
3151. [Install `xorg-dev`](https://github.com/aweinstock314/rust-clipboard#prerequisites) (required for clipboard support)
3161. Clone or fork this repo and `cd` to it
3171. And then `cargo run`
318
319### Windows Subsystem for Linux
320
321You might get a linking error. If so, you'll probably need to install additional dependencies required by the clipboard package
322
323```bash
324sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
325```
326
327## Contributors
328
329Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
330
331<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
332<!-- prettier-ignore-start -->
333<!-- markdownlint-disable -->
334<table>
335  <tr>
336    <td align="center"><a href="https://keliris.dev/"><img src="https://avatars2.githubusercontent.com/u/12150276?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexander Keliris</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Rigellute" title="Code">��</a> <a href="https://github.com/Rigellute/spotify-tui/commits?author=Rigellute" title="Documentation">��</a> <a href="#design-Rigellute" title="Design">��</a> <a href="#blog-Rigellute" title="Blogposts">��</a> <a href="#ideas-Rigellute" title="Ideas, Planning, & Feedback">��</a> <a href="#infra-Rigellute" title="Infrastructure (Hosting, Build-Tools, etc)">��</a> <a href="#maintenance-Rigellute" title="Maintenance">��</a> <a href="#platform-Rigellute" title="Packaging/porting to new platform">��</a> <a href="https://github.com/Rigellute/spotify-tui/pulls?q=is%3Apr+reviewed-by%3ARigellute" title="Reviewed Pull Requests">��</a></td>
337    <td align="center"><a href="https://github.com/mikepombal"><img src="https://avatars3.githubusercontent.com/u/6864231?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mickael Marques</b></sub></a><br /><a href="#financial-mikepombal" title="Financial">��</a></td>
338    <td align="center"><a href="https://github.com/HakierGrzonzo"><img src="https://avatars0.githubusercontent.com/u/36668331?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Grzegorz Koperwas</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=HakierGrzonzo" title="Documentation">��</a></td>
339    <td align="center"><a href="https://github.com/amgassert"><img src="https://avatars2.githubusercontent.com/u/22896005?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Austin Gassert</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=amgassert" title="Code">��</a></td>
340    <td align="center"><a href="https://robinette.dev"><img src="https://avatars2.githubusercontent.com/u/30757528?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Calen Robinette</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=calenrobinette" title="Code">��</a></td>
341    <td align="center"><a href="https://mcofficer.me"><img src="https://avatars0.githubusercontent.com/u/22377202?v=4?s=100" width="100px;" alt=""/><br /><sub><b>M*C*O</b></sub></a><br /><a href="#infra-MCOfficer" title="Infrastructure (Hosting, Build-Tools, etc)">��</a></td>
342    <td align="center"><a href="https://github.com/eminence"><img src="https://avatars0.githubusercontent.com/u/402454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andrew Chin</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=eminence" title="Code">��</a></td>
343  </tr>
344  <tr>
345    <td align="center"><a href="https://www.samnaser.com/"><img src="https://avatars0.githubusercontent.com/u/4377348?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sam Naser</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Monkeyanator" title="Code">��</a></td>
346    <td align="center"><a href="https://github.com/radogost"><img src="https://avatars0.githubusercontent.com/u/15713820?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Micha</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=radogost" title="Code">��</a></td>
347    <td align="center"><a href="https://github.com/neriglissar"><img src="https://avatars2.githubusercontent.com/u/53038761?v=4?s=100" width="100px;" alt=""/><br /><sub><b>neriglissar</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=neriglissar" title="Code">��</a></td>
348    <td align="center"><a href="https://github.com/TimonPost"><img src="https://avatars3.githubusercontent.com/u/19969910?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Timon</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=TimonPost" title="Code">��</a></td>
349    <td align="center"><a href="https://github.com/echoSayonara"><img src="https://avatars2.githubusercontent.com/u/54503126?v=4?s=100" width="100px;" alt=""/><br /><sub><b>echoSayonara</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=echoSayonara" title="Code">��</a></td>
350    <td align="center"><a href="https://github.com/D-Nice"><img src="https://avatars1.githubusercontent.com/u/2888248?v=4?s=100" width="100px;" alt=""/><br /><sub><b>D-Nice</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=D-Nice" title="Documentation">��</a> <a href="#infra-D-Nice" title="Infrastructure (Hosting, Build-Tools, etc)">��</a></td>
351    <td align="center"><a href="http://gpawlik.com"><img src="https://avatars3.githubusercontent.com/u/6296883?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Grzegorz Pawlik</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=gpawlik" title="Code">��</a></td>
352  </tr>
353  <tr>
354    <td align="center"><a href="http://lenny.ninja"><img src="https://avatars1.githubusercontent.com/u/4027243?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lennart Bernhardt</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=LennyPenny" title="Code">��</a></td>
355    <td align="center"><a href="https://github.com/BlackYoup"><img src="https://avatars3.githubusercontent.com/u/6098160?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arnaud Lefebvre</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=BlackYoup" title="Code">��</a></td>
356    <td align="center"><a href="https://github.com/tem1029"><img src="https://avatars3.githubusercontent.com/u/57712713?v=4?s=100" width="100px;" alt=""/><br /><sub><b>tem1029</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=tem1029" title="Code">��</a></td>
357    <td align="center"><a href="http://peter.moss.dk"><img src="https://avatars2.githubusercontent.com/u/12544579?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Peter K. Moss</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Peterkmoss" title="Code">��</a></td>
358    <td align="center"><a href="http://www.zephyrizing.net/"><img src="https://avatars1.githubusercontent.com/u/113102?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Geoff Shannon</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=RadicalZephyr" title="Code">��</a></td>
359    <td align="center"><a href="http://zacklukem.info"><img src="https://avatars0.githubusercontent.com/u/8787486?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zachary Mayhew</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=zacklukem" title="Code">��</a></td>
360    <td align="center"><a href="http://jfaltis.de"><img src="https://avatars2.githubusercontent.com/u/45465572?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jfaltis</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=jfaltis" title="Code">��</a></td>
361  </tr>
362  <tr>
363    <td align="center"><a href="https://marcelschr.me"><img src="https://avatars3.githubusercontent.com/u/19377618?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marcel Schramm</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Bios-Marcel" title="Documentation">��</a></td>
364    <td align="center"><a href="https://github.com/fangyi-zhou"><img src="https://avatars3.githubusercontent.com/u/7815439?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fangyi Zhou</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=fangyi-zhou" title="Code">��</a></td>
365    <td align="center"><a href="https://github.com/synth-ruiner"><img src="https://avatars1.githubusercontent.com/u/8642013?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Max</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=synth-ruiner" title="Code">��</a></td>
366    <td align="center"><a href="https://github.com/svenvNL"><img src="https://avatars1.githubusercontent.com/u/13982006?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sven van der Vlist</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=svenvNL" title="Code">��</a></td>
367    <td align="center"><a href="https://github.com/jacobchrismarsh"><img src="https://avatars2.githubusercontent.com/u/15932179?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jacobchrismarsh</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=jacobchrismarsh" title="Code">��</a></td>
368    <td align="center"><a href="https://github.com/TheWalkingLeek"><img src="https://avatars2.githubusercontent.com/u/36076343?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nils Rauch</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=TheWalkingLeek" title="Code">��</a></td>
369    <td align="center"><a href="https://github.com/sputnick1124"><img src="https://avatars1.githubusercontent.com/u/8843309?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nick Stockton</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=sputnick1124" title="Code">��</a> <a href="https://github.com/Rigellute/spotify-tui/issues?q=author%3Asputnick1124" title="Bug reports">��</a> <a href="#maintenance-sputnick1124" title="Maintenance">��</a> <a href="#question-sputnick1124" title="Answering Questions">��</a> <a href="https://github.com/Rigellute/spotify-tui/commits?author=sputnick1124" title="Documentation">��</a></td>
370  </tr>
371  <tr>
372    <td align="center"><a href="http://stuarth.github.io"><img src="https://avatars3.githubusercontent.com/u/7055?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stuart Hinson</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=stuarth" title="Code">��</a></td>
373    <td align="center"><a href="https://github.com/samcal"><img src="https://avatars3.githubusercontent.com/u/2117940?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sam Calvert</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=samcal" title="Code">��</a> <a href="https://github.com/Rigellute/spotify-tui/commits?author=samcal" title="Documentation">��</a></td>
374    <td align="center"><a href="https://github.com/jwijenbergh"><img src="https://avatars0.githubusercontent.com/u/46386452?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeroen Wijenbergh</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=jwijenbergh" title="Documentation">��</a></td>
375    <td align="center"><a href="https://twitter.com/KimberleyCook91"><img src="https://avatars3.githubusercontent.com/u/2683270?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kimberley Cook</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=KimberleyCook" title="Documentation">��</a></td>
376    <td align="center"><a href="https://github.com/baxtea"><img src="https://avatars0.githubusercontent.com/u/22502477?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Audrey Baxter</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=baxtea" title="Code">��</a></td>
377    <td align="center"><a href="https://koehr.in"><img src="https://avatars2.githubusercontent.com/u/246402?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Norman</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=nkoehring" title="Documentation">��</a></td>
378    <td align="center"><a href="https://github.com/blackwolf12333"><img src="https://avatars0.githubusercontent.com/u/1572975?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Peter Maatman</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=blackwolf12333" title="Code">��</a></td>
379  </tr>
380  <tr>
381    <td align="center"><a href="https://github.com/AlexandreSi"><img src="https://avatars1.githubusercontent.com/u/32449369?v=4?s=100" width="100px;" alt=""/><br /><sub><b>AlexandreS</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=AlexandreSi" title="Code">��</a></td>
382    <td align="center"><a href="https://github.com/fiinnnn"><img src="https://avatars2.githubusercontent.com/u/5011796?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Finn Vos</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=fiinnnn" title="Code">��</a></td>
383    <td align="center"><a href="https://github.com/hurricanehrndz"><img src="https://avatars0.githubusercontent.com/u/5804237?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Carlos Hernandez</b></sub></a><br /><a href="#platform-hurricanehrndz" title="Packaging/porting to new platform">��</a></td>
384    <td align="center"><a href="https://github.com/pedrohva"><img src="https://avatars3.githubusercontent.com/u/33297928?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pedro Alves</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=pedrohva" title="Code">��</a></td>
385    <td align="center"><a href="https://gitlab.com/jtagcat/"><img src="https://avatars1.githubusercontent.com/u/38327267?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jtagcat</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=jtagcat" title="Documentation">��</a></td>
386    <td align="center"><a href="https://github.com/BKitor"><img src="https://avatars0.githubusercontent.com/u/16880850?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Benjamin Kitor</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=BKitor" title="Code">��</a></td>
387    <td align="center"><a href="https://ales.rocks"><img src="https://avatars0.githubusercontent.com/u/544082?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Aleš Najmann</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=littleli" title="Documentation">��</a> <a href="#platform-littleli" title="Packaging/porting to new platform">��</a></td>
388  </tr>
389  <tr>
390    <td align="center"><a href="https://github.com/jeremystucki"><img src="https://avatars3.githubusercontent.com/u/7629727?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeremy Stucki</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=jeremystucki" title="Code">��</a></td>
391    <td align="center"><a href="http://pt2121.github.io"><img src="https://avatars0.githubusercontent.com/u/616399?v=4?s=100" width="100px;" alt=""/><br /><sub><b>(´⌣`ʃƪ)</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=pt2121" title="Code">��</a></td>
392    <td align="center"><a href="https://github.com/tim77"><img src="https://avatars0.githubusercontent.com/u/5614476?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Artem Polishchuk</b></sub></a><br /><a href="#platform-tim77" title="Packaging/porting to new platform">��</a></td>
393    <td align="center"><a href="https://github.com/slumber"><img src="https://avatars2.githubusercontent.com/u/48099298?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Sosnin</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=slumber" title="Code">��</a></td>
394    <td align="center"><a href="http://www.benbuhse.com"><img src="https://avatars1.githubusercontent.com/u/21225303?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ben Buhse</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=bwbuhse" title="Documentation">��</a></td>
395    <td align="center"><a href="https://github.com/ilnaes"><img src="https://avatars1.githubusercontent.com/u/20805499?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sean Li</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=ilnaes" title="Code">��</a></td>
396    <td align="center"><a href="https://github.com/TimotheeGerber"><img src="https://avatars3.githubusercontent.com/u/37541513?v=4?s=100" width="100px;" alt=""/><br /><sub><b>TimotheeGerber</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=TimotheeGerber" title="Code">��</a> <a href="https://github.com/Rigellute/spotify-tui/commits?author=TimotheeGerber" title="Documentation">��</a></td>
397  </tr>
398  <tr>
399    <td align="center"><a href="https://github.com/fratajczak"><img src="https://avatars2.githubusercontent.com/u/33835579?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ferdinand Ratajczak</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=fratajczak" title="Code">��</a></td>
400    <td align="center"><a href="https://github.com/sheelc"><img src="https://avatars0.githubusercontent.com/u/1355710?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sheel Choksi</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=sheelc" title="Code">��</a></td>
401    <td align="center"><a href="http://fnanp.in-ulm.de/microblog/"><img src="https://avatars1.githubusercontent.com/u/414112?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Hellwig</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=mhellwig" title="Documentation">��</a></td>
402    <td align="center"><a href="https://github.com/oliver-daniel"><img src="https://avatars2.githubusercontent.com/u/17235417?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Oliver Daniel</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=oliver-daniel" title="Code">��</a></td>
403    <td align="center"><a href="https://github.com/Drewsapple"><img src="https://avatars2.githubusercontent.com/u/4532572?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Drew Fisher</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Drewsapple" title="Code">��</a></td>
404    <td align="center"><a href="https://github.com/ncoder-1"><img src="https://avatars0.githubusercontent.com/u/7622286?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ncoder-1</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=ncoder-1" title="Documentation">��</a></td>
405    <td align="center"><a href="http://macguire.me"><img src="https://avatars3.githubusercontent.com/u/18323154?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Macguire Rintoul</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=macguirerintoul" title="Documentation">��</a></td>
406  </tr>
407  <tr>
408    <td align="center"><a href="http://ricardohe97.github.io"><img src="https://avatars3.githubusercontent.com/u/28399979?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ricardo Holguin</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=RicardoHE97" title="Code">��</a></td>
409    <td align="center"><a href="https://ksk.netlify.com"><img src="https://avatars3.githubusercontent.com/u/13160198?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Keisuke Toyota</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=ksk001100" title="Code">��</a></td>
410    <td align="center"><a href="https://jackson15j.github.io"><img src="https://avatars1.githubusercontent.com/u/3226988?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Craig Astill</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=jackson15j" title="Code">��</a></td>
411    <td align="center"><a href="https://github.com/onielfa"><img src="https://avatars0.githubusercontent.com/u/4358172?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Onielfa</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=onielfa" title="Code">��</a></td>
412    <td align="center"><a href="https://usrme.xyz"><img src="https://avatars3.githubusercontent.com/u/5902545?v=4?s=100" width="100px;" alt=""/><br /><sub><b>usrme</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=usrme" title="Documentation">��</a></td>
413    <td align="center"><a href="https://github.com/murlakatamenka"><img src="https://avatars2.githubusercontent.com/u/7361274?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sergey A.</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=murlakatamenka" title="Code">��</a></td>
414    <td align="center"><a href="https://github.com/elcih17"><img src="https://avatars3.githubusercontent.com/u/17084445?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hideyuki Okada</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=elcih17" title="Code">��</a></td>
415  </tr>
416  <tr>
417    <td align="center"><a href="https://github.com/kepae"><img src="https://avatars2.githubusercontent.com/u/4238598?v=4?s=100" width="100px;" alt=""/><br /><sub><b>kepae</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=kepae" title="Code">��</a> <a href="https://github.com/Rigellute/spotify-tui/commits?author=kepae" title="Documentation">��</a></td>
418    <td align="center"><a href="https://github.com/ericonr"><img src="https://avatars0.githubusercontent.com/u/34201958?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Érico Nogueira Rolim</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=ericonr" title="Code">��</a></td>
419    <td align="center"><a href="https://github.com/BeneCollyridam"><img src="https://avatars2.githubusercontent.com/u/15802915?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexander Meinhardt Scheurer</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=BeneCollyridam" title="Code">��</a></td>
420    <td align="center"><a href="https://github.com/Toaster192"><img src="https://avatars0.githubusercontent.com/u/14369229?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ondřej Kinšt</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Toaster192" title="Code">��</a></td>
421    <td align="center"><a href="https://github.com/Kryan90"><img src="https://avatars3.githubusercontent.com/u/18740821?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kryan90</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Kryan90" title="Documentation">��</a></td>
422    <td align="center"><a href="https://github.com/n-ivanov"><img src="https://avatars3.githubusercontent.com/u/11470871?v=4?s=100" width="100px;" alt=""/><br /><sub><b>n-ivanov</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=n-ivanov" title="Code">��</a></td>
423    <td align="center"><a href="http://matthewbilyeu.com/resume/"><img src="https://avatars3.githubusercontent.com/u/1185129?v=4?s=100" width="100px;" alt=""/><br /><sub><b>bi1yeu</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=bi1yeu" title="Code">��</a> <a href="https://github.com/Rigellute/spotify-tui/commits?author=bi1yeu" title="Documentation">��</a></td>
424  </tr>
425  <tr>
426    <td align="center"><a href="https://github.com/Utagai"><img src="https://avatars2.githubusercontent.com/u/10730394?v=4?s=100" width="100px;" alt=""/><br /><sub><b>May</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Utagai" title="Code">��</a></td>
427    <td align="center"><a href="https://mucinoab.github.io/"><img src="https://avatars1.githubusercontent.com/u/28630268?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Bruno A. Muciño</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=mucinoab" title="Code">��</a></td>
428    <td align="center"><a href="https://github.com/OrangeFran"><img src="https://avatars2.githubusercontent.com/u/55061632?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Finn Hediger</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=OrangeFran" title="Code">��</a></td>
429    <td align="center"><a href="https://github.com/dp304"><img src="https://avatars1.githubusercontent.com/u/34493835?v=4?s=100" width="100px;" alt=""/><br /><sub><b>dp304</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=dp304" title="Code">��</a></td>
430    <td align="center"><a href="http://marcomicera.github.io"><img src="https://avatars0.githubusercontent.com/u/13918587?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marco Micera</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=marcomicera" title="Documentation">��</a></td>
431    <td align="center"><a href="http://marcoieni.com"><img src="https://avatars3.githubusercontent.com/u/11428655?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marco Ieni</b></sub></a><br /><a href="#infra-MarcoIeni" title="Infrastructure (Hosting, Build-Tools, etc)">��</a></td>
432    <td align="center"><a href="https://github.com/ArturKovacs"><img src="https://avatars3.githubusercontent.com/u/8320264?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Artúr Kovács</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=ArturKovacs" title="Code">��</a></td>
433  </tr>
434  <tr>
435    <td align="center"><a href="https://github.com/aokellermann"><img src="https://avatars.githubusercontent.com/u/26678747?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Antony Kellermann</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=aokellermann" title="Code">��</a></td>
436    <td align="center"><a href="https://github.com/rasmuspeders1"><img src="https://avatars.githubusercontent.com/u/1898960?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rasmus Pedersen</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=rasmuspeders1" title="Code">��</a></td>
437    <td align="center"><a href="https://github.com/noir-Z"><img src="https://avatars.githubusercontent.com/u/45096516?v=4?s=100" width="100px;" alt=""/><br /><sub><b>noir-Z</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=noir-Z" title="Documentation">��</a></td>
438    <td align="center"><a href="https://davidbailey.codes/"><img src="https://avatars.githubusercontent.com/u/4248177?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Bailey</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=davidbailey00" title="Documentation">��</a></td>
439    <td align="center"><a href="https://github.com/sheepwall"><img src="https://avatars.githubusercontent.com/u/22132993?v=4?s=100" width="100px;" alt=""/><br /><sub><b>sheepwall</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=sheepwall" title="Code">��</a></td>
440    <td align="center"><a href="https://github.com/Hwatwasthat"><img src="https://avatars.githubusercontent.com/u/29790143?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hwatwasthat</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Hwatwasthat" title="Code">��</a></td>
441    <td align="center"><a href="https://github.com/Jesse-Bakker"><img src="https://avatars.githubusercontent.com/u/22473248?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jesse</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=Jesse-Bakker" title="Code">��</a></td>
442  </tr>
443  <tr>
444    <td align="center"><a href="https://github.com/hantatsang"><img src="https://avatars.githubusercontent.com/u/11912225?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sang</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=hantatsang" title="Documentation">��</a></td>
445    <td align="center"><a href="https://yktakaha4.github.io/"><img src="https://avatars.githubusercontent.com/u/20282867?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yuuki Takahashi</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=yktakaha4" title="Documentation">��</a></td>
446    <td align="center"><a href="https://alejandr0angul0.dev/"><img src="https://avatars.githubusercontent.com/u/5242883?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alejandro Angulo</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=alejandro-angulo" title="Code">��</a></td>
447    <td align="center"><a href="http://t.me/lego1as"><img src="https://avatars.githubusercontent.com/u/11005780?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anton Kostin</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=masguit42" title="Documentation">��</a></td>
448    <td align="center"><a href="https://justinsexton.net"><img src="https://avatars.githubusercontent.com/u/20236003?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Justin Sexton</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=JSextonn" title="Code">��</a></td>
449    <td align="center"><a href="https://github.com/lejiati"><img src="https://avatars.githubusercontent.com/u/6442124?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jiati Le</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=lejiati" title="Documentation">��</a></td>
450    <td align="center"><a href="https://github.com/cobbinma"><img src="https://avatars.githubusercontent.com/u/578718?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matthew Cobbing</b></sub></a><br /><a href="https://github.com/Rigellute/spotify-tui/commits?author=cobbinma" title="Code">��</a></td>
451  </tr>
452</table>
453
454<!-- markdownlint-restore -->
455<!-- prettier-ignore-end -->
456
457<!-- ALL-CONTRIBUTORS-LIST:END -->
458
459This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
460
461## Roadmap
462
463The goal is to eventually implement almost every Spotify feature.
464
465### High-level requirements yet to be implemented
466
467- Add songs to a playlist
468- Be able to scroll through result pages in every view
469
470This table shows all that is possible with the Spotify API, what is implemented already, and whether that is essential.
471
472| API method                                        | Implemented yet? | Explanation                                                                                                                                                  | Essential? |
473| ------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
474| track                                             | No               | returns a single track given the track's ID, URI or URL                                                                                                      | No         |
475| tracks                                            | No               | returns a list of tracks given a list of track IDs, URIs, or URLs                                                                                            | No         |
476| artist                                            | No               | returns a single artist given the artist's ID, URI or URL                                                                                                    | Yes        |
477| artists                                           | No               | returns a list of artists given the artist IDs, URIs, or URLs                                                                                                | No         |
478| artist_albums                                     | Yes              | Get Spotify catalog information about an artist's albums                                                                                                     | Yes        |
479| artist_top_tracks                                 | Yes              | Get Spotify catalog information about an artist's top 10 tracks by country.                                                                                  | Yes        |
480| artist_related_artists                            | Yes              | Get Spotify catalog information about artists similar to an identified artist. Similarity is based on analysis of the Spotify community's listening history. | Yes        |
481| album                                             | Yes              | returns a single album given the album's ID, URIs or URL                                                                                                     | Yes        |
482| albums                                            | No               | returns a list of albums given the album IDs, URIs, or URLs                                                                                                  | No         |
483| search_album                                      | Yes              | Search album based on query                                                                                                                                  | Yes        |
484| search_artist                                     | Yes              | Search artist based on query                                                                                                                                 | Yes        |
485| search_track                                      | Yes              | Search track based on query                                                                                                                                  | Yes        |
486| search_playlist                                   | Yes              | Search playlist based on query                                                                                                                               | Yes        |
487| album_track                                       | Yes              | Get Spotify catalog information about an album's tracks                                                                                                      | Yes        |
488| user                                              | No               | Gets basic profile information about a Spotify User                                                                                                          | No         |
489| playlist                                          | Yes              | Get full details about Spotify playlist                                                                                                                      | Yes        |
490| current_user_playlists                            | Yes              | Get current user playlists without required getting his profile                                                                                              | Yes        |
491| user_playlists                                    | No               | Gets playlists of a user                                                                                                                                     | No         |
492| user_playlist                                     | No               | Gets playlist of a user                                                                                                                                      | No         |
493| user_playlist_tracks                              | Yes              | Get full details of the tracks of a playlist owned by a user                                                                                                 | Yes        |
494| user_playlist_create                              | No               | Creates a playlist for a user                                                                                                                                | Yes        |
495| user_playlist_change_detail                       | No               | Changes a playlist's name and/or public/private state                                                                                                        | Yes        |
496| user_playlist_unfollow                            | Yes              | Unfollows (deletes) a playlist for a user                                                                                                                    | Yes        |
497| user_playlist_add_track                           | No               | Adds tracks to a playlist                                                                                                                                    | Yes        |
498| user_playlist_replace_track                       | No               | Replace all tracks in a playlist                                                                                                                             | No         |
499| user_playlist_recorder_tracks                     | No               | Reorder tracks in a playlist                                                                                                                                 | No         |
500| user_playlist_remove_all_occurrences_of_track     | No               | Removes all occurrences of the given tracks from the given playlist                                                                                          | No         |
501| user_playlist_remove_specific_occurrenes_of_track | No               | Removes all occurrences of the given tracks from the given playlist                                                                                          | No         |
502| user_playlist_follow_playlist                     | Yes              | Add the current authenticated user as a follower of a playlist.                                                                                              | Yes        |
503| user_playlist_check_follow                        | No               | Check to see if the given users are following the given playlist                                                                                             | Yes        |
504| me                                                | No               | Get detailed profile information about the current user.                                                                                                     | Yes        |
505| current_user                                      | No               | Alias for `me`                                                                                                                                               | Yes        |
506| current_user_playing_track                        | Yes              | Get information about the current users currently playing track.                                                                                             | Yes        |
507| current_user_saved_albums                         | Yes              | Gets a list of the albums saved in the current authorized user's "Your Music" library                                                                        | Yes        |
508| current_user_saved_tracks                         | Yes              | Gets the user's saved tracks or "Liked Songs"                                                                                                                | Yes        |
509| current_user_followed_artists                     | Yes              | Gets a list of the artists followed by the current authorized user                                                                                           | Yes        |
510| current_user_saved_tracks_delete                  | Yes              | Remove one or more tracks from the current user's "Your Music" library.                                                                                      | Yes        |
511| current_user_saved_tracks_contain                 | No               | Check if one or more tracks is already saved in the current Spotify user’s “Your Music” library.                                                             | Yes        |
512| current_user_saved_tracks_add                     | Yes              | Save one or more tracks to the current user's "Your Music" library.                                                                                          | Yes        |
513| current_user_top_artists                          | No               | Get the current user's top artists                                                                                                                           | Yes        |
514| current_user_top_tracks                           | No               | Get the current user's top tracks                                                                                                                            | Yes        |
515| current_user_recently_played                      | Yes              | Get the current user's recently played tracks                                                                                                                | Yes        |
516| current_user_saved_albums_add                     | Yes              | Add one or more albums to the current user's "Your Music" library.                                                                                           | Yes        |
517| current_user_saved_albums_delete                  | Yes              | Remove one or more albums from the current user's "Your Music" library.                                                                                      | Yes        |
518| user_follow_artists                               | Yes              | Follow one or more artists                                                                                                                                   | Yes        |
519| user_unfollow_artists                             | Yes              | Unfollow one or more artists                                                                                                                                 | Yes        |
520| user_follow_users                                 | No               | Follow one or more users                                                                                                                                     | No         |
521| user_unfollow_users                               | No               | Unfollow one or more users                                                                                                                                   | No         |
522| featured_playlists                                | No               | Get a list of Spotify featured playlists                                                                                                                     | Yes        |
523| new_releases                                      | No               | Get a list of new album releases featured in Spotify                                                                                                         | Yes        |
524| categories                                        | No               | Get a list of categories used to tag items in Spotify                                                                                                        | Yes        |
525| recommendations                                   | Yes              | Get Recommendations Based on Seeds                                                                                                                           | Yes        |
526| audio_features                                    | No               | Get audio features for a track                                                                                                                               | No         |
527| audios_features                                   | No               | Get Audio Features for Several Tracks                                                                                                                        | No         |
528| audio_analysis                                    | Yes              | Get Audio Analysis for a Track                                                                                                                               | Yes        |
529| device                                            | Yes              | Get a User’s Available Devices                                                                                                                               | Yes        |
530| current_playback                                  | Yes              | Get Information About The User’s Current Playback                                                                                                            | Yes        |
531| current_playing                                   | No               | Get the User’s Currently Playing Track                                                                                                                       | No         |
532| transfer_playback                                 | Yes              | Transfer a User’s Playback                                                                                                                                   | Yes        |
533| start_playback                                    | Yes              | Start/Resume a User’s Playback                                                                                                                               | Yes        |
534| pause_playback                                    | Yes              | Pause a User’s Playback                                                                                                                                      | Yes        |
535| next_track                                        | Yes              | Skip User’s Playback To Next Track                                                                                                                           | Yes        |
536| previous_track                                    | Yes              | Skip User’s Playback To Previous Track                                                                                                                       | Yes        |
537| seek_track                                        | Yes              | Seek To Position In Currently Playing Track                                                                                                                  | Yes        |
538| repeat                                            | Yes              | Set Repeat Mode On User’s Playback                                                                                                                           | Yes        |
539| volume                                            | Yes              | Set Volume For User’s Playback                                                                                                                               | Yes        |
540| shuffle                                           | Yes              | Toggle Shuffle For User’s Playback                                                                                                                           | Yes        |
541