diff options
| author | silly <u65487754@gmail.com> | 2026-03-31 00:54:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-31 00:54:48 +0200 |
| commit | 7371d8e93a6b136d14e13a03a1ca40521b5005d0 (patch) | |
| tree | c5ec4e99f337ddf61289ae51b9143e83cf643266 /.config | |
| parent | 9b0a0af8231d6ebb9ec6b6e13b36e7d87bd87ce3 (diff) | |
Update media.sh
Diffstat (limited to '.config')
| -rw-r--r-- | .config/scripts/media.sh | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/.config/scripts/media.sh b/.config/scripts/media.sh index a9c1acb..84c673b 100644 --- a/.config/scripts/media.sh +++ b/.config/scripts/media.sh @@ -1,10 +1,43 @@ #!/bin/bash -playerctl metadata --format '{{title}} - {{artist}}' --follow | while read -r line; do - if playerctl status >/dev/null 2>&1; then - art_url=$(playerctl metadata mpris:artUrl 2>/dev/null) - notify-send -i "$art_url" \ +prev_track="" + +while true; do + status=$(playerctl status 2>/dev/null | tr '[:upper:]' '[:lower:]') + + if [ "$status" = "playing" ]; then + title=$(playerctl metadata title 2>/dev/null | tr '[:upper:]' '[:lower:]') + artist=$(playerctl metadata artist 2>/dev/null | tr '[:upper:]' '[:lower:]') + track="${title}${artist}" + + if [ "$track" != "$prev_track" ] && [ -n "$title" ]; then + prev_track="$track" + player=$(playerctl metadata --format '{{playerName}}' 2>/dev/null | tr '[:upper:]' '[:lower:]') + player_label="${player} [hifi]" + art_url="" + for i in $(seq 1 10); do + art_url=$(playerctl metadata mpris:artUrl 2>/dev/null) + [ -n "$art_url" ] && break + sleep 0.2 + done + + if [ -n "$art_url" ]; then + ext="${art_url##*.}" + ext="${ext%%\?*}" + art_cache="/tmp/art.${ext}" + curl -sL --max-time 5 "$art_url" -o "$art_cache" + notify-send \ + -i "$art_cache" \ + -h string:x-canonical-private-synchronous:media \ + "${title} • ${artist}" \ + "$player_label" + else + notify-send \ + -i "audio-x-generic" \ -h string:x-canonical-private-synchronous:media \ - "playing" "$line" + "${title} • ${artist}" \ + "$player_label" + fi + fi fi done |
