Visualizar capas de álbuns de músicas no MPD/MPC/NCMPCPP
Publicado por João Gabriel (última atualização em 03/02/2021)
[ Hits: 2.148 ]
O NCMPCPP é um cliente do MPD, interativo, e com uma interface muito boa. O NCMPCPP tem um problema, porém: não é possível ver a capa do álbum da música que você está escutando. Esse script usa o Ueberzug (um visualizador de imagens no terminal) para mostrar as imagens da capa do álbum da música que estiver tocando no momento.
Esse script é uma versão modificada de um script criado pelo GeorgeHJ no GitHub.
P.S.: esse script deve ser rodado por uma nova instância de um terminal, não diretamente, senão não vai funcionar!
P.S.: esse script depende de ffmpeg, mpd, mpc e ueberzug.
#!/usr/bin/bash
## All credits to GeorgeHJ on github, thank you!
## Requires mpd, mpc, ueberzug, bash, ffmpeg and diffutils
# This should be the root of mpd
musicDir="/home/goll/media/music"
tmpImgDir="/tmp/ncmpcpp-album"
# Default Dimensions
WIDTH=32
HEIGHT=32
X=0
Y=0
mkdir "$tmpImgDir"
mpdRunCheck() {
while true; do
mpc -q 2>/dev/null && break || sleep 2
done
}
updArt() {
oldFilename="$filename"
getCoverArt
}
getCoverArt() {
local curFile; local tmpImgFile #; local curDIr
curFile=$(mpc current -f "%file%")
[ -n "$curFile" ] && {
tmpImgFile=$(mktemp -p "$tmpImgDir" --suffix=.png)
ffmpeg -i "$musicDir/$curFile" "$tmpImgFile" -y
if ! cmp -s "$filename" "$tmpImgFile"; then
filename=$tmpImgFile
fi
find "$tmpImgDir" -name "tmp.*.png" 2>/dev/null | grep -v "$filename" | xargs -r rm
}
}
showArt() {
# shellcheck disable=2154
{ declare -Ap add_commnand=([action]="add" [identifier]="albumArt" [x]="$X" [y]="$Y" [width]="$WIDTH" [height]="$HEIGHT" [path]="$filename")
checkChanged
} | ueberzug layer --parser bash
}
checkChanged() {
while true; do
mpc idle player update >/dev/null
updArt
if ! cmp -s "$oldFilename" "$filename"; then
oldFilename="$filename" && break
fi
done
}
quit() {
# shellcheck disable=2154
{
declare -Ap remove_command=([action]="remove" [identifier]="albumArt")
} | ueberzug layer --parser bash
tput cnorm
find "$tmpImgDir" -name "tmp.*.png" -delete 2>/dev/null
exit 0
}
# Main
tput civis
trap quit SIGINT
while true; do
mpdRunCheck
updArt
clear
showArt
done 2>/dev/null
Script para geração de mala direta usando svg
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica
Conky não mostra temperaturas da CPU no notebook (0)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (0)









