Script para monitorar as alterações no título da janela

3

O negócio é o seguinte: Eu uso o pacote lastfm para ouvir meu Last.FM (duh) ... E eu quero mostrar algumas notificações do not-osd quando uma nova música começar.

Desde que o programa não o suporte, eu quero criar um script de shell que monitore o título da janela do player lastfm e envie uma notificação quando ela for alterada.

O que você acha? Como posso começar?

    
por Thiago Belem 04.03.2011 / 16:40

2 respostas

4

Você pode verificar o título de uma janela aberta usando wmctrl :

$ wmctrl -lx | grep "last.fm.Last.fm" | grep -Po "(?<=$HOSTNAME ).*$"
Insomnium – Death Walked the Earth

Assistir ao título usando esse método exigiria, no entanto, que o script pesquisasse periodicamente as alterações, o que seria confuso e ineficiente.

Uma abordagem mais inteligente seria esperar por algum tipo de evento gerado pelo player da Last.fm. Uma interface D-Bus ou API semelhante seria ideal, mas não vejo nenhuma documentação sugerindo que exista. Como uma alternativa melhor, você pode tentar assistir a saída do terminal para obter informações sobre o que o player está fazendo:

#!/bin/bash

grabnextline=0
albumart="$(mktemp)"

while read line; do
    if [ $grabnextline = 1 ]; then
        title="$(echo "$line" | cut -d\" -f2)"
        wget -O "$albumart" "$(grep -A 10 "<title>$(echo "$title" | awk -F ' – ' '{print }')" ~/.local/share/Last.fm/Last.fm.log | grep -Eo "http://.*\.(jpg|png)" | sed 's/174s/64s/' | sed 's/jpg/png/')"
        notify-send "$title" --icon "$albumart"
        grabnextline=0
    fi
    if [[ "$line" = *ScrobblerManager::nowPlaying* ]]; then
        grabnextline=1
    fi
done < <( /usr/bin/lastfm 2>&1 )

rm "$albumart"

exit

Ainda é um hack feio, mas faz o trabalho.

    
por ændrük 04.03.2011 / 20:30
1

Qual jogador você usa para list.fm? Muitos aplicativos usam dbus para notificar eventos. Você precisaria pegá-los no script.

Assim como a próxima página tem um exemplo de como usar a mudança de música do Rhythmbox.

Trace a mudança de faixa do Rhythmbox usando dbus

    
por Amey Jah 04.03.2011 / 17:01