Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/raitonoberu/sptlrx
Synchronized lyrics in your terminal
https://github.com/raitonoberu/sptlrx
lyrics mopidy mpd spotify spotifyd synced-lyrics terminal
Last synced: 5 days ago
JSON representation
Synchronized lyrics in your terminal
- Host: GitHub
- URL: https://github.com/raitonoberu/sptlrx
- Owner: raitonoberu
- License: mit
- Created: 2022-01-31T11:21:00.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-07-23T12:35:51.000Z (6 months ago)
- Last Synced: 2024-07-23T14:47:37.667Z (6 months ago)
- Topics: lyrics, mopidy, mpd, spotify, spotifyd, synced-lyrics, terminal
- Language: Go
- Homepage:
- Size: 390 KB
- Stars: 355
- Watchers: 4
- Forks: 15
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Features
- Compatible with Spotify, MPD, Mopidy, MPRIS and browsers.
- Works well with long lines & Unicode characters.
- Easy to customize.
- Allows piping to stdout.
- Single binary & cross-plaftorm.## Installation
**Linux**
- Arch Linux ([@BachoSeven](https://github.com/BachoSeven))
```
yay -S sptlrx-bin
```- NixOS ([@MoritzBoehme](https://github.com/MoritzBoehme))
```
nix-env -iA nixos.sptlrx
```or if using nixpkgs
```
nix-env -iA nixpkgs.sptlrx
```- Other
```
curl -sSL instl.sh/raitonoberu/sptlrx/linux | bash
```**Windows**
```
iwr instl.sh/raitonoberu/sptlrx/windows | iex
```**macOS**
```
curl -sSL instl.sh/raitonoberu/sptlrx/macos | bash
```You can also download the binary from the [Releases](https://github.com/raitonoberu/sptlrx/releases/latest) page or [build it yourself](./building.md).
## Configuration
Config file will be created at the first launch. On Linux it's located in `~/.config/sptlrx/config.yaml`. Run `sptlrx -h` to see the full path.
Show config contents (with descriptions)
```yaml
### Global settings ###
# Your Spotify cookie. Only needed if you are going to use Spotify as a player.
cookie: ""
# Player that will be used. Possible values: spotify, mpd, mopidy, mpris.
player: spotify
# Host of lyrics API to be used in case the cookie is not provided.
host: lyricsapi.vercel.app
# Whether to ignore errors instead of showing them.
ignoreErrors: true
# Interval of the internal timer. Determines how often the terminal will be updated.
timerInterval: 200
# Interval for checking the position. Doesn't really affect the precision.
updateInterval: 2000### Style settings ###
style:
# Horizontal alignment of lines. Possible values: left, center, right.
hAlignment: center
# Style of the lines before the current one.
before:
# The colors can be either in HEX format, or ANSI 0-255.
background: ""
foreground: ""
bold: true
italic: false
underline: false
strikethrough: false
blink: false
faint: false
# Style of the current line.
current:
# The colors can be either in HEX format, or ANSI 0-255.
background: ""
foreground: ""
bold: true
italic: false
underline: false
strikethrough: false
blink: false
faint: false
# Style of the lines after the current one.
after:
# The colors can be either in HEX format, or ANSI 0-255.
background: ""
foreground: ""
bold: false
italic: false
underline: false
strikethrough: false
blink: false
faint: true### Pipe settings ###
pipe:
# Maximum line length. 0 - unlimited.
length: 0
# How to handle overflowing strings. Possible values: word, none, ellipsis.
overflow: word### MPD settings ###
mpd:
# MPD server address with port.
address: 127.0.0.1:6600
# MPD server password (if any).
password: ""### Mopidy settings ###
mopidy:
# Mopidy server address with port.
address: 127.0.0.1:6680### MPRIS settings ###
mpris:
# Whitelist of MPRIS players. First available is used if empty.
players: []### Browser extension settings ###
browser:
# Port on which the server will be started.
port: 8974### Local lyrics source ###
local:
# Folder for scanning .lrc files. Example: "~/Music".
folder: ""
```### Spotify
```yaml
# config.yaml
cookie:
player: spotify
```If you want to use Spotify as your player or lyrics source, you need to specify your cookie.
1. Open your browser.
2. Press F12, open the `Network` tab and go to [open.spotify.com](https://open.spotify.com/).
3. Click on the first request to `open.spotify.com`.
4. Scroll down to the `Request Headers`, right click the `cookie` field and select `Copy value`.
5. Paste it to your config.You can also set the `SPOTIFY_COOKIE` environment variable or pass the `--cookie` flag.
**TREAT YOUR COOKIE LIKE A PASSWORD AND NEVER SHARE IT**
### MPD
```yaml
# config.yaml
player: mpd
mpd:
address: 127.0.0.1:6600
password: ""
```MPD server will be used as a player.
### Mopidy
```yaml
# config.yaml
player: mopidy
mopidy:
address: 127.0.0.1:6680
```Mopidy server will be used as a player.
### MPRIS
```yaml
# config.yaml
player: mpris
mpris:
players: []
```Linux only. System player that supports MPRIS protocol will be used. You can also specify a whitelist of players to use, example: `players: [rhythmbox, spotifyd, ncspot]`. Run `playerctl -l` to get the names.
### Browser
```yaml
# config.yaml
player: browser
browser:
port: 8974
```You need to install a [browser extension](https://wnp.keifufu.dev/extension/getting-started). If you don't change the default port, no further configuration is required. Otherwise, create a custom adapter in the extension settings. **You can only run one instance on one port.**
### Local
```yaml
# config.yaml
local:
folder: ""
```If you want to use your local collection of `.lrc` files to display lyrics, specify the folder to scan. The application will use files with the most similar name. All other lyrics sources will be disabled.
## Information
### Source
If you specify your Spotify cookie, the lyrics will be fetched using your account. Otherwise, the API [hosted by me](https://github.com/raitonoberu/lyricsapi) will be used. It is also possible to host your own API or use local `.lrc` files.
### Piping
Run `sptlrx pipe` to start printing the current lines to stdout. This can be used in various status bars and other applications.
### Flags
You can pass flags to override the style parameters defined in the config. Example:
```sh
sptlrx --current "bold,#FFDFD3,#957DAD" --before "104,faint,italic" --after "104,faint"
```List of allowed styles: `bold`, `italic`, `underline`, `strikethrough`, `blink`, `faint`. The colors can be either in HEX format, or ANSI 0-255. The first color represents the foreground, the second represents the background.
Run `sptlrx --help` to see all the flags.
## License
**MIT License**, see [LICENSE](./LICENSE) for additional information.