add block spotify
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
Simon Vieille 2022-08-29 19:57:44 +02:00
parent c0652db038
commit 54f7d29d8a
Signed by: deblan
GPG key ID: 579388D585F70417
2 changed files with 63 additions and 0 deletions

View file

@ -9,6 +9,7 @@ Blocks compatible with [i3blocks](https://github.com/vivien/i3blocks).
* `tmux` for `app` and `date` blocks
* `df` for `du` block
* `xdg-open` for `du` block
* `playerctl` for `spotify` block
## Installation
@ -68,6 +69,12 @@ Show indicator of RSS.
rss <block_name> <feed_url> <feed_reader_url> <foreground_color_when_no_item> <foreground_color_when_items>
```
Show current song played (spotify).
```
spotify
```
Show volume.
```

56
blocks/spotify/main.go Normal file
View file

@ -0,0 +1,56 @@
package main
import (
"fmt"
r "gitnet.fr/deblan/i3-blocks-go/rendering"
"os"
"os/exec"
)
func GetMetadata(metadata string) string {
output, _ := exec.Command("playerctl", "-p", "spotify", "metadata", metadata).Output()
data := string(output)
if len(data) > 20 {
data = fmt.Sprintf("%s…", data[0:20])
}
return data
}
func GetTitle() string {
return GetMetadata("xesam:title")
}
func GetArtist() string {
return GetMetadata("xesam:artist")
}
func main() {
title := GetTitle()
artist := GetArtist()
if title == "" {
return
}
label := r.TextWithPadding(artist, r.FB{
Foreground: r.Color("grey1"),
Background: r.Color("black3"),
})
value := r.TextWithPadding(title, r.FB{
Foreground: r.Color("grey2"),
Background: r.Color("black1"),
})
if os.Getenv("BLOCK_BUTTON") == "1" {
exec.Command("i3-msg", `workspace "6. MEDIA"`).Output()
}
options := r.NewBlockOptions()
options.FullText = fmt.Sprintf("%s%s", label, value)
block := r.Block("spotify", options)
fmt.Println(block)
}