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.145 ]
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
Instalação de servidor Squid rápido e fácil
Script para automatizar instalação do Gentoo
Solução para bloquear totalmente o Facebook em sua rede
Script Para Manutenção de usuários do Sistema
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Instalar Dual Boot, Linux+Windows. (6)
Conky, alerta de temperatura alta (17)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









