Spotify¶
A Spotify Premium account is required to stream audio from Spotify. Tizonia
will not work with a Spotify Free account. Please introduce your Premium
account’s user name and password into tizonia.conf, or alternatively, use
the corresponding command-line options available.
CONFIGURATION¶
The Tizonia configuration file contains a block under the [tizonia] section
like the one pictured below (see also Configuration File).
Warning
When user names and passwords are stored in your local
tizonia.conf, please ensure that this file has the correct
file system permissions to prevent other users from accessing your
credentials.
E.g.: $ chmod og-rwx $HOME/.config/tizonia/tizonia.conf
# Spotify configuration
# -------------------------------------------------------------------------
# To avoid passing this information on the command line, uncomment
# and configure accordingly
#
# spotify.user = user
# spotify.password = pass
# spotify.recover_lost_token = false (set to true to continue playback after
# the token has been [spuriously?] lost)
# spotify.allow_explicit_tracks = false (set to true to allow explicit tracks)
# spotify.preferred_bitrate = Three possible values: 96, 160, or 320 ; default: 320
spotify.userThe username of the Spotify Premium account. For older accounts, the username may be related to account email address (i.e. the email address without the @domain part). For newer accounts, the username is a random string of around 25 characters allocated by Spotify. This information is found in the
Account overviewsection on the Spotify website. https://www.spotify.com/us/account/overview .
Note
If you created your account through Facebook you will need to create a ‘device password’ to stream from Spotify using Tizonia. Note that the device password option is only available for Facebook-created accounts. Please read the Spotify documentation at http://www.spotify.com/account/set-device-password/.
Note
User names with a ‘+’ character will not work. There is a bug in Tizonia (https://github.com/tizonia/tizonia-openmax-il/issues/599) that prevents the use of ‘+’ characters in the user name field.
spotify.passwordPassword of the Premium account. If you created your account through Facebook you will need to create a ‘device password’ (see note above).
Note
Please do not allow ‘#’ or ‘$’ in the password. There is a bug in Tizonia (https://github.com/tizonia/tizonia-openmax-il/issues/599) that prevents this character in the password field.
spotify.recover_lost_tokenSet to
trueto allow Tizonia to resume playback and recover the token automatically when the playback token is lost. This can occur if for example, another device starts streaming using your account (e.g. listening to Spotify on an Echo device while Tizonia is already streaming on your computer). Optional (Default: false).spotify.allow_explicit_tracksSet to
trueto allow explicit tracks in Tizonia’s play queue. Otherwise, explicit tracks are removed from the queue before playback. Optional (Default: false).spotify.preferred_bitrateSelect the preferred bitrate while streaming from Spotify. Three possible values: 96, 160, or 320. Optional (Default: 320).
OPTIONS¶
--spotify-user argSpotify user name (not required if provided via config file).
--spotify-password argSpotify user password (not required if provided via config file).
--spotify-owner argThe owner of the playlist (this is optional: use in conjunction with –spotify-playlist or –spotify-playlist-id).
--spotify-recover-lost-tokenAllow Tizonia to recover the play token and keep playing after a spurious token loss (default: false).
--spotify-allow-explicit-tracksAllow Tizonia to play explicit tracks from Spotify (default: false).
--spotify-preferred-bitrate argPreferred Spotify bitrate (kbps) (320, 160 or 96; default: 320).
--spotify-tracks argSearch and play from Spotify by track name.
--spotify-artist argSearch and play from Spotify by artist name.
--spotify-album argSearch and play from Spotify by album name.
--spotify-playlist argSearch and play public playlists (owner is assumed the current user, unless –spotify-owner is provided).
--spotify-track-id argPlay from Spotify by track ID, URI or URL.
--spotify-artist-id argPlay from Spotify by artist ID, URI or URL.
--spotify-album-id argPlay from Spotify by album ID, URI or URL.
--spotify-playlist-id argPlay public playlists from Spotify by ID, URI or URL (owner is assumed the current user, unless –spotify-owner is provided).
--spotify-related-artists argSearch and play from Spotify the top songs from a selection of related artists.
--spotify-featured-playlist argSearch and play a featured playlist from Spotify.
--spotify-new-releases argSearch and play a newly released album from Spotify.
--spotify-recommendations-by-track-id argPlay Spotify recommendations by track ID, URI or URL
--spotify-recommendations-by-artist-id argPlay Spotify recommendations by artist ID, URI or URL.
--spotify-recommendations-by-track argPlay Spotify recommendations by track name.
--spotify-recommendations-by-artist argPlay Spotify recommendations by artist name.
--spotify-recommendations-by-genre argPlay Spotify recommendations by genre name.
--spotify-user-liked-tracksPlay the user’s liked tracks.
--spotify-user-recent-tracksPlay the user’s most recent tracks. See AUTHORIZATION SCOPES.
--spotify-user-top-tracksPlay the user’s top tracks. See AUTHORIZATION SCOPES.
--spotify-user-top-artistsPlay tracks from the user’s top artists. See AUTHORIZATION SCOPES.
--spotify-user-playlist argPlay tracks from the user’s playlist (including private playlists, Daily Mixes and Discover Weekly). See AUTHORIZATION SCOPES.
Note that Daily Mixes and Discover Weekly playlists need to be ‘liked’ beforehand in order to be found by a search performed on the user library.
AUTHORIZATION SCOPES¶
In order to access the user’s private playlists, the Spotify API uses authentication scopes. Scopes provide Spotify users using third-party apps the confidence that only the information they choose to share will be shared, and nothing more.
When Tizonia is run for the first time with any of the --spotify-user-...
options, the user is asked to input his/her credentials on a browser session.
A browser window or tab session will be created. Once the credentials have been input successfully, Tizonia receives an authentication token that is cached locally for future use. Once this process is completed, Tizonia can access the specific user’s private list(s) allowed by the scope.
~ tizonia --spotify-user-playlist "all out 90s"
This software is part of the Tizonia project <https://tizonia.org>
[Spotify] [Connecting] : 'username'.
[Spotify] [Playlist search] 'all out 90s' (owner: username).
[Spotify] [Authorization] Verifying if an authorization token exists for scope 'playlist-read-private'.
[Spotify] [Authorization] You may be asked to input your Spotify credentials on your browser to grant Tizonia access to your private playlists.
[Spotify] [Authorization] If a new browser session is not created, please manually copy this URL into your browser:
[Spotify] [Authorization] 'https://accounts.spotify.com/authorize?client_id=asd7asd7813782378asedhjdfjksd&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080&scope=playlist-read-private'.
Note
In some cases, a new browser window or tab fails to open automatically. If this is the case, Tizonia will wait. Open your browser and manually paste the URL displayed by Tizonia on the terminal and then follow the instructions.
EXAMPLES¶
$ tizonia --spotify-artist 'enya'
$ tizonia --spotify-album 'the greatest showman'
# Search and play a *public* playlist owned by the current user
$ tizonia --spotify-playlist 'Summer 2019'
# Search and play a *public* playlist owned by the specified user
$ tizonia --spotify-playlist 'Summer 2019' --spotify-owner 'bqmtzm68dmdyk2uyvrwma69y2'
# Globally search and play a *public* playlist on Spotify (Tizonia will play
# the best match in the list returned by the Spotify service)
$ tizonia --spotify-playlist 'best metal 2000s' --spotify-owner 'anyuser'
# Play recommended tracks by seeding the search with a specific track and artist
$ tizonia --spotify-recommendations-by-track 'Word up by cameo'
$ tizonia --spotify-recommendations-by-track 'Word up by Gun'
$ tizonia --spotify-recommendations-by-track 'Word up by Korn'
# Play recommended tracks by seeding the search with a specific artist
$ tizonia --spotify-recommendations-by-artist 'queen'
# Play recommended tracks by seeding the search with a specific Spotify track id/uri/url
$ tizonia --spotify-recommendations-by-track-id 3MrRksHupTVEQ7YbA0FsZK
$ tizonia --spotify-recommendations-by-track-id 'spotify:track:3MrRksHupTVEQ7YbA0FsZK'
$ tizonia --spotify-recommendations-by-track-id 'https://open.spotify.com/track/3MrRksHupTVEQ7YbA0FsZK'
# Play the user's Discover Weekly and Daily Mixes in the user's
# library. Note that these playlists must have been 'liked' beforehand
# on Spotify
$ tizonia --spotify-user-playlist "Discover Weekly"
$ tizonia --spotify-user-playlist "Daily Mix 1"
$ tizonia --spotify-user-playlist "Daily Mix 4"