aboutsummaryrefslogtreecommitdiff
path: root/scripts/media_status.sh
blob: 850a0c5c6b25c97eef763781b5708c4874560e52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/bash
mpd_running=$(mpc | grep "\[playing\]")

if pgrep spotify &>/dev/null
then
    if type pacmd &>/dev/null
    then
        output=$(pacmd list-sink-inputs)
        state=""
        spotify_running=false

        while read -r line; do
            if [[ $line == *state* ]]
            then
                if [[ $line == *RUNNING* ]]
                then
                    state="RUNNING" 
                else
                    state=""
                fi
            fi

            if [[ $line == *application.name* ]]
            then
                if [[ $state == "RUNNING" ]] && [[ $line == *Spotify* ]]
                then
                    spotify_running=true
                    break
                fi
            fi
        done <<< "$output"
    elif lsof | grep /dev/snd | grep spotify &>/dev/null
    then
        spotify_running=true
    fi

    if $spotify_running && [[ $mpd_running != "" ]]
    then
        echo spotify and mpd running
    else
        metadata=$(dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata')

        if [[ $metadata == *"spotify:ad"* ]]
        then
            echo "Spotify: ad :/"
        else
            artist=$(echo "$metadata" | egrep -A 2 "artist" | egrep -v "artist" | egrep -v "array" | cut -b 27- | cut -d '"' -f 1 | egrep -v ^$)

            title=$(echo "$metadata" | egrep -A 1 "title" | egrep -v "title" | cut -b 44- | cut -d '"' -f 1| egrep -v ^$)

            if $spotify_running
            then
                pb_status="▶"
            else
                pb_status="▐▐"
            fi
            
            echo Spotify: $pb_status $artist - $title
        fi
    fi
elif pgrep mpd &>/dev/null
then
    if type mpc &>/dev/null
    then
        if [[ $mpd_running != "" ]]
        then
            pb_status="▶"
        else
            pb_status="▐▐"
        fi
        echo MPD: $pb_status $(mpc current)
    else
        echo "for mpd status mpc is needed"
    fi
else
    echo no music
fi